mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-01 14:53:54 -06:00
rust: hpet: do not access fields of SysBusDevice
Fields of SysBusDevice must only be accessed with the BQL taken. Add a wrapper that verifies that. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
fc22d650d5
commit
09fda8f5dc
2 changed files with 13 additions and 3 deletions
|
@ -730,8 +730,6 @@ impl HPETState {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn reset_hold(&self, _type: ResetType) {
|
fn reset_hold(&self, _type: ResetType) {
|
||||||
let sbd = self.upcast::<SysBusDevice>();
|
|
||||||
|
|
||||||
for timer in self.timers.iter().take(self.num_timers.get()) {
|
for timer in self.timers.iter().take(self.num_timers.get()) {
|
||||||
timer.borrow_mut().reset();
|
timer.borrow_mut().reset();
|
||||||
}
|
}
|
||||||
|
@ -744,7 +742,7 @@ impl HPETState {
|
||||||
HPETFwConfig::update_hpet_cfg(
|
HPETFwConfig::update_hpet_cfg(
|
||||||
self.hpet_id.get(),
|
self.hpet_id.get(),
|
||||||
self.capability.get() as u32,
|
self.capability.get() as u32,
|
||||||
sbd.mmio[0].addr,
|
self.mmio_addr(0).unwrap(),
|
||||||
);
|
);
|
||||||
|
|
||||||
// to document that the RTC lowers its output on reset as well
|
// to document that the RTC lowers its output on reset as well
|
||||||
|
|
|
@ -64,6 +64,18 @@ where
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: do we want a type like GuestAddress here?
|
||||||
|
fn mmio_addr(&self, id: u32) -> Option<u64> {
|
||||||
|
assert!(bql_locked());
|
||||||
|
let sbd = self.upcast();
|
||||||
|
let id: usize = id.try_into().unwrap();
|
||||||
|
if sbd.mmio[id].memory.is_null() {
|
||||||
|
None
|
||||||
|
} else {
|
||||||
|
Some(sbd.mmio[id].addr)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: do we want a type like GuestAddress here?
|
// TODO: do we want a type like GuestAddress here?
|
||||||
fn mmio_map(&self, id: u32, addr: u64) {
|
fn mmio_map(&self, id: u32, addr: u64) {
|
||||||
assert!(bql_locked());
|
assert!(bql_locked());
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue