Skip to main content

Crate squib_virtio

Crate squib_virtio 

Source
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:

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

ModuleRole
devicePer-device-type trait surface (device::VirtioDevice)
device_idStandard virtio device IDs (block=2, net=1, vsock=19, …)
device_statusStatus bits driving the driver-init state machine
feature_bitsCommon feature bits (VIRTIO_F_VERSION_1, …)
interruptinterrupt::IrqLine — wraps Gic + IntId for the device side
queueVirtqueue: descriptors, avail/used rings, queue::DescriptorChain
slotMMIO-slot allocator (32-slot ceiling, base 0x0F00_0000 + slot * 0x1000)
transportvirtio-MMIO BusDevice: register layout + driver-init state machine
devicesPer-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.