diff options
author | Daniel Verkamp <dverkamp@chromium.org> | 2018-10-03 13:22:59 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-10-04 00:37:22 -0700 |
commit | c8986f14a8dd9f256d6faed55996d955b50ff923 (patch) | |
tree | ce84d117a3d5e902a57a01ffb1ca553031d0c844 /src | |
parent | d635acbaf348c0863bc05b8f889b2fa5f8156aaa (diff) | |
download | crosvm-c8986f14a8dd9f256d6faed55996d955b50ff923.tar crosvm-c8986f14a8dd9f256d6faed55996d955b50ff923.tar.gz crosvm-c8986f14a8dd9f256d6faed55996d955b50ff923.tar.bz2 crosvm-c8986f14a8dd9f256d6faed55996d955b50ff923.tar.lz crosvm-c8986f14a8dd9f256d6faed55996d955b50ff923.tar.xz crosvm-c8986f14a8dd9f256d6faed55996d955b50ff923.tar.zst crosvm-c8986f14a8dd9f256d6faed55996d955b50ff923.zip |
Revert "linux: Convert all virtio devices to PCI"
This reverts commit d635acbaf348c0863bc05b8f889b2fa5f8156aaa. This commit seems to be responsible for introducing hung tasks in tests, so let's revert it for now to get the tests green and debug it offline. BUG=chromium:891806 TEST=None Change-Id: I83504058baeae00909d9fb4f4bb704a144a0dfaf Signed-off-by: Daniel Verkamp <dverkamp@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1259408 Reviewed-by: Dylan Reid <dgreid@chromium.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/linux.rs | 35 |
1 files changed, 11 insertions, 24 deletions
diff --git a/src/linux.rs b/src/linux.rs index e608b22..1496998 100644 --- a/src/linux.rs +++ b/src/linux.rs @@ -25,7 +25,7 @@ use rand::thread_rng; use rand::distributions::{IndependentSample, Range}; use byteorder::{ByteOrder, LittleEndian}; -use devices::{self, PciDevice, VirtioPciDevice}; +use devices::{self, PciDevice}; use io_jail::{self, Minijail}; use kvm::*; use net_util::Tap; @@ -92,7 +92,6 @@ pub enum Error { TimerFd(sys_util::Error), VhostNetDeviceNew(devices::virtio::vhost::Error), VhostVsockDeviceNew(devices::virtio::vhost::Error), - VirtioPciDev(sys_util::Error), WaylandDeviceNew(sys_util::Error), LoadKernel(Box<error::Error>), } @@ -168,7 +167,6 @@ impl fmt::Display for Error { &Error::VhostVsockDeviceNew(ref e) => { write!(f, "failed to set up virtual socket device: {:?}", e) } - &Error::VirtioPciDev(ref e) => write!(f, "failed to create virtio pci dev: {}", e), &Error::WaylandDeviceNew(ref e) => { write!(f, "failed to create wayland device: {:?}", e) } @@ -236,13 +234,12 @@ fn create_base_minijail(root: &Path, seccomp_policy: &Path) -> Result<Minijail> Ok(j) } -fn create_virtio_devs( - cfg: VirtIoDeviceInfo, - mem: &GuestMemory, - _exit_evt: &EventFd, - wayland_device_socket: UnixDatagram, - balloon_device_socket: UnixDatagram, -) -> std::result::Result<Vec<(Box<PciDevice + 'static>, Minijail)>, Box<error::Error>> { +fn create_virtio_devs(cfg: VirtIoDeviceInfo, + mem: &GuestMemory, + _exit_evt: &EventFd, + wayland_device_socket: UnixDatagram, + balloon_device_socket: UnixDatagram) + -> std::result::Result<Vec<VirtioDeviceStub>, Box<error::Error>> { static DEFAULT_PIVOT_ROOT: &'static str = "/var/empty"; let mut devs = Vec::new(); @@ -581,20 +578,7 @@ fn create_virtio_devs( devs.push(VirtioDeviceStub {dev: p9_box, jail}); } - let mut pci_devices: Vec<(Box<PciDevice + 'static>, Minijail)> = Vec::new(); - for stub in devs { - let pci_dev = - Box::new(VirtioPciDevice::new((*mem).clone(), stub.dev).map_err(Error::VirtioPciDev)?); - - // TODO(dverkamp): Make this work in non-multiprocess mode without creating an empty jail - let jail = match stub.jail { - Some(j) => j, - None => Minijail::new().unwrap(), - }; - pci_devices.push((pci_dev, jail)); - } - - Ok(pci_devices) + Ok(devs) } fn setup_vcpu_signal_handler() -> Result<()> { @@ -711,12 +695,15 @@ pub fn run_config(cfg: Config) -> Result<()> { info!("crosvm entering multiprocess mode"); } + let pci_devices: Vec<(Box<PciDevice + 'static>, Minijail)> = Vec::new(); + // Masking signals is inherently dangerous, since this can persist across clones/execs. Do this // before any jailed devices have been spawned, so that we can catch any of them that fail very // quickly. let sigchld_fd = SignalFd::new(libc::SIGCHLD).map_err(Error::CreateSignalFd)?; let components = VmComponents { + pci_devices, memory_mb: (cfg.memory.unwrap_or(256) << 20) as u64, vcpu_count: cfg.vcpu_count.unwrap_or(1), kernel_image: File::open(cfg.kernel_path.as_path()) |