summary refs log tree commit diff
path: root/x86_64/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'x86_64/src/lib.rs')
-rw-r--r--x86_64/src/lib.rs11
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,