mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2026-08-05 02:19:16 +00:00
devices: vmm: Add ACPI PM timer
This is a counter exposed via an I/O port that runs at 3.579545MHz. Here we use a hardcoded I/O and expose the details through the FADT table. TEST=Boot Linux kernel and see the following in dmesg: [ 0.506198] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns Signed-off-by: Rob Bradford <robert.bradford@intel.com>
This commit is contained in:
@@ -1224,6 +1224,24 @@ impl DeviceManager {
|
||||
.io_bus
|
||||
.insert(ged_device.clone(), 0xb000, 0x1)
|
||||
.map_err(DeviceManagerError::BusError)?;
|
||||
|
||||
let pm_timer_device = Arc::new(Mutex::new(devices::AcpiPMTimerDevice::new()));
|
||||
|
||||
self.bus_devices
|
||||
.push(Arc::clone(&pm_timer_device) as Arc<Mutex<dyn BusDevice>>);
|
||||
|
||||
self.address_manager
|
||||
.allocator
|
||||
.lock()
|
||||
.unwrap()
|
||||
.allocate_io_addresses(Some(GuestAddress(0xb008)), 0x4, None)
|
||||
.ok_or(DeviceManagerError::AllocateIOPort)?;
|
||||
|
||||
self.address_manager
|
||||
.io_bus
|
||||
.insert(pm_timer_device, 0xb008, 0x4)
|
||||
.map_err(DeviceManagerError::BusError)?;
|
||||
|
||||
Ok(Some(ged_device))
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user