VirtIO-drivers-rs

crates.io page docs.rs page CI

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

x86_64

bash cd examples/x86_64 make qemu

aarch64

bash cd examples/aarch64 make qemu

RISCV

bash cd examples/riscv make qemu

You will see device info & GUI Window in qemu.