blob: fdb61d8c4f190dcb9e0682606293196931b5a49f [file] [log] [blame] [view]
Andrew Walbraneca26002022-09-30 10:51:49 +00001# VirtIO-drivers-rs
2
Andrew Walbran59e5cd82023-01-24 11:59:29 +00003[![crates.io page](https://img.shields.io/crates/v/virtio-drivers.svg)](https://crates.io/crates/virtio-drivers)
4[![docs.rs page](https://docs.rs/virtio-drivers/badge.svg)](https://docs.rs/virtio-drivers)
Andrew Walbraneca26002022-09-30 10:51:49 +00005[![CI](https://github.com/rcore-os/virtio-drivers/workflows/CI/badge.svg?branch=master)](https://github.com/rcore-os/virtio-drivers/actions)
6
7VirtIO guest drivers in Rust. For **no_std** environment.
8
9## Support status
10
11### Device types
12
13| Device | Supported |
14| ------- | --------- |
15| Block | |
16| Net | |
17| GPU | |
18| Input | |
19| Console | |
David Brazdile3ad14a2023-04-19 17:46:52 +010020| Socket | |
Andrew Walbraneca26002022-09-30 10:51:49 +000021| ... | |
22
23### Transports
24
Andrew Walbranf1cc9a62022-11-21 15:18:09 +000025| Transport | Supported | |
26| ----------- | --------- | ------------------------------------------------- |
27| Legacy MMIO | | version 1 |
28| MMIO | | version 2 |
29| PCI | | Memory-mapped CAM only, e.g. aarch64 or PCIe ECAM |
Andrew Walbraneca26002022-09-30 10:51:49 +000030
31### Device-independent features
32
33| Feature flag | Supported | |
34| ---------------------------- | --------- | --------------------------------------- |
35| `VIRTIO_F_INDIRECT_DESC` | | Indirect descriptors |
36| `VIRTIO_F_EVENT_IDX` | | `avail_event` and `used_event` fields |
37| `VIRTIO_F_VERSION_1` | TODO | VirtIO version 1 compliance |
38| `VIRTIO_F_ACCESS_PLATFORM` | | Limited device access to memory |
39| `VIRTIO_F_RING_PACKED` | | Packed virtqueue layout |
40| `VIRTIO_F_IN_ORDER` | | Optimisations for in-order buffer usage |
41| `VIRTIO_F_ORDER_PLATFORM` | | Platform ordering for memory access |
42| `VIRTIO_F_SR_IOV` | | Single root I/O virtualization |
43| `VIRTIO_F_NOTIFICATION_DATA` | | Extra data in device notifications |
44
45## Examples & Tests
46
47- x86_64 (TODO)
48
Andrew Walbran0038e822023-01-06 14:01:10 +000049### [aarch64](./examples/aarch64)
50
51```bash
52cd examples/aarch64
53make qemu
54```
55
56### [RISCV](./examples/riscv)
57
58```bash
59cd examples/riscv
60make qemu
61```
62
63You will see device info & GUI Window in qemu.
64
65<img decoding="async" src="https://github.com/rcore-os/virtio-drivers/raw/master/examples/riscv/virtio-test-gpu.png" width="50%">