VirtIO-drivers-rs

VirtIO guest drivers in Rust. For no_std environment.
Support status
Device types
| Device |
Supported |
| Block |
✅ |
| Net |
✅ |
| GPU |
✅ |
| Input |
✅ |
| Console |
✅ |
| Socket |
✅ |
| ... |
❌ |
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.
