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)