patches for DPDK stable branches
 help / color / mirror / Atom feed
From: Kevin Traynor <ktraynor@redhat.com>
To: Gregory Etelson <getelson@nvidia.com>
Cc: Matan Azrad <matan@nvidia.com>, dpdk stable <stable@dpdk.org>
Subject: patch 'common/mlx5: fix shared mempool subscription' has been queued to stable release 21.11.3
Date: Wed, 23 Nov 2022 18:03:26 +0000	[thread overview]
Message-ID: <20221123180413.733554-13-ktraynor@redhat.com> (raw)
In-Reply-To: <20221123180413.733554-1-ktraynor@redhat.com>

Hi,

FYI, your patch has been queued to stable release 21.11.3

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/28/22. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.

Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable

This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/bbddde24b26ec976c7249f5c7dc81eb4fd567116

Thanks.

Kevin

---
From bbddde24b26ec976c7249f5c7dc81eb4fd567116 Mon Sep 17 00:00:00 2001
From: Gregory Etelson <getelson@nvidia.com>
Date: Thu, 3 Nov 2022 12:44:27 +0200
Subject: [PATCH] common/mlx5: fix shared mempool subscription

[ upstream commit aeca11f82a2f13c19e320dd337f4aa9627545c99 ]

MLX5 PMD counted each mempool subscribe invocation. The PMD expected
that the mempool subscription will be deleted after the mempool
counter dropped to 0. However, current PMD design unsubscribes mempool
callbacks only once.
As the result, the PMD destroyed mlx5_common_device but kept
shared RX subscription callback. EAL tried to activate that callback
and crashed.

The patch removes mempool subscriptions counter.
The PMD registers mempool subscription once only. An attempt
to register existing subscription returns EEXIST.
Also, the PMD expects to remove subscription when mempool unsubscribe
was activated.

Fixes: 8ad97e4b3215 ("common/mlx5: fix multi-process mempool registration")

Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Matan Azrad <matan@nvidia.com>
---
 drivers/common/mlx5/mlx5_common.c    | 22 +++++++++++-----------
 drivers/common/mlx5/mlx5_common_mr.c |  1 -
 drivers/common/mlx5/mlx5_common_mr.h |  1 -
 3 files changed, 11 insertions(+), 13 deletions(-)

diff --git a/drivers/common/mlx5/mlx5_common.c b/drivers/common/mlx5/mlx5_common.c
index 2634661fd3..f355b3d741 100644
--- a/drivers/common/mlx5/mlx5_common.c
+++ b/drivers/common/mlx5/mlx5_common.c
@@ -410,4 +410,9 @@ mlx5_dev_mempool_event_cb(enum rte_mempool_event event, struct rte_mempool *mp,
 }
 
+/**
+ * Primary and secondary processes share the `cdev` pointer.
+ * Callbacks addresses are local in each process.
+ * Therefore, each process can register private callbacks.
+ */
 int
 mlx5_dev_mempool_subscribe(struct mlx5_common_device *cdev)
@@ -421,12 +426,11 @@ mlx5_dev_mempool_subscribe(struct mlx5_common_device *cdev)
 	ret = rte_mempool_event_callback_register(mlx5_dev_mempool_event_cb,
 						  cdev);
-	if (ret != 0 && rte_errno != EEXIST)
-		goto exit;
-	__atomic_add_fetch(&cdev->mr_scache.mempool_cb_reg_n, 1,
-			   __ATOMIC_ACQUIRE);
 	/* Register mempools only once for this device. */
-	if (rte_eal_process_type() == RTE_PROC_PRIMARY)
+	if (ret == 0 && rte_eal_process_type() == RTE_PROC_PRIMARY) {
 		rte_mempool_walk(mlx5_dev_mempool_register_cb, cdev);
-	ret = 0;
+		goto exit;
+	}
+	if (ret != 0 && rte_errno == EEXIST)
+		ret = 0;
 exit:
 	rte_rwlock_write_unlock(&cdev->mr_scache.mprwlock);
