qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v3 2/4] Add the NetBSD Virtual Machine Monitor accelerator.


From: Jared McNeill
Subject: Re: [PATCH v3 2/4] Add the NetBSD Virtual Machine Monitor accelerator.
Date: Thu, 6 Feb 2020 17:06:49 -0400 (AST)
User-agent: Alpine 2.21 (NEB 202 2017-01-01)

Tested-by: Jared McNeill <address@hidden>

On Thu, 6 Feb 2020, Kamil Rytarowski wrote:

From: Maxime Villard <address@hidden>

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 <address@hidden>
Signed-off-by: Kamil Rytarowski <address@hidden>
Reviewed-by: Sergio Lopez <address@hidden>
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
---
configure       | 37 +++++++++++++++++++++++++++++++++++++
qemu-options.hx | 16 ++++++++--------
2 files changed, 45 insertions(+), 8 deletions(-)

diff --git a/configure b/configure
index 115dc38085..d4a837cf9d 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
}
@@ -388,6 +400,7 @@ kvm="no"
hax="no"
hvf="no"
whpx="no"
+nvmm="no"
rdma=""
pvrdma=""
gprof="no"
@@ -823,6 +836,7 @@ DragonFly)
NetBSD)
  bsd="yes"
  hax="yes"
+  nvmm="yes"
  make="${MAKE-gmake}"
  audio_drv_list="oss try-sdl"
  audio_possible_drivers="oss sdl"
@@ -1169,6 +1183,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"
@@ -1773,6 +1791,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
@@ -2764,6 +2783,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
@@ -6543,6 +6576,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"
@@ -7828,6 +7862,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 224a8e8712..10c046c916 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"
@@ -64,9 +64,9 @@ 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
-more than one accelerator specified, the next one is used if the previous one
-fails to initialize.
+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
Enables emulation of VMWare IO port, for vmmouse etc. auto says to select the
value based on accel. For accel=xen the default is off otherwise the default
@@ -114,7 +114,7 @@ ETEXI

DEF("accel", HAS_ARG, QEMU_OPTION_accel,
    "-accel [accel=]accelerator[,prop[=value][,...]]\n"
-    "                select accelerator (kvm, xen, hax, hvf, whpx or tcg; use 
'help' for a list)\n"
+    "                select accelerator (kvm, xen, hax, hvf, nvmm, whpx or tcg; use 
'help' for a list)\n"
    "                igd-passthru=on|off (enable Xen integrated Intel graphics 
passthrough, default=off)\n"
    "                kernel-irqchip=on|off|split controls accelerated irqchip 
support (default=on)\n"
    "                kvm-shadow-mem=size of KVM shadow MMU in bytes\n"
@@ -124,9 +124,9 @@ STEXI
@item -accel @var{name}[,prop=@var{value}[,...]]
@findex -accel
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
-more than one accelerator specified, the next one is used if the previous one
-fails to initialize.
+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.
@table @option
@item igd-passthru=on|off
When Xen is in use, this option controls whether Intel integrated graphics
--
2.25.0


reply via email to

[Prev in Thread] Current Thread [Next in Thread]