VirtIO is a specification for para-virtualized I/O in a virtual machine (VM). Traditionally, the
hypervisor emulated real devices such as an Ethernet interface or disk controller to provide the VM with
I/O. This emulation is often inefficient.
VirtIO defines an interface for efficient I/O between the hypervisor and VM. The virtio module provides
a shared memory transport called a virtqueue. The virtio_pci device driver represents an emulated PCI
device that the hypervisor makes available to the VM. This device provides the probing, configuration,
and interrupt notifications needed to interact with the hypervisor. FreeBSD supports the following
VirtIO devices:
Ethernet An emulated Ethernet device is provided by the vtnet(4) device driver.
Block An emulated disk controller is provided by the virtio_blk(4) device driver.
SCSI An emulated SCSI HBA is provided by the virtio_scsi(4) device driver.
Balloon A pseudo-device to allow the VM to release memory back to the hypervisor is provided by
the virtio_balloon(4) device driver.