---
name: "virtio"
section: "4"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd", "openbsd"]
url: "https://new.carta.tech/virtio"
---

# virtio(4)

VirtIO Device Support

## NAME

**virtio** – VirtIO Device Support

## SYNOPSIS

**device** **virtio** **device** **virtio\_pci**

In [loader.conf(5)](/loader.conf/5.md): **hw.virtio.pci.disable\_msix** **hw.virtio.pci.transitional** **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)](/vtnet/4.md) device driver.

- **Block**

  An emulated disk controller is provided by the [virtio\_blk(4)](/virtio_blk/4.md) device driver.

- **Console**

  Provided by the [virtio\_console(4)](/virtio_console/4.md) driver.

- **Entropy**

  Provided by the [virtio\_random(4)](/virtio_random/4.md) driver.

- **Balloon**

  A pseudo-device to allow the VM to release memory back to the hypervisor is provided by the [virtio\_balloon(4)](/virtio_balloon/4.md) device driver.

- **GPU**

  Graphics support is provided by the [virtio\_gpu(4)](/virtio_gpu/4.md) device driver.

- **SCSI**

  An emulated SCSI HBA is provided by the [virtio\_scsi(4)](/virtio_scsi/4.md) device driver.

## LOADER TUNABLES

Tunables can be set at the [loader(8)](/loader/8.md) prompt before booting the kernel or stored in [loader.conf(5)](/loader.conf/5.md).

- *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 1.

## SEE ALSO

[virtio\_balloon(4)](/virtio_balloon/4.md), [virtio\_blk(4)](/virtio_blk/4.md), [virtio\_console(4)](/virtio_console/4.md), [virtio\_gpu(4)](/virtio_gpu/4.md), [virtio\_random(4)](/virtio_random/4.md), [virtio\_scsi(4)](/virtio_scsi/4.md), [vtnet(4)](/vtnet/4.md)

## HISTORY

Support for VirtIO first appeared in FreeBSD 9.0.

## AUTHORS

FreeBSD support for VirtIO was first added by Bryan Venteicher ⟨*bryanv@FreeBSD.org*⟩.
