[Code Bounty] NVMM hypervisor landed in DragonFly

Aaron LI <[email protected]> Sun, 8 Aug 2021 12:25:02 +0800
Newsgroups gmane.os.dragonfly-bsd.kernel,gmane.os.dragonfly-bsd.user
Message-ID <[email protected]>
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 h=
as been now accomplished.

Actually, I was interested in virtualization/hypervisor and porting one (lik=
e bhyve/nvmm) to DragonFly for quite some time, but I had no idea whether I c=
ould actually achieve anything.  Nevertheless, I started learning x86 virtua=
lization 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 por=
t did by Jarom=C3=ADr Dole=C4=8Dek (of Moritz Systems) in September last yea=
r helped a lot in getting we started with the porting.  Then I struggled wit=
h 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 debu=
gging and testing, as well as the QEMU patches.  We also contacted Maxime Vi=
llard and he generously shared us with the various improvements to the NVMM c=
ode, 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 2=
0.  swildner then helped fix some build issues and improved the man pages.  O=
n August 3, tuxillo helped merge the updated QEMU port into DeltaPorts, so w=
e 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 versio=
n [3].

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


Cheers,
Aaron

[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-indepe=
ndence/11126=