mirror of
https://github.com/qemu/qemu.git
synced 2025-08-02 12:45:00 +00:00
hpet: return errors from realize if properties are incorrect
Do not silently adjust num_timers, and fail if intcap is 0. Reviewed-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Zhao Liu <zhao1.liu@intel.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
6e85cfe44c
commit
14b5a79933
@ -691,8 +691,14 @@ static void hpet_realize(DeviceState *dev, Error **errp)
|
||||
int i;
|
||||
HPETTimer *timer;
|
||||
|
||||
if (s->num_timers < HPET_MIN_TIMERS || s->num_timers > HPET_MAX_TIMERS) {
|
||||
error_setg(errp, "hpet.num_timers must be between %d and %d",
|
||||
HPET_MIN_TIMERS, HPET_MAX_TIMERS);
|
||||
return;
|
||||
}
|
||||
if (!s->intcap) {
|
||||
warn_report("Hpet's intcap not initialized");
|
||||
error_setg(errp, "hpet.hpet-intcap not initialized");
|
||||
return;
|
||||
}
|
||||
if (hpet_fw_cfg.count == UINT8_MAX) {
|
||||
/* first instance */
|
||||
@ -700,7 +706,7 @@ static void hpet_realize(DeviceState *dev, Error **errp)
|
||||
}
|
||||
|
||||
if (hpet_fw_cfg.count == 8) {
|
||||
error_setg(errp, "Only 8 instances of HPET is allowed");
|
||||
error_setg(errp, "Only 8 instances of HPET are allowed");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -710,11 +716,6 @@ static void hpet_realize(DeviceState *dev, Error **errp)
|
||||
sysbus_init_irq(sbd, &s->irqs[i]);
|
||||
}
|
||||
|
||||
if (s->num_timers < HPET_MIN_TIMERS) {
|
||||
s->num_timers = HPET_MIN_TIMERS;
|
||||
} else if (s->num_timers > HPET_MAX_TIMERS) {
|
||||
s->num_timers = HPET_MAX_TIMERS;
|
||||
}
|
||||
for (i = 0; i < HPET_MAX_TIMERS; i++) {
|
||||
timer = &s->timer[i];
|
||||
timer->qemu_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, hpet_timer, timer);
|
||||
|
Loading…
Reference in New Issue
Block a user