15 releases (9 breaking)

0.10.0 Apr 8, 2025
0.9.0 Jan 31, 2025
0.8.0 Nov 22, 2024
0.7.5 Jul 30, 2024
0.1.0 Sep 29, 2022

#37 in Hardware support

Download history 585/week @ 2025-01-04 676/week @ 2025-01-11 756/week @ 2025-01-18 1066/week @ 2025-01-25 1189/week @ 2025-02-01 895/week @ 2025-02-08 1095/week @ 2025-02-15 721/week @ 2025-02-22 2244/week @ 2025-03-01 2639/week @ 2025-03-08 1437/week @ 2025-03-15 2452/week @ 2025-03-22 2309/week @ 2025-03-29 1789/week @ 2025-04-05 1407/week @ 2025-04-12 1433/week @ 2025-04-19

7,029 downloads per month
Used in osdemo

MIT license

410KB
8K SLoC

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
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

x86_64

cd examples/x86_64
make qemu

aarch64

cd examples/aarch64
make qemu

RISCV

cd examples/riscv
make qemu

You will see device info & GUI Window in qemu.

Dependencies

~1.1–1.7MB
~30K SLoC