PVBUS(4)

πŸ“¦ in nixpkgs unstable

πŸ’– NAME πŸ’–

Okay so bestie, this is pvbus(4) β€” the paravirtual device tree root β€” and it’s living its best life in the Kernel Interfaces Manual. It’s the root of the paravirtual device tree vibe. ✨


✨ SYNOPSIS ✨

pvbus0 at mainbus0
#include <sys/types.h>
#include <sys/ioctl.h>
#include <dev/pv/pvvar.h>

πŸ¦‹ DESCRIPTION πŸ¦‹

So like, pvbus is used on virtual machines that are running on hypervisors. It provides a pseudo-bus for all the paravirtual devices that do not attach to a well-known bus like pci(4). The pvbus driver is the one doing the main-character work: 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
🫢 heads up: 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;
};

Bestie, 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 <reyk@openbsd.org>.


πŸ’Œ okay that’s the whole page, bestie β€” footer vibes: Debian, January 7, 2023, page PVBUS(4). slay and byeee ✨

πŸ“¦ where this page comes from
  • nixpkgs unstable: cvs-export
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms