diff options
Diffstat (limited to 'aarch64/src/lib.rs')
-rw-r--r-- | aarch64/src/lib.rs | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/aarch64/src/lib.rs b/aarch64/src/lib.rs index 13855a6..f8a36b9 100644 --- a/aarch64/src/lib.rs +++ b/aarch64/src/lib.rs @@ -21,6 +21,7 @@ use remain::sorted; use resources::SystemAllocator; use sync::Mutex; use sys_util::{EventFd, GuestAddress, GuestMemory, GuestMemoryError}; +use vm_control::VmIrqRequestSocket; use kvm::*; use kvm_sys::kvm_device_attr; @@ -195,6 +196,7 @@ impl arch::LinuxArch for AArch64 { fn build_vm<F, E>( mut components: VmComponents, _split_irqchip: bool, + _ioapic_device_socket: VmIrqRequestSocket, serial_parameters: &BTreeMap<u8, SerialParameters>, serial_jail: Option<Minijail>, create_devices: F, @@ -237,11 +239,20 @@ impl arch::LinuxArch for AArch64 { let exit_evt = EventFd::new().map_err(Error::CreateEventFd)?; + // Event used by PMDevice to notify crosvm that + // guest OS is trying to suspend. + let suspend_evt = EventFd::new().map_err(Error::CreateEventFd)?; + let pci_devices = create_devices(&mem, &mut vm, &mut resources, &exit_evt) .map_err(|e| Error::CreateDevices(Box::new(e)))?; - let (pci, pci_irqs, pid_debug_label_map) = - arch::generate_pci_root(pci_devices, &mut mmio_bus, &mut resources, &mut vm) - .map_err(Error::CreatePciRoot)?; + let (pci, pci_irqs, pid_debug_label_map) = arch::generate_pci_root( + pci_devices, + &mut None, + &mut mmio_bus, + &mut resources, + &mut vm, + ) + .map_err(Error::CreatePciRoot)?; let pci_bus = Arc::new(Mutex::new(PciConfigMmio::new(pci))); // ARM doesn't really use the io bus like x86, so just create an empty bus. @@ -310,9 +321,12 @@ impl arch::LinuxArch for AArch64 { vcpus, vcpu_affinity, irq_chip, + split_irqchip: None, + gsi_relay: None, io_bus, mmio_bus, pid_debug_label_map, + suspend_evt, }) } } |