VirtIO guest drivers in Rust. For no_std environment.
| Device | Supported |
|---|---|
| Block | ✅ |
| Net | ✅ |
| GPU | ✅ |
| Input | ✅ |
| Console | ✅ |
| Socket | ✅ |
| Sound | ✅ |
| RNG | ✅ |
| 9P | ✅ |
| ... | ❌ |
| Transport | Supported | |
|---|---|---|
| Legacy MMIO | ✅ | version 1 |
| MMIO | ✅ | version 2 |
| PCI | ✅ | Memory-mapped CAM only, e.g. aarch64 or PCIe ECAM |
| Feature flag | Supported | |
|---|---|---|
VIRTIO_F_INDIRECT_DESC |
✅ | Indirect descriptors |
VIRTIO_F_EVENT_IDX |
✅ | avail_event and used_event fields |
VIRTIO_F_VERSION_1 |
TODO | VirtIO version 1 compliance |
VIRTIO_F_ACCESS_PLATFORM |
✅ | Limited device access to memory |
VIRTIO_F_RING_PACKED |
❌ | Packed virtqueue layout |
VIRTIO_F_IN_ORDER |
❌ | Optimisations for in-order buffer usage |
VIRTIO_F_ORDER_PLATFORM |
❌ | Platform ordering for memory access |
VIRTIO_F_SR_IOV |
❌ | Single root I/O virtualization |
VIRTIO_F_NOTIFICATION_DATA |
❌ | Extra data in device notifications |
cd examples/x86_64
make qemu # plain 2D virtio-gpu; the virgl 3D tests are skipped
make qemu gl=on # GL-capable virtio-gpu; runs the virgl 3D & blob testsgl=on attaches a virtio-gpu-gl-pci device (with blob=on) and needs a QEMU built
with virglrenderer/OpenGL support. Without it the 3D tests are skipped at runtime
(has_virgl() is false), so hosts without GL are unaffected.
cd examples/aarch64
make qemucd examples/riscv
make qemucd examples/hexagon
make qemuYou will see device info & GUI Window in qemu.
