diff mbox series

config: split PVRDMA from RDMA

Message ID 20180816090604.3970-1-marcel.apfelbaum@gmail.com (mailing list archive)
State New, archived
Headers show
Series config: split PVRDMA from RDMA | expand

Commit Message

Marcel Apfelbaum Aug. 16, 2018, 9:06 a.m. UTC
In some BSD systems RDMA migration is possible while
the pvrdma device can't be compiled because the mremap
system call is missing.

Reported-by: Rebecca Cran <rebecca@bluestop.org>
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
---
 configure             | 41 ++++++++++++++++++++++++++++++++++++++++-
 hw/rdma/Makefile.objs |  2 +-
 2 files changed, 41 insertions(+), 2 deletions(-)

Comments

Thomas Huth Aug. 16, 2018, 9:17 a.m. UTC | #1
On 08/16/2018 11:06 AM, Marcel Apfelbaum wrote:
> In some BSD systems RDMA migration is possible while
> the pvrdma device can't be compiled because the mremap
> system call is missing.
> 
> Reported-by: Rebecca Cran <rebecca@bluestop.org>
> Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
> ---
>  configure             | 41 ++++++++++++++++++++++++++++++++++++++++-
>  hw/rdma/Makefile.objs |  2 +-
>  2 files changed, 41 insertions(+), 2 deletions(-)
[...]
> diff --git a/hw/rdma/Makefile.objs b/hw/rdma/Makefile.objs
> index 3504c39d21..bd36cbf51c 100644
> --- a/hw/rdma/Makefile.objs
> +++ b/hw/rdma/Makefile.objs
> @@ -1,4 +1,4 @@
> -ifeq ($(CONFIG_RDMA),y)
> +ifeq ($(CONFIG_PVRDMA),y)
>  obj-$(CONFIG_PCI) += rdma_utils.o rdma_backend.o rdma_rm.o
>  obj-$(CONFIG_PCI) += vmw/pvrdma_dev_ring.o vmw/pvrdma_cmd.o \
>                       vmw/pvrdma_qp_ops.o vmw/pvrdma_main.o

Shouldn't just the second line be guarded by CONFIG_PVRDMA ?

 Thomas
Peter Maydell Aug. 16, 2018, 9:21 a.m. UTC | #2
On 16 August 2018 at 10:06, Marcel Apfelbaum <marcel.apfelbaum@gmail.com> wrote:
> In some BSD systems RDMA migration is possible while
> the pvrdma device can't be compiled because the mremap
> system call is missing.
>
> Reported-by: Rebecca Cran <rebecca@bluestop.org>
> Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>

> +##########################################
> +# PVRDMA detection
> +
> +if test "$rdma" = "yes" ; then
> +    case "$pvrdma" in
> +    "")
> +        if test "$bsd" = "yes"; then
> +            pvrdma="no"
> +        else
> +            pvrdma="yes"
> +        fi

Please don't do tests against "which host OS is this?"
unless there is absolutely no other option. Prefer to
test for presence/absence of specific features (eg
"do we have mremap()?".

Otherwise you're likely to give the wrong answer
for other host OSes we have support for (Haiku,
Solaris) or other host OSes we add in future.

thanks
-- PMM
diff mbox series

Patch

diff --git a/configure b/configure
index 2a7796ea80..92591302d7 100755
--- a/configure
+++ b/configure
@@ -375,6 +375,7 @@  hax="no"
 hvf="no"
 whpx="no"
 rdma=""
+pvrdma=""
 gprof="no"
 debug_tcg="no"
 debug="no"
@@ -1363,6 +1364,10 @@  for opt do
   ;;
   --disable-rdma) rdma="no"
   ;;
+  --enable-pvrdma) pvrdma="yes"
+  ;;
+  --disable-pvrdma) pvrdma="no"
+  ;;
   --with-gtkabi=*) gtkabi="$optarg"
   ;;
   --disable-vte) vte="no"
@@ -1669,7 +1674,8 @@  disabled with --disable-FEATURE, default is enabled if available:
   hax             HAX acceleration support
   hvf             Hypervisor.framework acceleration support
   whpx            Windows Hypervisor Platform acceleration support
-  rdma            Enable RDMA-based migration and PVRDMA support
+  rdma            Enable RDMA-based migration
+  pvrdma          Enable PVRDMA support
   vde             support for vde network
   netmap          support for netmap network
   linux-aio       Linux AIO support
@@ -3064,6 +3070,34 @@  EOF
   fi
 fi
 
+##########################################
+# PVRDMA detection
+
+if test "$rdma" = "yes" ; then
+    case "$pvrdma" in
+    "")
+        if test "$bsd" = "yes"; then
+            pvrdma="no"
+        else
+            pvrdma="yes"
+        fi
+        ;;
+    "yes")
+        if test "$bsd" = "yes"; then
+            error_exit "PVRDMA is not supported for bsd"
+        fi
+        pvrdma="yes"
+        ;;
+    "no")
+        pvrdma="no"
+        ;;
+    esac
+else
+    if test "$pvrdma" = "yes" ; then
+        error_exit "PVRDMA requires rdma suppport"
+    fi
+    pvrdma="no"
+fi
 
 ##########################################
 # VNC SASL detection
@@ -5952,6 +5986,7 @@  if test "$tcg" = "yes" ; then
 fi
 echo "malloc trim support $malloc_trim"
 echo "RDMA support      $rdma"
+echo "PVRDMA support    $pvrdma"
 echo "fdt support       $fdt"
 echo "membarrier        $membarrier"
 echo "preadv support    $preadv"
@@ -6708,6 +6743,10 @@  if test "$rdma" = "yes" ; then
   echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak
 fi
 
+if test "$pvrdma" = "yes" ; then
+  echo "CONFIG_PVRDMA=y" >> $config_host_mak
+fi
+
 if test "$have_rtnetlink" = "yes" ; then
   echo "CONFIG_RTNETLINK=y" >> $config_host_mak
 fi
diff --git a/hw/rdma/Makefile.objs b/hw/rdma/Makefile.objs
index 3504c39d21..bd36cbf51c 100644
--- a/hw/rdma/Makefile.objs
+++ b/hw/rdma/Makefile.objs
@@ -1,4 +1,4 @@ 
-ifeq ($(CONFIG_RDMA),y)
+ifeq ($(CONFIG_PVRDMA),y)
 obj-$(CONFIG_PCI) += rdma_utils.o rdma_backend.o rdma_rm.o
 obj-$(CONFIG_PCI) += vmw/pvrdma_dev_ring.o vmw/pvrdma_cmd.o \
                      vmw/pvrdma_qp_ops.o vmw/pvrdma_main.o