diff options
| author | Paolo Bonzini <pbonzini@redhat.com> | 2025-05-23 18:37:55 +0200 |
|---|---|---|
| committer | Paolo Bonzini <pbonzini@redhat.com> | 2025-06-06 14:32:54 +0200 |
| commit | 4d2fec89cb8651ee760ff9296c8d3e2ade4cc063 (patch) | |
| tree | 4eb3875ba1b34a4e28a3ba252967b25631059f59 /rust/hw/timer/hpet/src/device.rs | |
| parent | 14b5a799339d2d21826eac5ab1e98d00b1f1f89f (diff) | |
| download | focaccia-qemu-4d2fec89cb8651ee760ff9296c8d3e2ade4cc063.tar.gz focaccia-qemu-4d2fec89cb8651ee760ff9296c8d3e2ade4cc063.zip | |
rust/hpet: return errors from realize if properties are incorrect
Match the code in hpet.c; this also allows removing the BqlCell from the num_timers field. Reviewed-by: Zhao Liu <zhao1.liu@intel.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'rust/hw/timer/hpet/src/device.rs')
| -rw-r--r-- | rust/hw/timer/hpet/src/device.rs | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/device.rs index a957de1e76..cd439f90b7 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -725,18 +725,16 @@ impl HPETState { } fn realize(&self) -> qemu_api::Result<()> { + if self.num_timers.get() < HPET_MIN_TIMERS || self.num_timers.get() > HPET_MAX_TIMERS { + Err(format!( + "hpet.num_timers must be between {HPET_MIN_TIMERS} and {HPET_MAX_TIMERS}" + ))?; + } if self.int_route_cap == 0 { - // TODO: Add error binding: warn_report() - println!("Hpet's hpet-intcap property not initialized"); + Err("hpet.hpet-intcap property not initialized")?; } - self.hpet_id.set(HPETFwConfig::assign_hpet_id()); - - if self.num_timers.get() < HPET_MIN_TIMERS { - self.num_timers.set(HPET_MIN_TIMERS); - } else if self.num_timers.get() > HPET_MAX_TIMERS { - self.num_timers.set(HPET_MAX_TIMERS); - } + self.hpet_id.set(HPETFwConfig::assign_hpet_id()?); self.init_timer(); // 64-bit General Capabilities and ID Register; LegacyReplacementRoute. |