# VirtIO-drivers-rs [![CI](https://github.com/rcore-os/virtio-drivers/workflows/CI/badge.svg?branch=master)](https://github.com/rcore-os/virtio-drivers/actions) VirtIO guest drivers in Rust. For **no_std** environment. ## Support status ### Device types | Device | Supported | | ------- | --------- | | Block | ✅ | | Net | ✅ | | GPU | ✅ | | Input | ✅ | | Console | ✅ | | ... | ❌ | ### 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 (TODO) ### [aarch64](./examples/aarch64) ```bash cd examples/aarch64 make qemu ``` ### [RISCV](./examples/riscv) ```bash cd examples/riscv make qemu ``` You will see device info & GUI Window in qemu. ![gui](./examples/riscv/virtio-test-gpu.png)