Wednesday, January 9, 2019 4:23 PM, Thomas Monjalon: > Subject: [PATCH v2 1/2] config: gather options for dlopen mlx dependency > > Rename options CONFIG_RTE_LIBRTE_MLX4_DLOPEN_DEPS and > CONFIG_RTE_LIBRTE_MLX5_DLOPEN_DEPS to a single option > CONFIG_RTE_IBVERBS_LINK_DLOPEN. > Rename meson option enable_driver_mlx_glue to ibverbs_link. > > There was no good reason for setting a different link option for mlx4 and > mlx5. > Having a single common option makes it easier to understand and unify make > and meson systems. > > Signed-off-by: Thomas Monjalon <tho...@monjalon.net> > Acked-by: Shahaf Shuler <shah...@mellanox.com>
Applied to next-net-mlx with replacement of the v1. Thanks. > --- > v2: use "combo" option type (Bruce review) > --- > config/common_base | 7 +++++-- > doc/guides/nics/mlx4.rst | 4 ++-- > doc/guides/nics/mlx5.rst | 4 ++-- > drivers/net/mlx4/Makefile | 8 ++++---- > drivers/net/mlx4/meson.build | 4 ++-- > drivers/net/mlx4/mlx4.c | 4 ++-- > drivers/net/mlx5/Makefile | 8 ++++---- > drivers/net/mlx5/meson.build | 4 ++-- > drivers/net/mlx5/mlx5.c | 4 ++-- > meson_options.txt | 4 ++-- > mk/rte.app.mk | 15 +++++++-------- > 11 files changed, 34 insertions(+), 32 deletions(-) > > diff --git a/config/common_base b/config/common_base index > 964a6956e..37f692ce1 100644 > --- a/config/common_base > +++ b/config/common_base > @@ -320,7 +320,6 @@ CONFIG_RTE_LIBRTE_AVF_16BYTE_RX_DESC=n > # > CONFIG_RTE_LIBRTE_MLX4_PMD=n > CONFIG_RTE_LIBRTE_MLX4_DEBUG=n > -CONFIG_RTE_LIBRTE_MLX4_DLOPEN_DEPS=n > > # > # Compile burst-oriented Mellanox ConnectX-4, ConnectX-5, @@ -328,7 > +327,11 @@ CONFIG_RTE_LIBRTE_MLX4_DLOPEN_DEPS=n > # > CONFIG_RTE_LIBRTE_MLX5_PMD=n > CONFIG_RTE_LIBRTE_MLX5_DEBUG=n > -CONFIG_RTE_LIBRTE_MLX5_DLOPEN_DEPS=n > + > +# Linking method for mlx4/5 dependency on ibverbs and related libraries > +# Default linking is dynamic by linker. > +# Other option is dynamic by dlopen at run-time. > +CONFIG_RTE_IBVERBS_LINK_DLOPEN=n > > # > # Compile burst-oriented Netronome NFP PMD driver diff --git > a/doc/guides/nics/mlx4.rst b/doc/guides/nics/mlx4.rst index > 5326d916e..88d467a23 100644 > --- a/doc/guides/nics/mlx4.rst > +++ b/doc/guides/nics/mlx4.rst > @@ -60,7 +60,7 @@ These options can be modified in the ``.config`` file. > > Toggle compilation of librte_pmd_mlx4 itself. > > -- ``CONFIG_RTE_LIBRTE_MLX4_DLOPEN_DEPS`` (default **n**) > +- ``CONFIG_RTE_IBVERBS_LINK_DLOPEN`` (default **n**) > > Build PMD with additional code to make it loadable without hard > dependencies on **libibverbs** nor **libmlx4**, which may not be installed > @@ -93,7 +93,7 @@ Environment variables > A list of directories in which to search for the rdma-core "glue" plug-in, > separated by colons or semi-colons. > > - Only matters when compiled with > ``CONFIG_RTE_LIBRTE_MLX4_DLOPEN_DEPS`` > + Only matters when compiled with ``CONFIG_RTE_IBVERBS_LINK_DLOPEN`` > enabled and most useful when ``CONFIG_RTE_EAL_PMD_PATH`` is also set, > since ``LD_LIBRARY_PATH`` has no effect in this case. > > diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst index > add8bc1ed..749acd222 100644 > --- a/doc/guides/nics/mlx5.rst > +++ b/doc/guides/nics/mlx5.rst > @@ -191,7 +191,7 @@ These options can be modified in the ``.config`` file. > > Toggle compilation of librte_pmd_mlx5 itself. > > -- ``CONFIG_RTE_LIBRTE_MLX5_DLOPEN_DEPS`` (default **n**) > +- ``CONFIG_RTE_IBVERBS_LINK_DLOPEN`` (default **n**) > > Build PMD with additional code to make it loadable without hard > dependencies on **libibverbs** nor **libmlx5**, which may not be installed > @@ -224,7 +224,7 @@ Environment variables > A list of directories in which to search for the rdma-core "glue" plug-in, > separated by colons or semi-colons. > > - Only matters when compiled with > ``CONFIG_RTE_LIBRTE_MLX5_DLOPEN_DEPS`` > + Only matters when compiled with ``CONFIG_RTE_IBVERBS_LINK_DLOPEN`` > enabled and most useful when ``CONFIG_RTE_EAL_PMD_PATH`` is also set, > since ``LD_LIBRARY_PATH`` has no effect in this case. > > diff --git a/drivers/net/mlx4/Makefile b/drivers/net/mlx4/Makefile index > 92e932250..724a4dcbc 100644 > --- a/drivers/net/mlx4/Makefile > +++ b/drivers/net/mlx4/Makefile > @@ -14,7 +14,7 @@ LIB_GLUE_VERSION = 18.02.0 > SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4.c > SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_ethdev.c > SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_flow.c -ifneq > ($(CONFIG_RTE_LIBRTE_MLX4_DLOPEN_DEPS),y) > +ifneq ($(CONFIG_RTE_IBVERBS_LINK_DLOPEN),y) > SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_glue.c endif > SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_intr.c @@ -24,7 +24,7 > @@ SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_rxtx.c > SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_txq.c > SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_utils.c > > -ifeq ($(CONFIG_RTE_LIBRTE_MLX4_DLOPEN_DEPS),y) > +ifeq ($(CONFIG_RTE_IBVERBS_LINK_DLOPEN),y) > INSTALL-$(CONFIG_RTE_LIBRTE_MLX4_PMD)-lib += $(LIB_GLUE) endif > > @@ -38,7 +38,7 @@ CFLAGS += -D_DEFAULT_SOURCE CFLAGS += - > D_XOPEN_SOURCE=600 CFLAGS += $(WERROR_FLAGS) CFLAGS += - > DALLOW_EXPERIMENTAL_API -ifeq > ($(CONFIG_RTE_LIBRTE_MLX4_DLOPEN_DEPS),y) > +ifeq ($(CONFIG_RTE_IBVERBS_LINK_DLOPEN),y) > CFLAGS += -DMLX4_GLUE='"$(LIB_GLUE)"' > CFLAGS += -DMLX4_GLUE_VERSION='"$(LIB_GLUE_VERSION)"' > CFLAGS_mlx4_glue.o += -fPIC > @@ -103,7 +103,7 @@ $(SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD):.c=.o): > mlx4_autoconf.h # Generate dependency plug-in for rdma-core when the PMD > must not be linked # directly, so that applications do not inherit this > dependency. > > -ifeq ($(CONFIG_RTE_LIBRTE_MLX4_DLOPEN_DEPS),y) > +ifeq ($(CONFIG_RTE_IBVERBS_LINK_DLOPEN),y) > > $(LIB): $(LIB_GLUE) > > diff --git a/drivers/net/mlx4/meson.build b/drivers/net/mlx4/meson.build index > 7de571e2a..4bccd68e0 100644 > --- a/drivers/net/mlx4/meson.build > +++ b/drivers/net/mlx4/meson.build > @@ -2,12 +2,12 @@ > # Copyright 2018 6WIND S.A. > # Copyright 2018 Mellanox Technologies, Ltd > > -pmd_dlopen = get_option('enable_driver_mlx_glue') > +pmd_dlopen = (get_option('ibverbs_link') == 'dlopen') > LIB_GLUE_BASE = 'librte_pmd_mlx4_glue.so' > LIB_GLUE_VERSION = '18.02.0' > LIB_GLUE = LIB_GLUE_BASE + '.' + LIB_GLUE_VERSION if pmd_dlopen > - dpdk_conf.set('RTE_LIBRTE_MLX4_DLOPEN_DEPS', 1) > + dpdk_conf.set('RTE_IBVERBS_LINK_DLOPEN', 1) > cflags += [ > '-DMLX4_GLUE="@0@"'.format(LIB_GLUE), > '- > DMLX4_GLUE_VERSION="@0@"'.format(LIB_GLUE_VERSION), > diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c index > 7f07b8dc0..070cf7111 100644 > --- a/drivers/net/mlx4/mlx4.c > +++ b/drivers/net/mlx4/mlx4.c > @@ -838,7 +838,7 @@ static struct rte_pci_driver mlx4_driver = { > RTE_PCI_DRV_INTR_RMV, > }; > > -#ifdef RTE_LIBRTE_MLX4_DLOPEN_DEPS > +#ifdef RTE_IBVERBS_LINK_DLOPEN > > /** > * Suffix RTE_EAL_PMD_PATH with "-glue". > @@ -986,7 +986,7 @@ RTE_INIT(rte_mlx4_pmd_init) > * using this PMD, which is not supported in forked processes. > */ > setenv("RDMAV_HUGEPAGES_SAFE", "1", 1); -#ifdef > RTE_LIBRTE_MLX4_DLOPEN_DEPS > +#ifdef RTE_IBVERBS_LINK_DLOPEN > if (mlx4_glue_init()) > return; > assert(mlx4_glue); > diff --git a/drivers/net/mlx5/Makefile b/drivers/net/mlx5/Makefile index > 1353c1827..47a7f4d68 100644 > --- a/drivers/net/mlx5/Makefile > +++ b/drivers/net/mlx5/Makefile > @@ -12,7 +12,7 @@ LIB_GLUE_VERSION = 19.02.0 > > # Sources. > SRCS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += mlx5.c -ifneq > ($(CONFIG_RTE_LIBRTE_MLX5_DLOPEN_DEPS),y) > +ifneq ($(CONFIG_RTE_IBVERBS_LINK_DLOPEN),y) > SRCS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += mlx5_glue.c endif > SRCS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += mlx5_rxq.c @@ -37,7 +37,7 @@ > SRCS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += mlx5_flow_verbs.c > SRCS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += mlx5_socket.c > SRCS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += mlx5_nl.c > > -ifeq ($(CONFIG_RTE_LIBRTE_MLX5_DLOPEN_DEPS),y) > +ifeq ($(CONFIG_RTE_IBVERBS_LINK_DLOPEN),y) > INSTALL-$(CONFIG_RTE_LIBRTE_MLX5_PMD)-lib += $(LIB_GLUE) endif > > @@ -52,7 +52,7 @@ CFLAGS += -D_XOPEN_SOURCE=600 CFLAGS += > $(WERROR_FLAGS) CFLAGS += -Wno-strict-prototypes CFLAGS += $(shell > command -v pkg-config > /dev/null 2>&1 && pkg-config --cflags libmnl) -ifeq > ($(CONFIG_RTE_LIBRTE_MLX5_DLOPEN_DEPS),y) > +ifeq ($(CONFIG_RTE_IBVERBS_LINK_DLOPEN),y) > CFLAGS += -DMLX5_GLUE='"$(LIB_GLUE)"' > CFLAGS += -DMLX5_GLUE_VERSION='"$(LIB_GLUE_VERSION)"' > CFLAGS_mlx5_glue.o += -fPIC > @@ -525,7 +525,7 @@ $(SRCS-$(CONFIG_RTE_LIBRTE_MLX5_PMD):.c=.o): > mlx5_autoconf.h # Generate dependency plug-in for rdma-core when the PMD > must not be linked # directly, so that applications do not inherit this > dependency. > > -ifeq ($(CONFIG_RTE_LIBRTE_MLX5_DLOPEN_DEPS),y) > +ifeq ($(CONFIG_RTE_IBVERBS_LINK_DLOPEN),y) > > $(LIB): $(LIB_GLUE) > > diff --git a/drivers/net/mlx5/meson.build b/drivers/net/mlx5/meson.build index > 8ba19e818..a1130d610 100644 > --- a/drivers/net/mlx5/meson.build > +++ b/drivers/net/mlx5/meson.build > @@ -2,12 +2,12 @@ > # Copyright 2018 6WIND S.A. > # Copyright 2018 Mellanox Technologies, Ltd > > -pmd_dlopen = get_option('enable_driver_mlx_glue') > +pmd_dlopen = (get_option('ibverbs_link') == 'dlopen') > LIB_GLUE_BASE = 'librte_pmd_mlx5_glue.so' > LIB_GLUE_VERSION = '19.02.0' > LIB_GLUE = LIB_GLUE_BASE + '.' + LIB_GLUE_VERSION if pmd_dlopen > - dpdk_conf.set('RTE_LIBRTE_MLX5_DLOPEN_DEPS', 1) > + dpdk_conf.set('RTE_IBVERBS_LINK_DLOPEN', 1) > cflags += [ > '-DMLX5_GLUE="@0@"'.format(LIB_GLUE), > '- > DMLX5_GLUE_VERSION="@0@"'.format(LIB_GLUE_VERSION), > diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c index > 45210451d..f111e6ef8 100644 > --- a/drivers/net/mlx5/mlx5.c > +++ b/drivers/net/mlx5/mlx5.c > @@ -1609,7 +1609,7 @@ static struct rte_pci_driver mlx5_driver = { > RTE_PCI_DRV_PROBE_AGAIN), > }; > > -#ifdef RTE_LIBRTE_MLX5_DLOPEN_DEPS > +#ifdef RTE_IBVERBS_LINK_DLOPEN > > /** > * Suffix RTE_EAL_PMD_PATH with "-glue". > @@ -1770,7 +1770,7 @@ RTE_INIT(rte_mlx5_pmd_init) > * cleanup all the Verbs resources even when the device was removed. > */ > setenv("MLX5_DEVICE_FATAL_CLEANUP", "1", 1); -#ifdef > RTE_LIBRTE_MLX5_DLOPEN_DEPS > +#ifdef RTE_IBVERBS_LINK_DLOPEN > if (mlx5_glue_init()) > return; > assert(mlx5_glue); > diff --git a/meson_options.txt b/meson_options.txt index > 10b541615..574054597 100644 > --- a/meson_options.txt > +++ b/meson_options.txt > @@ -2,8 +2,8 @@ option('allow_invalid_socket_id', type: 'boolean', value: > false, > description: 'allow out-of-range NUMA socket id\'s for platforms that > don\'t report the value correctly') option('drivers_install_subdir', type: > 'string', > value: 'dpdk/pmds-<VERSION>', > description: 'Subdirectory of libdir where to install PMDs. Defaults to > using a versioned subdirectory.') -option('enable_driver_mlx_glue', type: > 'boolean', value: false, > - description: 'Enable glue library for Mellanox PMDs') > +option('ibverbs_link', type: 'combo', choices : ['shared', 'dlopen'], value: > 'shared', > + description: 'Linkage method (shared/dlopen) for Mellanox PMDs with > +ibverbs dependencies.') > option('enable_kmods', type: 'boolean', value: true, > description: 'build kernel modules') > option('enable_docs', type: 'boolean', value: false, diff --git > a/mk/rte.app.mk > b/mk/rte.app.mk index 02e8b6f05..d5b1ec6b7 100644 > --- a/mk/rte.app.mk > +++ b/mk/rte.app.mk > @@ -169,15 +169,14 @@ ifeq ($(CONFIG_RTE_LIBRTE_KNI),y) > _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_KNI) += -lrte_pmd_kni > endif > _LDLIBS-$(CONFIG_RTE_LIBRTE_LIO_PMD) += -lrte_pmd_lio > -ifeq ($(CONFIG_RTE_LIBRTE_MLX4_DLOPEN_DEPS),y) > -_LDLIBS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += -lrte_pmd_mlx4 -ldl > +_LDLIBS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += -lrte_pmd_mlx4 > +_LDLIBS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += -lrte_pmd_mlx5 -lmnl > +ifeq ($(CONFIG_RTE_IBVERBS_LINK_DLOPEN),y) > +_LDLIBS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += -ldl > +_LDLIBS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += -ldl > else > -_LDLIBS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += -lrte_pmd_mlx4 -libverbs > -lmlx4 > -endif > -ifeq ($(CONFIG_RTE_LIBRTE_MLX5_DLOPEN_DEPS),y) > -_LDLIBS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += -lrte_pmd_mlx5 -ldl -lmnl > -else > -_LDLIBS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += -lrte_pmd_mlx5 -libverbs > -lmlx5 -lmnl > +_LDLIBS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += -libverbs -lmlx4 > +_LDLIBS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += -libverbs -lmlx5 > endif > _LDLIBS-$(CONFIG_RTE_LIBRTE_MVPP2_PMD) += -lrte_pmd_mvpp2 > _LDLIBS-$(CONFIG_RTE_LIBRTE_MVNETA_PMD) += -lrte_pmd_mvneta > -- > 2.20.1