config: split PVRDMA from RDMA

In some BSD systems RDMA migration is possible while
the pvrdma device can't be used because the mremap system call
is missing.

Reported-by: Rebecca Cran <rebecca@bluestop.org>
Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
Message-Id: <20180816151637.24553-1-marcel.apfelbaum@gmail.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
Marcel Apfelbaum 2018-08-16 18:16:37 +03:00
parent 72221d03b8
commit 21ab34c954
2 changed files with 55 additions and 2 deletions

55
configure vendored
View File

@ -375,6 +375,7 @@ hax="no"
hvf="no" hvf="no"
whpx="no" whpx="no"
rdma="" rdma=""
pvrdma=""
gprof="no" gprof="no"
debug_tcg="no" debug_tcg="no"
debug="no" debug="no"
@ -1363,6 +1364,10 @@ for opt do
;; ;;
--disable-rdma) rdma="no" --disable-rdma) rdma="no"
;; ;;
--enable-pvrdma) pvrdma="yes"
;;
--disable-pvrdma) pvrdma="no"
;;
--with-gtkabi=*) gtkabi="$optarg" --with-gtkabi=*) gtkabi="$optarg"
;; ;;
--disable-vte) vte="no" --disable-vte) vte="no"
@ -1669,7 +1674,8 @@ disabled with --disable-FEATURE, default is enabled if available:
hax HAX acceleration support hax HAX acceleration support
hvf Hypervisor.framework acceleration support hvf Hypervisor.framework acceleration support
whpx Windows Hypervisor Platform 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 vde support for vde network
netmap support for netmap network netmap support for netmap network
linux-aio Linux AIO support linux-aio Linux AIO support
@ -3064,6 +3070,48 @@ EOF
fi fi
fi fi
##########################################
# PVRDMA detection
cat > $TMPC <<EOF &&
#include <sys/mman.h>
int
main(void)
{
char buf = 0;
void *addr = &buf;
addr = mremap(addr, 0, 1, MREMAP_MAYMOVE | MREMAP_FIXED);
return 0;
}
EOF
if test "$rdma" = "yes" ; then
case "$pvrdma" in
"")
if compile_prog "" ""; then
pvrdma="yes"
else
pvrdma="no"
fi
;;
"yes")
if ! compile_prog "" ""; then
error_exit "PVRDMA is not supported since mremap is not implemented"
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 # VNC SASL detection
@ -5952,6 +6000,7 @@ if test "$tcg" = "yes" ; then
fi fi
echo "malloc trim support $malloc_trim" echo "malloc trim support $malloc_trim"
echo "RDMA support $rdma" echo "RDMA support $rdma"
echo "PVRDMA support $pvrdma"
echo "fdt support $fdt" echo "fdt support $fdt"
echo "membarrier $membarrier" echo "membarrier $membarrier"
echo "preadv support $preadv" echo "preadv support $preadv"
@ -6708,6 +6757,10 @@ if test "$rdma" = "yes" ; then
echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak
fi fi
if test "$pvrdma" = "yes" ; then
echo "CONFIG_PVRDMA=y" >> $config_host_mak
fi
if test "$have_rtnetlink" = "yes" ; then if test "$have_rtnetlink" = "yes" ; then
echo "CONFIG_RTNETLINK=y" >> $config_host_mak echo "CONFIG_RTNETLINK=y" >> $config_host_mak
fi fi

View File

@ -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) += rdma_utils.o rdma_backend.o rdma_rm.o
obj-$(CONFIG_PCI) += vmw/pvrdma_dev_ring.o vmw/pvrdma_cmd.o \ obj-$(CONFIG_PCI) += vmw/pvrdma_dev_ring.o vmw/pvrdma_cmd.o \
vmw/pvrdma_qp_ops.o vmw/pvrdma_main.o vmw/pvrdma_qp_ops.o vmw/pvrdma_main.o