[dpdk-stable] patch 'drivers/net: fix memzone allocations for DMA memory' has been queued to stable release 20.11.3

luca.boccassi at gmail.com luca.boccassi at gmail.com
Mon Jul 12 15:04:54 CEST 2021


Hi,

FYI, your patch has been queued to stable release 20.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 07/14/21. 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/bluca/dpdk-stable

This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/9df1311d3319ca9c645ef9b0c932d438142dbb71

Thanks.

Luca Boccassi

---
>From 9df1311d3319ca9c645ef9b0c932d438142dbb71 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand at redhat.com>
Date: Tue, 6 Jul 2021 10:57:50 +0200
Subject: [PATCH] drivers/net: fix memzone allocations for DMA memory

[ upstream commit d07fc02fb4b38c0dded75d2d21b976d68b494f0e ]

Caught by code review.

Using a random name for memzone allocations can result in init failures
in the unlikely case that a name collision occurs.
Use a simple sequential generator on 64 bits.

Fixes: 3f50f072ff06 ("i40e: fix memzone freeing")
Fixes: 22b123a36d07 ("net/avf: initialize PMD")
Fixes: 5f0978e96220 ("net/ice/base: add OS specific implementation")
Fixes: 737f30e1c3ab ("net/hns3: support command interface with firmware")

Signed-off-by: David Marchand <david.marchand at redhat.com>
Acked-by: Min Hu (Connor) <humin29 at huawei.com>
Acked-by: Haiyue Wang <haiyue.wang at intel.com>
---
 drivers/common/iavf/iavf_impl.c  | 5 +++--
 drivers/net/hns3/hns3_cmd.c      | 4 +++-
 drivers/net/i40e/i40e_ethdev.c   | 4 +++-
 drivers/net/ice/base/ice_osdep.h | 5 +++--
 4 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/drivers/common/iavf/iavf_impl.c b/drivers/common/iavf/iavf_impl.c
index fc0da31753..f80878b9fd 100644
--- a/drivers/common/iavf/iavf_impl.c
+++ b/drivers/common/iavf/iavf_impl.c
@@ -6,7 +6,6 @@
 #include <inttypes.h>
 
 #include <rte_common.h>
-#include <rte_random.h>
 #include <rte_malloc.h>
 #include <rte_memzone.h>
 