@@ -437,13 +441,9 @@ static void
 mlx5_dev_mempool_unsubscribe(struct mlx5_common_device *cdev)
 {
-	uint32_t mempool_cb_reg_n;
 	int ret;
 
+	MLX5_ASSERT(cdev->dev != NULL);
 	if (!cdev->config.mr_mempool_reg_en)
 		return;
-	mempool_cb_reg_n = __atomic_sub_fetch(&cdev->mr_scache.mempool_cb_reg_n,
-					      1, __ATOMIC_RELEASE);
-	if (mempool_cb_reg_n > 0)
-		return;
 	/* Stop watching for mempool events and unregister all mempools. */
 	ret = rte_mempool_event_callback_unregister(mlx5_dev_mempool_event_cb,
diff --git a/drivers/common/mlx5/mlx5_common_mr.c b/drivers/common/mlx5/mlx5_common_mr.c
index 6899ba8e1a..7f56e1f973 100644
--- a/drivers/common/mlx5/mlx5_common_mr.c
+++ b/drivers/common/mlx5/mlx5_common_mr.c
@@ -1140,5 +1140,4 @@ mlx5_mr_create_cache(struct mlx5_mr_share_cache *share_cache, int socket)
 	rte_rwlock_init(&share_cache->rwlock);
 	rte_rwlock_init(&share_cache->mprwlock);
-	share_cache->mempool_cb_reg_n = 0;
 	/* Initialize B-tree and allocate memory for global MR cache table. */
 	return mlx5_mr_btree_init(&share_cache->cache,
diff --git a/drivers/common/mlx5/mlx5_common_mr.h b/drivers/common/mlx5/mlx5_common_mr.h
index f774ccbf33..13eb350980 100644
--- a/drivers/common/mlx5/mlx5_common_mr.h
+++ b/drivers/common/mlx5/mlx5_common_mr.h
@@ -82,5 +82,4 @@ struct mlx5_mr_share_cache {
 	rte_rwlock_t rwlock; /* MR cache Lock. */
 	rte_rwlock_t mprwlock; /* Mempool Registration Lock. */
-	uint32_t mempool_cb_reg_n; /* Mempool event callback registrants. */
 	struct mlx5_mr_btree cache; /* Global MR cache table. */
 	struct mlx5_mr_list mr_list; /* Registered MR list. */
-- 
2.38.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2022-11-23 09:55:57.413452366 +0000
+++ 0013-common-mlx5-fix-shared-mempool-subscription.patch	2022-11-23 09:55:57.020149183 +0000
@@ -1 +1 @@
-From aeca11f82a2f13c19e320dd337f4aa9627545c99 Mon Sep 17 00:00:00 2001
+From bbddde24b26ec976c7249f5c7dc81eb4fd567116 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit aeca11f82a2f13c19e320dd337f4aa9627545c99 ]
+
@@ -21 +22,0 @@
-Cc: stable@dpdk.org
@@ -32 +33 @@
-index bf22c0694d..0ad14a48c7 100644
+index 2634661fd3..f355b3d741 100644
@@ -35 +36 @@
-@@ -578,4 +578,9 @@ mlx5_dev_mempool_event_cb(enum rte_mempool_event event, struct rte_mempool *mp,
+@@ -410,4 +410,9 @@ mlx5_dev_mempool_event_cb(enum rte_mempool_event event, struct rte_mempool *mp,
@@ -45 +46 @@
-@@ -589,12 +594,11 @@ mlx5_dev_mempool_subscribe(struct mlx5_common_device *cdev)
+@@ -421,12 +426,11 @@ mlx5_dev_mempool_subscribe(struct mlx5_common_device *cdev)
@@ -63 +64 @@
-@@ -605,13 +609,9 @@ static void
+@@ -437,13 +441,9 @@ static void
@@ -79 +80 @@
-index 1d54102b54..0e1d2434ab 100644
+index 6899ba8e1a..7f56e1f973 100644
@@ -82 +83 @@
-@@ -1139,5 +1139,4 @@ mlx5_mr_create_cache(struct mlx5_mr_share_cache *share_cache, int socket)
+@@ -1140,5 +1140,4 @@ mlx5_mr_create_cache(struct mlx5_mr_share_cache *share_cache, int socket)


  parent reply	other threads:[~2022-11-23 18:04 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-23 18:03 patch 'net/bonding: fix slave device Rx/Tx offload configuration' " Kevin Traynor
2022-11-23 18:03 ` patch 'app/testpmd: fix MAC header in checksum forward engine' " Kevin Traynor
2022-11-23 18:03 ` patch 'net/bonding: fix dropping valid MAC packets' " Kevin Traynor
2022-11-23 18:03 ` patch 'app/testpmd: make quit flag volatile' " Kevin Traynor
2022-11-23 18:03 ` patch 'net/bonding: fix mbuf fast free handling' " Kevin Traynor
2022-11-23 18:03 ` patch 'eal: fix doxygen comments for UUID' " Kevin Traynor
2022-11-23 18:03 ` patch 'power: fix some doxygen comments' " Kevin Traynor
2022-11-23 18:03 ` patch 'hash: fix RCU configuration memory leak' " Kevin Traynor
2022-11-23 18:03 ` patch 'test/hash: remove dead code in extendable bucket test' " Kevin Traynor
2022-11-23 18:03 ` patch 'test/hash: fix bulk lookup check' " Kevin Traynor
2022-11-23 18:03 ` patch 'bus/auxiliary: prevent device from being probed again' " Kevin Traynor
2022-11-23 18:03 ` patch 'net/mlx5: fix action flag data type' " Kevin Traynor
2022-11-23 18:03 ` Kevin Traynor [this message]
2022-11-23 18:03 ` patch 'net/mlx5: fix shared Rx queue config reuse' " Kevin Traynor
2022-11-23 18:03 ` patch 'net/mlx5: fix hairpin split with set VLAN VID action' " Kevin Traynor
2022-11-23 18:03 ` patch 'net/mlx5: fix first segment inline length' " Kevin Traynor
2022-11-23 18:03 ` patch 'net/mlx5: fix indexed pool local cache crash' " Kevin Traynor
2022-11-23 18:03 ` patch 'net/mlx5: fix port initialization with small LRO' " Kevin Traynor
2022-11-23 18:03 ` patch 'net/mlx5: fix drop action validation' " Kevin Traynor
2022-11-23 18:03 ` patch 'net/ice/base: fix duplicate flow rules' " Kevin Traynor
2022-11-23 18:03 ` patch 'net/iavf: fix VLAN offload' " Kevin Traynor
2022-11-23 18:03 ` patch 'net/i40e: fix pctype configuration for X722' " Kevin Traynor
2022-11-23 18:03 ` patch 'net/ice: fix scalar Rx path segment' " Kevin Traynor
2022-11-23 18:03 ` patch 'net/ice: fix scalar Tx " Kevin Traynor
2022-11-23 18:03 ` patch 'net/ice: fix interrupt handler unregister' " Kevin Traynor
2022-11-23 18:03 ` patch 'ci: bump versions of actions in GHA' " Kevin Traynor
2022-11-23 18:03 ` patch 'ci: update to new API for step outputs " Kevin Traynor
2022-11-23 18:03 ` patch 'doc: fix event timer adapter guide' " Kevin Traynor
2022-11-23 18:03 ` patch 'event/cnxk: fix mbuf offset calculation' " Kevin Traynor
2022-11-23 18:03 ` patch 'app/eventdev: fix limits in error message' " Kevin Traynor
2022-11-23 18:03 ` patch 'event/cnxk: fix missing mempool cookie marking' " Kevin Traynor
2022-11-23 18:03 ` patch 'examples/fips_validation: fix typo in error log' " Kevin Traynor
2022-11-23 18:03 ` patch 'mempool/cnxk: fix destroying empty pool' " Kevin Traynor
2022-11-23 18:03 ` patch 'doc: fix application name in procinfo guide' " Kevin Traynor
2022-11-23 18:03 ` patch 'doc: document device dump " Kevin Traynor
2022-11-23 18:03 ` patch 'test/crypto: fix bitwise operator in a SNOW3G case' " Kevin Traynor
2022-11-23 18:03 ` patch 'doc: fix typo depreciated instead of deprecated' " Kevin Traynor
2022-11-23 18:03 ` patch 'drivers: fix typos found by Lintian' " Kevin Traynor
2022-11-23 18:03 ` patch 'ring: fix description' " Kevin Traynor
2022-11-23 18:03 ` patch 'ring: remove leftover comment about watermark' " Kevin Traynor
2022-11-23 18:03 ` patch 'vdpa/ifc: handle data path update failure' " Kevin Traynor
2022-11-23 18:03 ` patch 'service: fix build with clang 15' " Kevin Traynor
2022-11-23 18:03 ` patch 'vhost: " Kevin Traynor
2022-11-23 18:03 ` patch 'bus/dpaa: " Kevin Traynor
2022-11-23 18:03 ` patch 'net/atlantic: " Kevin Traynor
2022-11-23 18:03 ` patch 'net/dpaa2: " Kevin Traynor
2022-11-23 18:04 ` patch 'app/testpmd: " Kevin Traynor
2022-11-23 18:04 ` patch 'app/testpmd: fix build with clang 15 in flow code' " Kevin Traynor
2022-11-23 18:04 ` patch 'test/efd: fix build with clang 15' " Kevin Traynor
2022-11-23 18:04 ` patch 'test/member: " Kevin Traynor
2022-11-23 18:04 ` patch 'test/event: " Kevin Traynor
2022-11-23 18:04 ` patch 'net/ixgbevf: fix promiscuous and allmulti' " Kevin Traynor
2022-11-23 18:04 ` patch 'net/mlx5: fix maximum LRO message size' " Kevin Traynor
2022-11-23 18:04 ` patch 'doc: add LRO size limitation in mlx5 guide' " Kevin Traynor
2022-11-23 18:04 ` patch 'doc: fix underlines in testpmd " Kevin Traynor
2022-11-23 18:04 ` patch 'doc: fix colons in testpmd aged flow rules' " Kevin Traynor
2022-11-23 18:04 ` patch 'net/nfp: fix Rx descriptor DMA address' " Kevin Traynor
2022-11-23 18:04 ` patch 'drivers: remove unused build variable' " Kevin Traynor
2022-11-23 18:04 ` patch 'doc: fix maximum packet size of virtio driver' " Kevin Traynor
2022-11-23 18:04 ` patch 'doc: avoid meson deprecation in setup' " Kevin Traynor

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=20221123180413.733554-13-ktraynor@redhat.com \
    --to=ktraynor@redhat.com \
    --cc=getelson@nvidia.com \
    --cc=matan@nvidia.com \
    --cc=stable@dpdk.org \
    /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).