Expand description
Virtio subsystem – transport layer and device drivers.
This module provides the virtio transport abstraction for VeridianOS, supporting two transport backends:
-
PCI transport (
VirtioPciTransport): Used on x86_64, where virtio devices appear as PCI devices with vendor ID 0x1AF4 (Red Hat). The driver accesses device registers via BAR0 I/O port space. -
MMIO transport (
mmio::VirtioMmioTransport): Used on AArch64 and RISC-V, where QEMU’svirtmachine exposes virtio devices as memory-mapped regions starting at 0x0A00_0000.
Both transports are unified behind the VirtioTransport enum, which
provides a common interface for device initialization, feature negotiation,
queue setup, and notification.
§Architecture
VirtioTransport (enum)
|-- Pci(VirtioPciTransport) -- x86_64 via I/O ports (BAR0)
|-- Mmio(VirtioMmioTransport) -- AArch64/RISC-V via MMIO
|
+-- VirtQueue (queue.rs) -- split virtqueue (shared)
+-- VirtioBlkDevice (blk.rs) -- block device driver (shared)§Legacy PCI Layout (BAR0 I/O Space)
The PCI transport uses the legacy (transitional) virtio PCI interface as described in the virtio 1.0 specification, section 4.1:
| Offset | Size | Name |
|---|---|---|
| 0x00 | 4 | device_features |
| 0x04 | 4 | guest_features |
| 0x08 | 4 | queue_address |
| 0x0C | 2 | queue_size |
| 0x0E | 2 | queue_select |
| 0x10 | 2 | queue_notify |
| 0x12 | 1 | device_status |
| 0x13 | 1 | isr_status |
| 0x14+ | var | device config |
For the MMIO register layout, see mmio.
Modules§
- blk
- Virtio-blk device driver
- mmio
- Virtio MMIO transport (virtio 1.0 legacy-compatible)
- queue
- Split virtqueue implementation for virtio devices.
- regs
- Legacy virtio PCI register offsets (I/O space via BAR0)
- status
- Virtio device status flags (virtio spec 2.1)
Structs§
- Virtio
PciTransport - Virtio PCI transport handle.
Enums§
- Virtio
Transport - Unified transport enum for virtio-blk
Constants§
- VIRTIO_
BLK_ DEVICE_ ID_ LEGACY - Virtio-blk PCI device IDs Legacy device ID (virtio 0.9 / transitional)
- VIRTIO_
BLK_ DEVICE_ ID_ MODERN - Modern device ID (virtio 1.0+, transitional)
- VIRTIO_
VENDOR_ ID - Virtio vendor ID (Red Hat, Inc.)