@@ -19,13 +18,15 @@ iavf_allocate_dma_mem_d(__rte_unused struct iavf_hw *hw,
 			u64 size,
 			u32 alignment)
 {
+	static uint64_t iavf_dma_memzone_id;
 	const struct rte_memzone *mz = NULL;
 	char z_name[RTE_MEMZONE_NAMESIZE];
 
 	if (!mem)
 		return IAVF_ERR_PARAM;
 
-	snprintf(z_name, sizeof(z_name), "iavf_dma_%"PRIu64, rte_rand());
+	snprintf(z_name, sizeof(z_name), "iavf_dma_%" PRIu64,
+		__atomic_fetch_add(&iavf_dma_memzone_id, 1, __ATOMIC_RELAXED));
 	mz = rte_memzone_reserve_bounded(z_name, size, SOCKET_ID_ANY,
 					 RTE_MEMZONE_IOVA_CONTIG, alignment,
 					 RTE_PGSIZE_2M);
diff --git a/drivers/net/hns3/hns3_cmd.c b/drivers/net/hns3/hns3_cmd.c
index c6552b45d7..dc65ef8c26 100644
--- a/drivers/net/hns3/hns3_cmd.c
+++ b/drivers/net/hns3/hns3_cmd.c
@@ -44,10 +44,12 @@ static int
 hns3_allocate_dma_mem(struct hns3_hw *hw, struct hns3_cmq_ring *ring,
 		      uint64_t size, uint32_t alignment)
 {
+	static uint64_t hns3_dma_memzone_id;
 	const struct rte_memzone *mz = NULL;
 	char z_name[RTE_MEMZONE_NAMESIZE];
 
-	snprintf(z_name, sizeof(z_name), "hns3_dma_%" PRIu64, rte_rand());
+	snprintf(z_name, sizeof(z_name), "hns3_dma_%" PRIu64,
+		__atomic_fetch_add(&hns3_dma_memzone_id, 1, __ATOMIC_RELAXED));
 	mz = rte_memzone_reserve_bounded(z_name, size, SOCKET_ID_ANY,
 					 RTE_MEMZONE_IOVA_CONTIG, alignment,
 					 RTE_PGSIZE_2M);
diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index d617e9c71b..0dc20de9a0 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -4610,13 +4610,15 @@ i40e_allocate_dma_mem_d(__rte_unused struct i40e_hw *hw,
 			u64 size,
 			u32 alignment)
 {
+	static uint64_t i40e_dma_memzone_id;
 	const struct rte_memzone *mz = NULL;
 	char z_name[RTE_MEMZONE_NAMESIZE];
 
 	if (!mem)
 		return I40E_ERR_PARAM;
 
-	snprintf(z_name, sizeof(z_name), "i40e_dma_%"PRIu64, rte_rand());
+	snprintf(z_name, sizeof(z_name), "i40e_dma_%" PRIu64,
+		__atomic_fetch_add(&i40e_dma_memzone_id, 1, __ATOMIC_RELAXED));
 	mz = rte_memzone_reserve_bounded(z_name, size, SOCKET_ID_ANY,
 			RTE_MEMZONE_IOVA_CONTIG, alignment, RTE_PGSIZE_2M);
 	if (!mz)
diff --git a/drivers/net/ice/base/ice_osdep.h b/drivers/net/ice/base/ice_osdep.h
index 818bfa3b89..be51c64b67 100644
--- a/drivers/net/ice/base/ice_osdep.h
+++ b/drivers/net/ice/base/ice_osdep.h
@@ -21,7 +21,6 @@
 #include <rte_cycles.h>
 #include <rte_spinlock.h>
 #include <rte_log.h>
-#include <rte_random.h>
 #include <rte_io.h>
 
 #include "ice_alloc.h"
@@ -245,13 +244,15 @@ static inline void *
 ice_alloc_dma_mem(__rte_unused struct ice_hw *hw,
 		  struct ice_dma_mem *mem, u64 size)
 {
+	static uint64_t ice_dma_memzone_id;
 	const struct rte_memzone *mz = NULL;
 	char z_name[RTE_MEMZONE_NAMESIZE];
 
 	if (!mem)
 		return NULL;
 
-	snprintf(z_name, sizeof(z_name), "ice_dma_%"PRIu64, rte_rand());
+	snprintf(z_name, sizeof(z_name), "ice_dma_%" PRIu64,
+		__atomic_fetch_add(&ice_dma_memzone_id, 1, __ATOMIC_RELAXED));
 	mz = rte_memzone_reserve_bounded(z_name, size, SOCKET_ID_ANY, 0,
 					 0, RTE_PGSIZE_2M);
 	if (!mz)
-- 
2.30.2

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2021-07-12 13:41:39.713627984 +0100
+++ 0059-drivers-net-fix-memzone-allocations-for-DMA-memory.patch	2021-07-12 13:41:36.486122527 +0100
@@ -1 +1 @@
-From d07fc02fb4b38c0dded75d2d21b976d68b494f0e Mon Sep 17 00:00:00 2001
+From 9df1311d3319ca9c645ef9b0c932d438142dbb71 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit d07fc02fb4b38c0dded75d2d21b976d68b494f0e ]
+
@@ -16 +17,0 @@
-Cc: stable at dpdk.org
@@ -29 +30 @@
-index 0c7d5c0dae..8919b0e7c3 100644
+index fc0da31753..f80878b9fd 100644
@@ -58 +59 @@
-index 44a4e2860d..175d48d14b 100644
+index c6552b45d7..dc65ef8c26 100644
@@ -76 +77 @@
-index 5b0a7f2537..7b230e2ed1 100644
+index d617e9c71b..0dc20de9a0 100644
@@ -79 +80 @@
-@@ -4554,13 +4554,15 @@ i40e_allocate_dma_mem_d(__rte_unused struct i40e_hw *hw,
+@@ -4610,13 +4610,15 @@ i40e_allocate_dma_mem_d(__rte_unused struct i40e_hw *hw,
@@ -97 +98 @@
-index 878c5597d4..154fe96e93 100644
+index 818bfa3b89..be51c64b67 100644
@@ -108 +109 @@
-@@ -260,13 +259,15 @@ static inline void *
+@@ -245,13 +244,15 @@ static inline void *


More information about the stable mailing list