rdma: fix DPDK MLX driver conflict 41/18741/2
authorBenoît Ganne <bganne@cisco.com>
Mon, 8 Apr 2019 11:45:33 +0000 (13:45 +0200)
committerDave Wallace <dwallacelf@gmail.com>
Mon, 8 Apr 2019 14:33:51 +0000 (14:33 +0000)
VPP rdma driver relies on an internal rdma-core not compatible with DPDK
MLX driver. Force the use of external rdma-core through
RTE_IBVERBS_LINK_DLOPEN DPDK build option and make sure internal
rdma-core symbols are not leaked outside of the rdma plugin.

Change-Id: I5b2281259f517c4e109d388d172b72eadd69986f
Signed-off-by: Benoît Ganne <bganne@cisco.com>
build/external/packages/dpdk.mk
build/external/packages/rdma-core.mk
src/plugins/dpdk/CMakeLists.txt

index ae9d9c5..a551151 100644 (file)
@@ -17,7 +17,6 @@ DPDK_DOWNLOAD_DIR            ?= $(DL_CACHE_DIR)
 DPDK_DEBUG                   ?= n
 DPDK_MLX4_PMD                ?= n
 DPDK_MLX5_PMD                ?= n
-DPDK_MLX_IBVERBS_DLOPEN      ?= n
 DPDK_TAP_PMD                 ?= n
 DPDK_FAILSAFE_PMD            ?= n
 
@@ -189,7 +188,7 @@ $(B)/custom-config: $(B)/.dpdk-patch.ok Makefile
        $(call set,RTE_LIBRTE_MLX4_PMD,$(DPDK_MLX4_PMD))
        $(call set,RTE_LIBRTE_MLX5_PMD,$(DPDK_MLX5_PMD))
        $(call set,RTE_LIBRTE_PMD_SOFTNIC,n)
-       $(call set,RTE_IBVERBS_LINK_DLOPEN,$(DPDK_MLX_IBVERBS_DLOPEN))
+       $(call set,RTE_IBVERBS_LINK_DLOPEN,y)
        $(call set,RTE_LIBRTE_PMD_TAP,$(DPDK_TAP_PMD))
        $(call set,RTE_LIBRTE_GSO,$(DPDK_TAP_PMD))
        $(call set,RTE_LIBRTE_PMD_FAILSAFE,$(DPDK_FAILSAFE_PMD))
index 82a5f0f..9961c80 100644 (file)
@@ -31,7 +31,7 @@ define  rdma-core_config_cmds
          $(CMAKE) -G Ninja $(rdma-core_src_dir) \
            -DENABLE_STATIC=1 -DENABLE_RESOLVE_NEIGH=0 -DNO_PYVERBS=1 -DENABLE_VALGRIND=0 \
            -DCMAKE_BUILD_TYPE=Release \
-           -DCMAKE_C_FLAGS=-fPIC > $(rdma-core_config_log)
+           -DCMAKE_C_FLAGS='-fPIC -fvisibility=hidden' > $(rdma-core_config_log)
 endef
 
 define  rdma-core_build_cmds
index 1818ada..b743d59 100644 (file)
@@ -106,11 +106,7 @@ if(DPDK_RTE_LIBRTE_MLX4_PMD OR DPDK_RTE_LIBRTE_MLX5_PMD)
   if (DPDK_RTE_IBVERBS_LINK_DLOPEN)
     message(STATUS "DPDK depends on libmnl (Mellanox PMD requirement)")
   else()
-    vpp_plugin_find_library(dpdk IBVERBS_LIB "ibverbs")
-    list(APPEND DPDK_LINK_LIBRARIES "${IBVERBS_LIB}")
-    vpp_plugin_find_library(dpdk MLX5_LIB "mlx5")
-    list(APPEND DPDK_LINK_LIBRARIES "${MLX5_LIB}")
-    message(STATUS "DPDK depends on libmnl, libibverbs, libmlx5 (Mellanox PMD requirement)")
+    message(WARNING "unsupported DPDK configuration: DPDK Mellanox PMD requires RTE_IBVERBS_LINK_DLOPEN")
   endif()
 endif()