Expand description
virtio-MMIO transport and per-device drivers for squib.
This crate ports the virtio-MMIO state machine and per-device frontends described in 14-virtio-and-devices.md. The transport speaks the virtio v1.2 MMIO register layout and adapts it to squib-native abstractions:
squib_bus::BusDevicefor the MMIO-routed register surface.squib_core::GuestMemoryfor descriptor / payload reads and writes.squib_gic::Gic::pulse_spifor edge-rising IRQ delivery (D24).
The crate intentionally avoids vmm-sys-util, kvm-ioctls, and the
upstream Linux-flavoured EventFd plumbing — squib-vmm uses Tokio
channels for cross-thread queue notifications and the GIC’s pulse_spi is
synchronous through Arc<dyn Gic>. See I-CRATE-3 in
61-crates-and-features.md § 7.
§Module layout
| Module | Role |
|---|---|
device | Per-device-type trait surface (device::VirtioDevice) |
device_id | Standard virtio device IDs (block=2, net=1, vsock=19, …) |
device_status | Status bits driving the driver-init state machine |
feature_bits | Common feature bits (VIRTIO_F_VERSION_1, …) |
interrupt | interrupt::IrqLine — wraps Gic + IntId for the device side |
queue | Virtqueue: descriptors, avail/used rings, queue::DescriptorChain |
slot | MMIO-slot allocator (32-slot ceiling, base 0x0F00_0000 + slot * 0x1000) |
transport | virtio-MMIO BusDevice: register layout + driver-init state machine |
devices | Per-device frontends: block, net, vsock, balloon, rng, console, pmem, mem, boot-timer |
Re-exports§
pub use device::ActivateError;pub use device::VirtioDevice;pub use error::VirtioError;pub use interrupt::IrqLine;pub use queue::DescriptorChain;pub use queue::MAX_QUEUE_SIZE;pub use queue::Queue;pub use queue::QueueError;pub use queue::QueueIndex;pub use slot::MMIO_SLOT_COUNT;pub use slot::Slot;pub use slot::SlotAllocator;pub use slot::VIRTIO_MMIO_BASE;pub use slot::VIRTIO_MMIO_REGION_SIZE;pub use transport::VIRTIO_MMIO_REGION_BYTES;pub use transport::VirtioMmioTransport;
Modules§
- device
- Per-device-type trait surface.
- device_
id - Standard virtio device-type IDs.
- device_
status - virtio device-status bits.
- devices
- Per-device frontends.
- error
- Crate-level error type for squib-virtio.
- feature_
bits - Common virtio feature bits.
- interrupt
- Per-device IRQ delivery.
- queue
- Split-ring virtqueue handling.
- slot
- MMIO slot allocation for virtio-MMIO devices.
- transport
- virtio-MMIO transport.