NVMM
NVMM is a Type-2 hypervisor, and hypervisor platform, that provides support for hardware-accelerated virtualization. A virtualization API is shipped in libnvmm, and allows existing emulators such as Qemu to easily create and manage virtual machines via NVMM.
History
NVMM was developed in 2018, and initially supported NetBSD as main host OS. NetBSD support was later abandoned, and the NVMM version in the NetBSD source tree became stale and broken. In 2021, the latest version of NVMM was ported to DragonFlyBSD, and DragonFlyBSD then became the main host OS supported by NVMM.
Resources
Article: From Zero to NVMM.
The kernel code: browse.
The libnvmm API: browse.
The man page: open.
The regression tests: browse.
Qemu+NVMM
You can use Qemu with NVMM acceleration by adding "-accel nvmm" to your usual Qemu command line. For example:
$ qemu-system-x86_64 -smp 4 -m 8G -cdrom Win10_2004_English_x64.iso -accel nvmm
Tested guest OSes:
Guest OS | Status | Notes |
FreeBSD 32bit | Works | |
FreeBSD 64bit | Works | |
NetBSD 32bit | Works | |
NetBSD 64bit | Works | |
OpenBSD 32bit | Works | |
OpenBSD 64bit | Works | |
DragonFlyBSD 64bit | Works | |
Win95 32bit | Doesn't work | |
Win98 32bit | Doesn't work | |
WinXP 32bit | Works | |
Win7 32bit | Works | |
Win8 32bit | Works | |
Win8 64bit | Works | |
Win10 32bit | Works | |
Win10 64bit | Works | |
Fedora 64bit | Works | Pass "no_timer_check" in grub |
ArchLinux 64bit | Works | Pass "no_timer_check" in grub |
Ubuntu 64bit | Works | |
HaikuOS 64bit | Works | |
OmniOS 64bit | Works |
Notes:
Linux performs timer checks at boot time which fail under hypervisors. To work around this, on certain distributions, you must pass "no_timer_check" in the guest's grub.
NetBSD 8 (top left), Fedora 29 (top right), Windows XP (bottom left), Windows 10 (bottom right),
all running via Qemu+NVMM.
Technical details
NVMM can support up to 128 virtual machines, each having a maximum of 128 VCPUs and 128GB of RAM. It works with both x86 AMD CPUs and x86 Intel CPUs.
NVMM has unique design properties, not currently found in other hypervisor solutions. A detailed analysis is available in this blog post.