summary refs log tree commit diff
path: root/arch/src/lib.rs
diff options
context:
space:
mode:
authorDaniel Verkamp <dverkamp@chromium.org>2018-10-15 14:32:30 -0700
committerchrome-bot <chrome-bot@chromium.org>2018-10-31 21:59:16 -0700
commit402d53bba8f92794e322e1497115eb2d15b635df (patch)
tree94dfe641cd87d410b67cf374829826c6cfc31137 /arch/src/lib.rs
parent5656c124af2bb956dba19e409a269ca588c685e3 (diff)
downloadcrosvm-402d53bba8f92794e322e1497115eb2d15b635df.tar
crosvm-402d53bba8f92794e322e1497115eb2d15b635df.tar.gz
crosvm-402d53bba8f92794e322e1497115eb2d15b635df.tar.bz2
crosvm-402d53bba8f92794e322e1497115eb2d15b635df.tar.lz
crosvm-402d53bba8f92794e322e1497115eb2d15b635df.tar.xz
crosvm-402d53bba8f92794e322e1497115eb2d15b635df.tar.zst
crosvm-402d53bba8f92794e322e1497115eb2d15b635df.zip
devices: virtio: remove virtio MMIO transport
All devices have been converted to PCI, so we don't need MmioDevice.

BUG=chromium:854766
TEST=Boot crosvm on kevin and verify virtio devices still work

Change-Id: Ib6400e15bdb2153d14795de3cb0bfbf1845a8891
Signed-off-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1281832
Reviewed-by: Dylan Reid <dgreid@chromium.org>
Diffstat (limited to 'arch/src/lib.rs')
-rw-r--r--arch/src/lib.rs65
1 files changed, 2 insertions, 63 deletions
diff --git a/arch/src/lib.rs b/arch/src/lib.rs
index 455bd0e..bd061fd 100644
--- a/arch/src/lib.rs
+++ b/arch/src/lib.rs
@@ -12,7 +12,7 @@ extern crate sys_util;
 
 use std::fmt;
 use std::fs::File;
-use std::os::unix::io::{AsRawFd, RawFd};
+use std::os::unix::io::AsRawFd;
 use std::result;
 use std::sync::{Arc, Mutex};
 
@@ -22,7 +22,7 @@ use devices::{
     Serial,
 };
 use io_jail::Minijail;
-use kvm::{Datamatch, IoeventAddress, Kvm, Vcpu, Vm};
+use kvm::{IoeventAddress, Kvm, Vcpu, Vm};
 use resources::SystemAllocator;
 use sys_util::{syslog, EventFd, GuestMemory};
 
@@ -192,64 +192,3 @@ pub fn generate_pci_root(
     }
     Ok((root, pci_irqs))
 }
-
-/// Register a device to be used via MMIO transport.
-pub fn register_mmio(
-    bus: &mut devices::Bus,
-    vm: &mut Vm,
-    device: Box<devices::virtio::VirtioDevice>,
-    jail: Option<Minijail>,
-    resources: &mut SystemAllocator,
-    cmdline: &mut kernel_cmdline::Cmdline,
-) -> std::result::Result<(), DeviceRegistrationError> {
-    let irq = match resources.allocate_irq() {
-        None => return Err(DeviceRegistrationError::IrqsExhausted),
-        Some(i) => i,
-    };
-
-    // List of FDs to keep open in the child after it forks.
-    let mut keep_fds: Vec<RawFd> = device.keep_fds();
-    syslog::push_fds(&mut keep_fds);
-
-    let mmio_device = devices::virtio::MmioDevice::new((*vm.get_memory()).clone(), device)
-        .map_err(DeviceRegistrationError::CreateMmioDevice)?;
-    let mmio_len = 0x1000; // TODO(dgreid) - configurable per arch?
-    let mmio_base = resources
-        .allocate_mmio_addresses(mmio_len)
-        .ok_or(DeviceRegistrationError::AddrsExhausted)?;
-    for (i, queue_evt) in mmio_device.queue_evts().iter().enumerate() {
-        let io_addr = IoeventAddress::Mmio(mmio_base + devices::virtio::NOTIFY_REG_OFFSET as u64);
-        vm.register_ioevent(&queue_evt, io_addr, Datamatch::U32(Some(i as u32)))
-            .map_err(DeviceRegistrationError::RegisterIoevent)?;
-        keep_fds.push(queue_evt.as_raw_fd());
-    }
-
-    if let Some(interrupt_evt) = mmio_device.interrupt_evt() {
-        vm.register_irqfd(&interrupt_evt, irq)
-            .map_err(DeviceRegistrationError::RegisterIrqfd)?;
-        keep_fds.push(interrupt_evt.as_raw_fd());
-    }
-
-    if let Some(jail) = jail {
-        let proxy_dev = devices::ProxyDevice::new(mmio_device, &jail, keep_fds)
-            .map_err(DeviceRegistrationError::ProxyDeviceCreation)?;
-
-        bus.insert(Arc::new(Mutex::new(proxy_dev)), mmio_base, mmio_len, false)
-            .unwrap();
-    } else {
-        bus.insert(
-            Arc::new(Mutex::new(mmio_device)),
-            mmio_base,
-            mmio_len,
-            false,
-        ).unwrap();
-    }
-
-    cmdline
-        .insert(
-            "virtio_mmio.device",
-            &format!("4K@0x{:08x}:{}", mmio_base, irq),
-        ).map_err(DeviceRegistrationError::Cmdline)?;
-
-    Ok(())
-}