DPDK patches and discussions
 help / color / mirror / Atom feed
From: Adrien Mazarguil <adrien.mazarguil@6wind.com>
To: Shahaf Shuler <shahafs@mellanox.com>
Cc: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>,
	dev@dpdk.org, Marcelo Ricardo Leitner <mleitner@redhat.com>
Subject: [dpdk-dev] [PATCH v3 0/4] net/mlx: make rdma-core optional at run-time
Date: Mon, 29 Jan 2018 18:19:45 +0100	[thread overview]
Message-ID: <20180129170310.14142-1-adrien.mazarguil@6wind.com> (raw)
In-Reply-To: <20180126141215.30395-1-adrien.mazarguil@6wind.com>

A problem encountered with Mellanox PMDs and frequently reported by DPDK
application developers and Linux distribution package maintainers is their
dependency on rdma-core components, namely libibverbs, libmlx4, and libmlx5.

For best performance in applications, DPDK is normally built as a collection
of library archives (.a files), whose external dependencies are inherited
through rte.app.mk during link.

When these PMDs are built-in, any binary DPDK package, whether DPDK itself
or derived applications, always have to pull rdma-core. This dependency is
not obvious and may be missed during the packaging of any intermediate layer
between DPDK itself and the end application.

While still required during compilation, this series trades this hard
dependency for an optional one, dynamically loaded at run-time through
dlopen().

It supersedes Shachar's previous work on the same topic [1] using a
different approach in order to preserve symbol versioning and address
the remaining issues.

[1] http://dpdk.org/ml/archives/dev/2017-December/085090.html

v3 changes:

- Rebased on dpdk-next-net-mlx.
- Modified patches to generate mlx4/mlx5 glue objects as independent
  libraries to install on the target system (they are not generated at run
  time anymore) in order to address security concerns.
- As a consequence, glue libraries generation is now disabled by default and
  binary distributions must take care of properly packaging them if enabled.

v2 changes:

- Rebased on dpdk-next-net-mlx.
- Rely on CONFIG_RTE_LIBRTE_MLX[45]_DLOPEN_DEPS instead of
  CONFIG_RTE_BUILD_SHARED_LIB to enable this mode, so it can be overridden
  if necessary.
- Fixed -lmlx5 -libibverbs leftovers in rte.app.mk.
- Minor fixes for indentation and unnecessary includes in mlx5.

Adrien Mazarguil (3):
  net/mlx4: move rdma-core calls to separate file
  net/mlx4: spawn rdma-core dependency plug-in
  net/mlx5: spawn rdma-core dependency plug-in

Nelio Laranjeiro (1):
  net/mlx5: move rdma-core calls to separate file

 config/common_base             |   2 +
 doc/guides/nics/mlx4.rst       |  13 ++
 doc/guides/nics/mlx5.rst       |  13 ++
 drivers/net/mlx4/Makefile      |  30 ++++
 drivers/net/mlx4/mlx4.c        |  84 ++++++++--
 drivers/net/mlx4/mlx4_ethdev.c |   3 +-
 drivers/net/mlx4/mlx4_flow.c   |  32 ++--
 drivers/net/mlx4/mlx4_glue.c   | 275 ++++++++++++++++++++++++++++++
 drivers/net/mlx4/mlx4_glue.h   |  80 +++++++++
 drivers/net/mlx4/mlx4_intr.c   |  10 +-
 drivers/net/mlx4/mlx4_mr.c     |   7 +-
 drivers/net/mlx4/mlx4_rxq.c    |  53 +++---
 drivers/net/mlx4/mlx4_txq.c    |  17 +-
 drivers/net/mlx5/Makefile      |  30 ++++
 drivers/net/mlx5/mlx5.c        |  92 ++++++++---
 drivers/net/mlx5/mlx5_ethdev.c |   7 +-
 drivers/net/mlx5/mlx5_flow.c   |  92 +++++------
 drivers/net/mlx5/mlx5_glue.c   | 321 ++++++++++++++++++++++++++++++++++++
 drivers/net/mlx5/mlx5_glue.h   |  99 +++++++++++
 drivers/net/mlx5/mlx5_mr.c     |   7 +-
 drivers/net/mlx5/mlx5_rxq.c    |  54 +++---
 drivers/net/mlx5/mlx5_txq.c    |  22 +--
 drivers/net/mlx5/mlx5_vlan.c   |  13 +-
 mk/rte.app.mk                  |   8 +
 24 files changed, 1179 insertions(+), 185 deletions(-)
 create mode 100644 drivers/net/mlx4/mlx4_glue.c
 create mode 100644 drivers/net/mlx4/mlx4_glue.h
 create mode 100644 drivers/net/mlx5/mlx5_glue.c
 create mode 100644 drivers/net/mlx5/mlx5_glue.h

