Skip to content

Latest commit

 

History

709 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 ✅
RNG ✅
9P ✅
... ❌

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          # plain 2D virtio-gpu; the virgl 3D tests are skipped
make qemu gl=on    # GL-capable virtio-gpu; runs the virgl 3D & blob tests

gl=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 qemu
cd examples/riscv
make qemu
cd examples/hexagon
make qemu

You will see device info & GUI Window in qemu.

About

VirtIO guest drivers in Rust.

Topics

Resources

Stars

312 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages