Message ID | 20200107125401.18126-3-n54@gmx.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Implements the NetBSD Virtual Machine Monitor accelerator | expand |
On Tue, Jan 07, 2020 at 01:53:59PM +0100, Kamil Rytarowski wrote: > From: Maxime Villard <max@m00nbsd.net> > > Introduces the configure support for the new NetBSD Virtual Machine Monitor that > allows for hypervisor acceleration from usermode components on the NetBSD > platform. > > Signed-off-by: Maxime Villard <max@m00nbsd.net> > Signed-off-by: Kamil Rytarowski <n54@gmx.com> > --- > configure | 36 ++++++++++++++++++++++++++++++++++++ > qemu-options.hx | 4 ++-- > 2 files changed, 38 insertions(+), 2 deletions(-) > > diff --git a/configure b/configure > index 0ce2c0354a..eb456a271e 100755 > --- a/configure > +++ b/configure > @@ -241,6 +241,17 @@ supported_whpx_target() { > return 1 > } > > +supported_nvmm_target() { > + test "$nvmm" = "yes" || return 1 > + glob "$1" "*-softmmu" || return 1 > + case "${1%-softmmu}" in > + i386|x86_64) > + return 0 > + ;; > + esac > + return 1 > +} > + > supported_target() { > case "$1" in > *-softmmu) > @@ -268,6 +279,7 @@ supported_target() { > supported_hax_target "$1" && return 0 > supported_hvf_target "$1" && return 0 > supported_whpx_target "$1" && return 0 > + supported_nvmm_target "$1" && return 0 > print_error "TCG disabled, but hardware accelerator not available for '$target'" > return 1 > } > @@ -387,6 +399,7 @@ kvm="no" > hax="no" > hvf="no" > whpx="no" > +nvmm="no" > rdma="" > pvrdma="" > gprof="no" > @@ -1168,6 +1181,10 @@ for opt do > ;; > --enable-whpx) whpx="yes" > ;; > + --disable-nvmm) nvmm="no" > + ;; > + --enable-nvmm) nvmm="yes" > + ;; > --disable-tcg-interpreter) tcg_interpreter="no" > ;; > --enable-tcg-interpreter) tcg_interpreter="yes" > @@ -1768,6 +1785,7 @@ disabled with --disable-FEATURE, default is enabled if available: > hax HAX acceleration support > hvf Hypervisor.framework acceleration support > whpx Windows Hypervisor Platform acceleration support > + nvmm NetBSD Virtual Machine Monitor acceleration support > rdma Enable RDMA-based migration > pvrdma Enable PVRDMA support > vde support for vde network > @@ -2757,6 +2775,20 @@ if test "$whpx" != "no" ; then > fi > fi > > +########################################## > +# NetBSD Virtual Machine Monitor (NVMM) accelerator check > +if test "$nvmm" != "no" ; then > + if check_include "nvmm.h" ; then > + nvmm="yes" > + LIBS="-lnvmm $LIBS" > + else > + if test "$nvmm" = "yes"; then > + feature_not_found "NVMM" "NVMM is not available" > + fi > + nvmm="no" > + fi > +fi > + > ########################################## > # Sparse probe > if test "$sparse" != "no" ; then > @@ -6495,6 +6527,7 @@ echo "KVM support $kvm" > echo "HAX support $hax" > echo "HVF support $hvf" > echo "WHPX support $whpx" > +echo "NVMM support $nvmm" > echo "TCG support $tcg" > if test "$tcg" = "yes" ; then > echo "TCG debug enabled $debug_tcg" > @@ -7771,6 +7804,9 @@ fi > if test "$target_aligned_only" = "yes" ; then > echo "TARGET_ALIGNED_ONLY=y" >> $config_target_mak > fi > +if supported_nvmm_target $target; then > + echo "CONFIG_NVMM=y" >> $config_target_mak > +fi > if test "$target_bigendian" = "yes" ; then > echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak > fi > diff --git a/qemu-options.hx b/qemu-options.hx > index e9d6231438..f2dbac68ef 100644 > --- a/qemu-options.hx > +++ b/qemu-options.hx > @@ -31,7 +31,7 @@ DEF("machine", HAS_ARG, QEMU_OPTION_machine, \ > "-machine [type=]name[,prop[=value][,...]]\n" > " selects emulated machine ('-machine help' for list)\n" > " property accel=accel1[:accel2[:...]] selects accelerator\n" > - " supported accelerators are kvm, xen, hax, hvf, whpx or tcg (default: tcg)\n" > + " supported accelerators are kvm, xen, hax, hvf, nvmm, whpx or tcg (default: tcg)\n" > " vmport=on|off|auto controls emulation of vmport (default: auto)\n" > " dump-guest-core=on|off include guest memory in a core dump (default=on)\n" > " mem-merge=on|off controls memory merge support (default: on)\n" > @@ -63,7 +63,7 @@ Supported machine properties are: > @table @option > @item accel=@var{accels1}[:@var{accels2}[:...]] > This is used to enable an accelerator. Depending on the target architecture, > -kvm, xen, hax, hvf, whpx or tcg can be available. By default, tcg is used. If there is > +kvm, xen, hax, hvf, nvmm, whpx or tcg can be available. By default, tcg is used. If there is Nitpick, but I think it'd be better to end the line at "tcg is used." and rearrange the paragraph, to avoid such a long line. > more than one accelerator specified, the next one is used if the previous one > fails to initialize. > @item vmport=on|off|auto Please update the section for "accel" option too. Sergio.
diff --git a/configure b/configure index 0ce2c0354a..eb456a271e 100755 --- a/configure +++ b/configure @@ -241,6 +241,17 @@ supported_whpx_target() { return 1 } +supported_nvmm_target() { + test "$nvmm" = "yes" || return 1 + glob "$1" "*-softmmu" || return 1 + case "${1%-softmmu}" in + i386|x86_64) + return 0 + ;; + esac + return 1 +} + supported_target() { case "$1" in *-softmmu) @@ -268,6 +279,7 @@ supported_target() { supported_hax_target "$1" && return 0 supported_hvf_target "$1" && return 0 supported_whpx_target "$1" && return 0 + supported_nvmm_target "$1" && return 0 print_error "TCG disabled, but hardware accelerator not available for '$target'" return 1 } @@ -387,6 +399,7 @@ kvm="no" hax="no" hvf="no" whpx="no" +nvmm="no" rdma="" pvrdma="" gprof="no" @@ -1168,6 +1181,10 @@ for opt do ;; --enable-whpx) whpx="yes" ;; + --disable-nvmm) nvmm="no" + ;; + --enable-nvmm) nvmm="yes" + ;; --disable-tcg-interpreter) tcg_interpreter="no" ;; --enable-tcg-interpreter) tcg_interpreter="yes" @@ -1768,6 +1785,7 @@ disabled with --disable-FEATURE, default is enabled if available: hax HAX acceleration support hvf Hypervisor.framework acceleration support whpx Windows Hypervisor Platform acceleration support + nvmm NetBSD Virtual Machine Monitor acceleration support rdma Enable RDMA-based migration pvrdma Enable PVRDMA support vde support for vde network @@ -2757,6 +2775,20 @@ if test "$whpx" != "no" ; then fi fi +########################################## +# NetBSD Virtual Machine Monitor (NVMM) accelerator check +if test "$nvmm" != "no" ; then + if check_include "nvmm.h" ; then + nvmm="yes" + LIBS="-lnvmm $LIBS" + else + if test "$nvmm" = "yes"; then + feature_not_found "NVMM" "NVMM is not available" + fi + nvmm="no" + fi +fi + ########################################## # Sparse probe if test "$sparse" != "no" ; then @@ -6495,6 +6527,7 @@ echo "KVM support $kvm" echo "HAX support $hax" echo "HVF support $hvf" echo "WHPX support $whpx" +echo "NVMM support $nvmm" echo "TCG support $tcg" if test "$tcg" = "yes" ; then echo "TCG debug enabled $debug_tcg" @@ -7771,6 +7804,9 @@ fi if test "$target_aligned_only" = "yes" ; then echo "TARGET_ALIGNED_ONLY=y" >> $config_target_mak fi +if supported_nvmm_target $target; then + echo "CONFIG_NVMM=y" >> $config_target_mak +fi if test "$target_bigendian" = "yes" ; then echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak fi diff --git a/qemu-options.hx b/qemu-options.hx index e9d6231438..f2dbac68ef 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -31,7 +31,7 @@ DEF("machine", HAS_ARG, QEMU_OPTION_machine, \ "-machine [type=]name[,prop[=value][,...]]\n" " selects emulated machine ('-machine help' for list)\n" " property accel=accel1[:accel2[:...]] selects accelerator\n" - " supported accelerators are kvm, xen, hax, hvf, whpx or tcg (default: tcg)\n" + " supported accelerators are kvm, xen, hax, hvf, nvmm, whpx or tcg (default: tcg)\n" " vmport=on|off|auto controls emulation of vmport (default: auto)\n" " dump-guest-core=on|off include guest memory in a core dump (default=on)\n" " mem-merge=on|off controls memory merge support (default: on)\n" @@ -63,7 +63,7 @@ Supported machine properties are: @table @option @item accel=@var{accels1}[:@var{accels2}[:...]] This is used to enable an accelerator. Depending on the target architecture, -kvm, xen, hax, hvf, whpx or tcg can be available. By default, tcg is used. If there is +kvm, xen, hax, hvf, nvmm, whpx or tcg can be available. By default, tcg is used. If there is more than one accelerator specified, the next one is used if the previous one fails to initialize. @item vmport=on|off|auto