Skip to content

Components

go-virtio is a set of dependency-free Go modules (standard library only, CGO_ENABLED=0) layered around one shared infrastructure package and one narrow Transport interface. Each driver owns its spec-level device class and consumes common for everything transport-related.

Core

Module Import path What it does
common github.com/go-virtio/common Transport-agnostic infrastructure: PCI capability walker, modern-config register layout, split-virtqueue + descriptor chaining, device-class IDs, and the Transport / PCIConfigReader / BARMemoryAccessor / PageAllocator interfaces.

Drivers

Module Import path Device (DID)
net github.com/go-virtio/net virtio-net (0x1041)
rng github.com/go-virtio/rng virtio-rng (0x1044)
vsock github.com/go-virtio/vsock virtio-vsock (0x1053)
blk github.com/go-virtio/blk virtio-blk (0x1042)
console github.com/go-virtio/console virtio-console (0x1043)
balloon github.com/go-virtio/balloon virtio-balloon (0x1045)
fs github.com/go-virtio/fs virtio-fs (0x105A)
input github.com/go-virtio/input virtio-input (0x1052)
sound github.com/go-virtio/sound virtio-sound (0x1059)

GPU

Module Import path What it does
gpu github.com/go-virtio/gpu virtio-gpu (0x1050): 2D framebuffer + virgl 3D + the gpu/soft3d software rasterizer.
venus github.com/go-virtio/venus Vulkan-over-virtio (Venus): vk.xml→Go serializer/generator + ring transport.

Validation

Module Import path What it does
validate github.com/go-virtio/validate Real-hardware (TamaGo + QEMU) validation harness and a pure-Go virglrenderer/Venus vtest client.