PVBUS(4) FreeBSD Kernel Interfaces Manual PVBUS(4)
NAME
pvbus - paravirtual device tree root
SYNOPSIS
pvbus0 at mainbus0
#include <sys/types.h>
#include <sys/ioctl.h>
#include <dev/pv/pvvar.h>
DESCRIPTION
pvbus is used on virtual machines that are running on hypervisors. It
provides a pseudo-bus for all paravirtual devices that do not attach to a
well-known bus like pci(4). The pvbus driver is responsible for
detecting the hypervisor interface, checking the capabilities, attaching
the paravirtual devices, and providing access to supported information
stores.
Supported hypervisors
KVM Kernel-based Virtual Machine
Hyper-V Microsoft Hyper-V
OpenBSD OpenBSD vmm(4)
VMware VMware vSphere Hypervisor and ESXi
Xen Xen VMM
Note that a hypervisor can attempt to emulate other hypervisors, so
multiple hypervisor interfaces may be available on the same host.
VMware paravirtual devices
vmt(4) VMware Tools driver and "guestinfo" information store
Hyper-V paravirtual devices
hvn(4) Hyper-V virtual networking interface
hvs(4) Hyper-V virtual disk
hyperv(4) Hyper-V guest nexus device
Xen paravirtual devices
xbf(4) Xen Blkfront virtual disk
xen(4) Xen domU nexus device and XenStore information store
xnf(4) Xen Netfront virtual networking interface
IOCTL INTERFACE
pvbus supports ioctl(2) commands to exchange information with the
hypervisor interface, as implemented in the hostctl(8) program. Each
detected hypervisor interface is available as a character special device
file, /dev/pvbus0, /dev/pvbus1, etc. All available commands use the same
pvbus_req structure:
struct pvbus_req {
size_t pvr_keylen;
char *pvr_key;
size_t pvr_valuelen;
char *pvr_value;
};
The caller is responsible for attaching character buffers to the pvr_key
and pvr_value fields and to set their length in pvr_keylen and
pvr_valuelen accordingly. All keys and values are nul-terminated
strings.
The following ioctl(2) commands are available:
PVBUSIOC_KVREAD Read the value from pvr_key and return it in pvr_value.
If pvr_valuelen is not enough for the value, the
command will fail and errno(2) is set to ERANGE.
PVBUSIOC_KVTYPE Return the type of the attached hypervisor interface as
a string in pvr_key; see Supported hypervisors.
PVBUSIOC_KVWRITE Write the new value pvr_value to the key pvr_key. This
command requires write permissions on the device file.
FILES
/dev/pvbusu pvbus device unit u file.
SEE ALSO
autoconf(4), intro(4), mainbus(4), vmm(4), hostctl(8)
HISTORY
The pvbus pseudo-bus first appeared in OpenBSD 5.8.
AUTHORS
The pvbus pseudo-bus was written by Reyk Floeter <
[email protected]>.
FreeBSD 14.1-RELEASE-p8 January 7, 2023 FreeBSD 14.1-RELEASE-p8