diff options
Diffstat (limited to 'x86_64/src/lib.rs')
-rw-r--r-- | x86_64/src/lib.rs | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/x86_64/src/lib.rs b/x86_64/src/lib.rs index 3aff53d..7c136ec 100644 --- a/x86_64/src/lib.rs +++ b/x86_64/src/lib.rs @@ -57,8 +57,8 @@ use crate::bootparam::boot_params; use acpi_tables::aml::Aml; use acpi_tables::sdt::SDT; use arch::{ - get_serial_cmdline, GetSerialCmdlineError, RunnableLinuxVm, SerialHardware, SerialParameters, - VmComponents, VmImage, + get_serial_cmdline, jail_servers, GetSerialCmdlineError, RunnableLinuxVm, SerialHardware, + SerialParameters, ServerStub, VmComponents, VmImage, }; use devices::split_irqchip_common::GsiRelay; use devices::{ @@ -97,6 +97,7 @@ pub enum Error { E820Configuration, EnableSplitIrqchip(sys_util::Error), GetSerialCmdline(GetSerialCmdlineError), + JailServers(servers::ProxyError), KernelOffsetPastEnd, LoadBios(io::Error), LoadBzImage(bzimage::Error), @@ -148,6 +149,7 @@ impl Display for Error { E820Configuration => write!(f, "invalid e820 setup params"), EnableSplitIrqchip(e) => write!(f, "failed to enable split irqchip: {}", e), GetSerialCmdline(e) => write!(f, "failed to get serial cmdline: {}", e), + JailServers(e) => write!(f, "failed to jail servers: {}", e), KernelOffsetPastEnd => write!(f, "the kernel extends past the end of RAM"), LoadBios(e) => write!(f, "error loading bios: {}", e), LoadBzImage(e) => write!(f, "error loading kernel bzImage: {}", e), @@ -347,6 +349,7 @@ impl arch::LinuxArch for X8664arch { ioapic_device_socket: VmIrqRequestSocket, serial_parameters: &BTreeMap<(SerialHardware, u8), SerialParameters>, serial_jail: Option<Minijail>, + servers: Vec<ServerStub>, create_devices: F, ) -> Result<RunnableLinuxVm> where @@ -408,6 +411,9 @@ impl arch::LinuxArch for X8664arch { } else { (None, None) }; + + let servers = jail_servers(servers).map_err(Error::JailServers)?; + let pci_devices = create_devices(&mem, mem_params, &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( @@ -532,6 +538,7 @@ impl arch::LinuxArch for X8664arch { irq_chip, split_irqchip, gsi_relay, + servers, io_bus, mmio_bus, pid_debug_label_map, |