VMM(4) | Device Drivers Manual (amd64) | VMM(4)

# NAME

`vmm` — virtual machine monitor

# SYNOPSIS

`vmm0 at mainbus0`

`#include <machine/vmmvar.h>`

# DESCRIPTION

The `vmm` driver implements a virtual machine monitor (VMM) suitable for executing virtual machines (VMs). A VMM runs on the host operating system and provides facilities to execute one or more VMs, each of which is provided with a suitable complement of virtual hardware.

These VMs run independently of the host, but may interact with it as any other machine would (e.g. via network communications or other means).

VMs are allocated hardware resources by the VMM during creation, including:

- Virtual CPUs
- Virtual network interfaces
- Virtual disk images
- Virtual serial ports

Although VMs execute independently of each other and the host, they do consume host resources and, as such, the number of VMs (and their configurations) should be taken into consideration when planning host capacity.

The `vmm` driver requires suitable host CPU capabilities in order to provide VM services. The `vmm` driver requires at least one CPU with hardware-assisted virtualization capabilities and nested or extended paging capabilities to be present on the host. For more information, consult the CPU vendor's documentation.

The following ioctl(2) commands are provided for managing `vmm` guests:

`VMM_IOC_CREATE` struct vm_create_params *
  Create a VM, initializing `vmm` if not yet started. (Does not start the VCPU.)
`VMM_IOC_RUN` struct vm_run_params *
  Run a VCPU for a defined VM. Return on VM-exit, when the VCPU stopped, or an error occurred.
`VMM_IOC_INFO` struct vm_info_params *
  Get information about the VMs currently hosted by `vmm`.
`VMM_IOC_TERM` struct vm_terminate_params *
  Terminate a given VM.
`VMM_IOC_RESETCPU` struct vm_resetcpu_params *
  Reset a VCPU to power-on-init state using the provided register state.
`VMM_IOC_INTR` struct vm_intr_params *
  Signal a pending interrupt for a VCPU.
`VMM_IOC_READREGS` struct vm_rwregs_params *
  Read registers of a VCPU.
`VMM_IOC_WRITEREGS` struct vm_rwregs_params *
  Write register values of a VCPU.
`VMM_IOC_READVMPARAMS` struct vm_rwvmparams_params *
  Read paravirtualized hardware parameters (such as pvclock(4) version) for a VM.
`VMM_IOC_WRITEVMPARAMS` struct vm_rwvmparams_params *
  Write paravirtualized hardware parameters (such as pvclock(4) guest physical address) for a VM.

# SEE ALSO

cpu(4), intro(4), virtio(4), vmctl(8), vmd(8)

# HISTORY

The `vmm` driver appeared in OpenBSD 5.9.

# AUTHORS

Mike Larkin <mlarkin@openbsd.org>

November 5, 2024 | Debian