From f3262a2dd0fd788b5ef3fc9592de17ef8bcbd897 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Beno=C3=AEt=20Ganne?= Date: Mon, 8 Apr 2019 13:45:33 +0200 Subject: [PATCH] rdma: fix DPDK MLX driver conflict MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 --- build/external/packages/dpdk.mk | 3 +-- build/external/packages/rdma-core.mk | 2 +- src/plugins/dpdk/CMakeLists.txt | 6 +----- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/build/external/packages/dpdk.mk b/build/external/packages/dpdk.mk index ae9d9c5df95..a551151bba7 100644 --- a/build/external/packages/dpdk.mk +++ b/build/external/packages/dpdk.mk @@ -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)) diff --git a/build/external/packages/rdma-core.mk b/build/external/packages/rdma-core.mk index 82a5f0fbdb0..9961c80364f 100644 --- a/build/external/packages/rdma-core.mk +++ b/build/external/packages/rdma-core.mk @@ -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 diff --git a/src/plugins/dpdk/CMakeLists.txt b/src/plugins/dpdk/CMakeLists.txt index 1818adaea61..b743d599286 100644 --- a/src/plugins/dpdk/CMakeLists.txt +++ b/src/plugins/dpdk/CMakeLists.txt @@ -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() -- 2.16.6