[Code Bounty] NVMM hypervisor landed in DragonFly

Aaron LI aly at aaronly.me
Sat Aug 7 21:25:02 PDT 2021

Hi DFlyers,

As you might already know, the NVMM hypervisor has landed in DragonFly for a while and it's working quite well.  So I think the hypervisor code bounty has been now accomplished.

Actually, I was interested in virtualization/hypervisor and porting one (like bhyve/nvmm) to DragonFly for quite some time, but I had no idea whether I could actually achieve anything.  Nevertheless, I started learning x86 virtualization and looking at NVMM since April this year.

It took me quite some efforts to understand the basic virtualization logic.  (x86 is really complicated and I'm still a newbie...)  The NVMM partial port did by Jaromír Doleček (of Moritz Systems) in September last year helped a lot in getting we started with the porting.  Then I struggled with the vm/pmap subsystems and finally got NVMM barely working with the simple example in late June.  After that, Matt greatly helped me with various debugging and testing, as well as the QEMU patches.  We also contacted Maxime Villard and he generously shared us with the various improvements to the NVMM code, and he also kindly offered to review the port and gave us some insights and feedbacks in July.  I merged the NVMM port into master branch on July 20.  swildner then helped fix some build issues and improved the man pages.  On August 3, tuxillo helped merge the updated QEMU port into DeltaPorts, so we can simply 'pkg install qemu' at a later time.

Great thanks to all of them for their kind help.

I've updated the Code Bounties [1] page to include the porting results.

I also created the NVMM HowTo [2] page to guide the NVMM usage on DragonFly.

There are still some important and interesting things to do with NVMM itself or by leveraging NVMM.  Some of my ideas are:

* Fix vkernel by using NVMM.
* Clock para-virtualization, something like kvm-clock.
* Improve VirtIO drivers and add missing ones (like virtio-console).
* Improve QEMU support for NVMM and DragonFly (like qemu-guest-agent).
* DragonFly graphics/audio/usb/etc. support in QEMU guest.

By the way, Haiku OS is also considering to re-port NVMM based on our version [3].

Welcome to try NVMM and report back.  I'm looking forward to seeing it becomes even better :)


[1] Code Bounties: https://www.dragonflybsd.org/docs/developer/Code_Bounties/
[2] NVMM HowTo: https://www.dragonflybsd.org/docs/docs/howtos/nvmm/
[3] https://discuss.haiku-os.org/t/code-nvmm-to-dragonfly-its-more-os-independence/11126

More information about the Kernel mailing list