xref: /freebsd/share/man/man4/virtio.4 (revision 7138c819c484e71e2a21344bc3f91c66ca7b610a)
1.\" Copyright (c) 2011 Bryan Venteicher
2.\" All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\"    notice, this list of conditions and the following disclaimer.
9.\" 2. Redistributions in binary form must reproduce the above copyright
10.\"    notice, this list of conditions and the following disclaimer in the
11.\"    documentation and/or other materials provided with the distribution.
12.\"
13.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23.\" SUCH DAMAGE.
24.\"
25.\" $FreeBSD$
26.\"
27.Dd January 22, 2012
28.Dt VIRTIO 4
29.Os
30.Sh NAME
31.Nm virtio
32.Nd VirtIO Device Support
33.Sh SYNOPSIS
34To compile VirtIO device support into the kernel, place the following lines
35in your kernel configuration file:
36.Bd -ragged -offset indent
37.Cd "device virtio"
38.Cd "device virtio_pci"
39.Ed
40.Pp
41Alternatively, to load VirtIO support as modules at boot time, place the
42following lines in
43.Xr loader.conf 5 :
44.Bd -literal -offset indent
45virtio_load="YES"
46virtio_pci_load="YES"
47.Ed
48.Sh DESCRIPTION
49VirtIO is a specification for para-virtualized I/O in a virtual machine (VM).
50Traditionally, the hypervisor emulated real devices such as an Ethernet
51interface or disk controller to provide the VM with I/O.
52This emulation is often inefficient.
53.Pp
54VirtIO defines an interface for efficient I/O between the hypervisor and VM.
55The
56.Nm
57module provides a shared memory transport called a virtqueue.
58The
59.Xr virtio_pci
60device driver represents an emulated PCI device that the hypervisor makes
61available to the VM.
62This device provides the probing, configuration, and
63interrupt notifications needed to interact with the hypervisor.
64.Fx
65supports the following VirtIO devices:
66.Bl -hang -offset indent -width xxxxxxxx
67.It Nm Ethernet
68An emulated Ethernet device is provided by the
69.Xr vtnet 4
70device driver.
71.It Nm Block
72An emulated disk controller is provided by the
73.Xr virtio_blk 4
74device driver.
75.It Nm SCSI
76An emulated SCSI HBA is provided by the
77.Xr virtio_scsi 4
78device driver.
79.It Nm Balloon
80A pseudo-device to allow the VM to release memory back to the hypervisor is
81provided by the
82.Xr virtio_balloon 4
83device driver.
84.El
85.Sh SEE ALSO
86.Xr virtio_balloon 4 ,
87.Xr virtio_blk 4 ,
88.Xr virtio_console 4 ,
89.Xr virtio_scsi 4 ,
90.Xr vtnet 4
91.Sh HISTORY
92Support for VirtIO first appeared in
93.Fx 9.0 .
94.Sh AUTHORS
95.An -nosplit
96.Fx
97support for VirtIO was first added by
98.An Bryan Venteicher Aq Mt bryanv@FreeBSD.org .
99