VirtIO-drivers-rs
VirtIO guest drivers in Rust. For no_std environment.
Support status
Device types
Device |
Supported |
Block |
✅ |
Net |
✅ |
GPU |
✅ |
Input |
✅ |
Console |
✅ |
Socket |
✅ |
Sound |
✅ |
... |
❌ |
Transports
Transport |
Supported |
|
Legacy MMIO |
✅ |
version 1 |
MMIO |
✅ |
version 2 |
PCI |
✅ |
Memory-mapped CAM only, e.g. aarch64 or PCIe ECAM |
Device-independent features
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 |
Examples & Tests
cd examples/x86_64
make qemu
cd examples/aarch64
make qemu
cd examples/riscv
make qemu
You will see device info & GUI Window in qemu.