Message ID | 20210407161631.1780-1-reinoud@NetBSD.org (mailing list archive) |
---|---|
Headers | show |
Series | Implements the NetBSD Virtual Machine Monitor accelerator | expand |
ping? On Wed, Apr 07, 2021 at 04:16:27PM +0000, Reinoud Zandijk wrote: > The NetBSD team has implemented its new hypervisor called NVMM. It has been > included since NetBSD 9.0 and has been in use now for quite some time. NVMM > adds user-mode capabilities to create and manage virtual machines, configure > memory mappings for guest machines, and create and control execution of > virtual processors. > > With this new API we are now able to bring our hypervisor to the QEMU > community! The following patches implement the NetBSD Virtual Machine Monitor > accelerator (NVMM) for QEMU on NetBSD 9.0 and newer hosts. > > When compiling QEMU for x86_64 it will autodetect nvmm and will compile the > accelerator for use if found. At runtime using the '-accel nvmm' should see a > significant performance improvement over emulation, much like when using 'hax' > on NetBSD. > > The documentation for this new API is visible at https://man.netbsd.org under > the libnvmm(3) and nvmm(4) pages. > > NVMM was designed and implemented by Maxime Villard <max@m00nbsd.net> > > Thank you for your feedback. > > Refrences: > https://m00nbsd.net/4e0798b7f2620c965d0dd9d6a7a2f296.html > > > Test plan: > > 1. Download a NetBSD 9.1 release: > http://cdn.netbsd.org/pub/NetBSD/NetBSD-9.1/amd64/installation/cdrom/boot.iso > > 2. Install it natively on a not too old x86_64 hardware (Intel or AMD). > > There is no support for nested virtualization in NVMM. > > 3. Setup the system. > > export PKG_PATH=http://cdn.netbsd.org/pub/pkgsrc/packages/NetBSD/amd64/9.0/All/ > pkg_add git gmake python37 glib2 bison pkgconf pixman > > Install mozilla-rootcerts and follow post-install instructions. > > pkg_add mozilla-rootcerts > > More information: https://wiki.qemu.org/Hosts/BSD#NetBSD > > 4. Build qemu > > mkdir build > cd build > ../configure --python=python3.7 > gmake > gmake check > > 5. Test > > qemu -accel nvmm ... > > History: > v7 -> v8: > - Minor fixup in target/i386/nvmm/meson.build > v6 -> v7: > - Remove small patches from pkgsrc that krept in > - Enhance the possible race on exit fix > - update the build system to only link the nvmm library for targets that > support NVMM > v5 -> v6: > - Ported to updated Qemu 6.0 build system, reshuffeling and refactoring > - Improved auto detection > - Added support for improved NVMM interface fixing feedback on the use of > signals > v4 -> v5: > - Mainly cosmetic > - Automatic detection > v3 -> v4: > - Correct build warning by adding a missing include > - Do not set R8-R16 registers unless TARGET_X86_64 > v2 -> v3: > - Register nvmm in targetos NetBSD check > - Stop including hw/boards.h > - Rephrase old code comments (remove XXX) > v1 -> v2: > - Included the testing plan as requested by Philippe Mathieu-Daude > - Formatting nit fix in qemu-options.hx > - Document NVMM in the accel section of qemu-options.hx > > > Signed-off-by: Kamil Rytarowski <kamil@NetBSD.org> > Signed-off-by: Reinoud Zandijk <reinoud@NetBSD.org> > > > Reinoud Zandijk (4): > Add NVMM accelerator: configure and build logic > Add NVMM accelerator: x86 CPU support > Add NVMM accelerator: acceleration enlightenments > Add NVMM Accelerator: add maintainers for NetBSD/NVMM > > MAINTAINERS | 11 + > accel/Kconfig | 3 + > configure | 8 +- > include/sysemu/hw_accel.h | 1 + > include/sysemu/nvmm.h | 26 + > meson.build | 14 + > meson_options.txt | 2 + > qemu-options.hx | 8 +- > target/i386/helper.c | 2 +- > target/i386/meson.build | 1 + > target/i386/nvmm/meson.build | 8 + > target/i386/nvmm/nvmm-accel-ops.c | 111 +++ > target/i386/nvmm/nvmm-accel-ops.h | 24 + > target/i386/nvmm/nvmm-all.c | 1226 +++++++++++++++++++++++++++++ > 14 files changed, 1439 insertions(+), 6 deletions(-) > create mode 100644 include/sysemu/nvmm.h > create mode 100644 target/i386/nvmm/meson.build > create mode 100644 target/i386/nvmm/nvmm-accel-ops.c > create mode 100644 target/i386/nvmm/nvmm-accel-ops.h > create mode 100644 target/i386/nvmm/nvmm-all.c > > -- > 2.31.1
On 5/8/21 4:27 PM, Reinoud Zandijk wrote: > ping? Paolo sent a pull request: https://www.mail-archive.com/qemu-devel@nongnu.org/msg804321.html And you and Kamil have been Cc'ed: https://www.mail-archive.com/qemu-devel@nongnu.org/msg804320.html > On Wed, Apr 07, 2021 at 04:16:27PM +0000, Reinoud Zandijk wrote: >> The NetBSD team has implemented its new hypervisor called NVMM. It has been >> included since NetBSD 9.0 and has been in use now for quite some time. NVMM >> adds user-mode capabilities to create and manage virtual machines, configure >> memory mappings for guest machines, and create and control execution of >> virtual processors. >> >> With this new API we are now able to bring our hypervisor to the QEMU >> community! The following patches implement the NetBSD Virtual Machine Monitor >> accelerator (NVMM) for QEMU on NetBSD 9.0 and newer hosts. >> >> When compiling QEMU for x86_64 it will autodetect nvmm and will compile the >> accelerator for use if found. At runtime using the '-accel nvmm' should see a >> significant performance improvement over emulation, much like when using 'hax' >> on NetBSD. >> >> The documentation for this new API is visible at https://man.netbsd.org under >> the libnvmm(3) and nvmm(4) pages. >> >> NVMM was designed and implemented by Maxime Villard <max@m00nbsd.net> >> >> Thank you for your feedback. >> >> Refrences: >> https://m00nbsd.net/4e0798b7f2620c965d0dd9d6a7a2f296.html