-- 
2.11.0

  parent reply	other threads:[~2018-01-29 17:19 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-24 23:24 [dpdk-dev] [PATCH v1 " Adrien Mazarguil
2018-01-24 23:25 ` [dpdk-dev] [PATCH v1 1/4] net/mlx4: move rdma-core calls to separate file Adrien Mazarguil
2018-01-24 23:58   ` Stephen Hemminger
2018-01-25 11:31     ` Adrien Mazarguil
2018-01-24 23:25 ` [dpdk-dev] [PATCH v1 2/4] net/mlx4: spawn rdma-core dependency plug-in Adrien Mazarguil
2018-01-26 10:06   ` Thomas Monjalon
2018-01-24 23:25 ` [dpdk-dev] [PATCH v1 3/4] net/mlx5: move rdma-core calls to separate file Adrien Mazarguil
2018-01-24 23:25 ` [dpdk-dev] [PATCH v1 4/4] net/mlx5: spawn rdma-core dependency plug-in Adrien Mazarguil
2018-01-26 14:18 ` [dpdk-dev] [PATCH v2 0/4] net/mlx: make rdma-core optional at run-time Adrien Mazarguil
2018-01-26 14:18   ` [dpdk-dev] [PATCH v2 1/4] net/mlx4: move rdma-core calls to separate file Adrien Mazarguil
2018-01-26 14:19   ` [dpdk-dev] [PATCH v2 2/4] net/mlx4: spawn rdma-core dependency plug-in Adrien Mazarguil
2018-01-27 15:03     ` Marcelo Ricardo Leitner
2018-01-28  9:04       ` Shahaf Shuler
2018-01-28 11:17         ` Marcelo Ricardo Leitner
2018-01-28 11:46           ` Shahaf Shuler
2018-01-26 14:19   ` [dpdk-dev] [PATCH v2 3/4] net/mlx5: move rdma-core calls to separate file Adrien Mazarguil
2018-01-26 14:19   ` [dpdk-dev] [PATCH v2 4/4] net/mlx5: spawn rdma-core dependency plug-in Adrien Mazarguil
2018-01-26 15:58   ` [dpdk-dev] [PATCH v2 0/4] net/mlx: make rdma-core optional at run-time Nélio Laranjeiro
2018-01-29 17:19   ` Adrien Mazarguil [this message]
2018-01-29 17:19     ` [dpdk-dev] [PATCH v3 1/4] net/mlx4: move rdma-core calls to separate file Adrien Mazarguil
2018-01-29 17:19     ` [dpdk-dev] [PATCH v3 2/4] net/mlx4: spawn rdma-core dependency plug-in Adrien Mazarguil
2018-01-29 17:19     ` [dpdk-dev] [PATCH v3 3/4] net/mlx5: move rdma-core calls to separate file Adrien Mazarguil
2018-01-29 17:19     ` [dpdk-dev] [PATCH v3 4/4] net/mlx5: spawn rdma-core dependency plug-in Adrien Mazarguil
2018-01-30 15:34     ` [dpdk-dev] [PATCH v4 0/4] net/mlx: make rdma-core optional at run-time Adrien Mazarguil
2018-01-30 15:34       ` [dpdk-dev] [PATCH v4 1/4] net/mlx4: move rdma-core calls to separate file Adrien Mazarguil
2018-01-30 15:34       ` [dpdk-dev] [PATCH v4 2/4] net/mlx4: spawn rdma-core dependency plug-in Adrien Mazarguil
2018-01-30 17:54         ` Marcelo Ricardo Leitner
2018-01-30 18:32           ` Adrien Mazarguil
2018-01-30 15:34       ` [dpdk-dev] [PATCH v4 3/4] net/mlx5: move rdma-core calls to separate file Adrien Mazarguil
2018-01-30 15:34       ` [dpdk-dev] [PATCH v4 4/4] net/mlx5: spawn rdma-core dependency plug-in Adrien Mazarguil
2018-01-31 10:13       ` [dpdk-dev] [PATCH v4 0/4] net/mlx: make rdma-core optional at run-time Shahaf Shuler

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180129170310.14142-1-adrien.mazarguil@6wind.com \
    --to=adrien.mazarguil@6wind.com \
    --cc=dev@dpdk.org \
    --cc=mleitner@redhat.com \
    --cc=nelio.laranjeiro@6wind.com \
    --cc=shahafs@mellanox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).