summary refs log tree commit diff
path: root/src/hw/virtio/mod.rs
diff options
context:
space:
mode:
authorZach Reizner <zachr@google.com>2017-05-04 14:56:51 -0700
committerchrome-bot <chrome-bot@chromium.org>2017-06-01 23:49:24 -0700
commit7e33f619c4f4e6addc757867bad3d109fb0549ee (patch)
treecb53321f26dc8e1f9d5ba94693bf3ae3d3e21c47 /src/hw/virtio/mod.rs
parentf61e803c486564039580c14b0789a7013946087b (diff)
downloadcrosvm-7e33f619c4f4e6addc757867bad3d109fb0549ee.tar
crosvm-7e33f619c4f4e6addc757867bad3d109fb0549ee.tar.gz
crosvm-7e33f619c4f4e6addc757867bad3d109fb0549ee.tar.bz2
crosvm-7e33f619c4f4e6addc757867bad3d109fb0549ee.tar.lz
crosvm-7e33f619c4f4e6addc757867bad3d109fb0549ee.tar.xz
crosvm-7e33f619c4f4e6addc757867bad3d109fb0549ee.tar.zst
crosvm-7e33f619c4f4e6addc757867bad3d109fb0549ee.zip
crosvm: add virtio MMIO transport module
The MMIO transport, along with PCI, is a standard transport for
discovering and configuring virtio devices and their associated queues.
MMIO is by far easier and simpler and so gets implemented first.

BUG=None
TEST=None

Change-Id: Icdaa02284aedf8ec726199784da45d22c8dbab87
Reviewed-on: https://chromium-review.googlesource.com/514687
Commit-Ready: Zach Reizner <zachr@chromium.org>
Tested-by: Zach Reizner <zachr@chromium.org>
Reviewed-by: Dylan Reid <dgreid@chromium.org>
Diffstat (limited to 'src/hw/virtio/mod.rs')
-rw-r--r--src/hw/virtio/mod.rs16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/hw/virtio/mod.rs b/src/hw/virtio/mod.rs
index 51af2b3..cfb22e3 100644
--- a/src/hw/virtio/mod.rs
+++ b/src/hw/virtio/mod.rs
@@ -5,5 +5,21 @@
 //! Implements virtio devices, queues, and transport mechanisms.
 
 mod queue;
+mod mmio;
 
 pub use self::queue::*;
+pub use self::mmio::*;
+
+const DEVICE_ACKNOWLEDGE: u32 = 0x01;
+const DEVICE_DRIVER: u32 = 0x02;
+const DEVICE_DRIVER_OK: u32 = 0x04;
+const DEVICE_FEATURES_OK: u32 = 0x08;
+const DEVICE_FAILED: u32 = 0x80;
+
+const TYPE_BLOCK: u32 = 2;
+
+const INTERRUPT_STATUS_USED_RING: u32 = 0x1;
+
+/// Offset from the base MMIO address of a virtio device used by the guest to notify the device of
+/// queue events.
+pub const NOITFY_REG_OFFSET: u32 = 0x50;