VIRTIO(4) FreeBSD Kernel Interfaces Manual VIRTIO(4)
NAME
virtio - VirtIO Device Support
SYNOPSIS
To compile VirtIO device support into the kernel, place the following
lines in your kernel configuration file:
device virtio
device virtio_pci
Alternatively, to load VirtIO support as modules at boot time, place the
following lines in loader.conf(5):
virtio_load="YES"
virtio_pci_load="YES"
DESCRIPTION
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.
Console Provided by the virtio_console(4) driver.
Entropy Provided by the virtio_random(4) 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.
GPU Graphics support is provided by the virtio_gpu(4) device
driver.
SCSI An emulated SCSI HBA is provided by the virtio_scsi(4)
device driver.
LOADER TUNABLES
Tunables can be set at the loader(8) prompt before booting the kernel or
stored in loader.conf(5).
hw.virtio.pci.disable_msix If set to 1, disables MSI-X. The default
value is 0.
hw.virtio.pci.transitional For a transitional virtio device, this
tunable specifies whether to negotiate modern
mode and use the modern virtio driver (1) or
to negotiate legacy mode and use the legacy
virtio driver (0). The default value is 0.
SEE ALSO
virtio_balloon(4), virtio_blk(4), virtio_console(4), virtio_gpu(4),
virtio_random(4), virtio_scsi(4), vtnet(4)
HISTORY
Support for VirtIO first appeared in FreeBSD 9.0.
AUTHORS
FreeBSD support for VirtIO was first added by Bryan Venteicher
<bryanv@FreeBSD.org>.
FreeBSD 15.1-STABLE-HBSD April 4, 2026 VIRTIO(4)