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.
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.
Article: From Zero to NVMM.
The kernel code: browse.
The libnvmm API: browse.
The man page: open.
The regression tests: browse.
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 nvmmTested guest OSes:
|Win95 32bit||Doesn't work|
|Win98 32bit||Doesn't work|
|Fedora 64bit||Works||Pass "no_timer_check" in grub|
|ArchLinux 64bit||Works||Pass "no_timer_check" in grub|
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.
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.