patches for DPDK stable branches
 help / color / mirror / Atom feed
* [dpdk-stable] patch 'app/testpmd: fix NVGRE encap configuration' has been queued to stable release 19.11.9
@ 2021-06-10 12:05 Christian Ehrhardt
  2021-06-10 12:05 ` [dpdk-stable] patch 'Revert "kni: fix compilation on SLES15-SP3"' " Christian Ehrhardt
                   ` (51 more replies)
  0 siblings, 52 replies; 54+ messages in thread
From: Christian Ehrhardt @ 2021-06-10 12:05 UTC (permalink / raw)
  To: Jiawei Wang; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to stable release 19.11.9

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 06/12/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/cpaelzer/dpdk-stable-queue

This queued commit can be viewed at:
https://github.com/cpaelzer/dpdk-stable-queue/commit/74ad940af86530ca9d97bffda81680c7a8c46dcf

Thanks.

Christian Ehrhardt <christian.ehrhardt@canonical.com>

---
From 74ad940af86530ca9d97bffda81680c7a8c46dcf Mon Sep 17 00:00:00 2001
From: Jiawei Wang <jiaweiw@nvidia.com>
Date: Fri, 4 Jun 2021 16:37:33 +0300
Subject: [PATCH] app/testpmd: fix NVGRE encap configuration

[ upstream commit 9b0da816bdec98c0d6c5d17ccdd337bdbafc3f75 ]

For NVGRE protocol, the default value of 'c_k_s_rsvd0_ver'
must be 0x2000, and protocol type must be 0x6558 in the NVGRE
header.

This patch updates these two configurations while parsing the nvgre
encap.

Fixes: dcd962fc6b4e ("app/testpmd: add NVGRE encap/decap")

Signed-off-by: Jiawei Wang <jiaweiw@nvidia.com>
---
 app/test-pmd/cmdline_flow.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c
index da3533c557..0b76f7ef21 100644
--- a/app/test-pmd/cmdline_flow.c
+++ b/app/test-pmd/cmdline_flow.c
@@ -4250,7 +4250,11 @@ parse_vc_action_nvgre_encap(struct context *ctx, const struct token *token,
 		       .src_addr = nvgre_encap_conf.ipv4_src,
 		       .dst_addr = nvgre_encap_conf.ipv4_dst,
 		},
-		.item_nvgre.flow_id = 0,
+		.item_nvgre = {
+			.c_k_s_rsvd0_ver = RTE_BE16(0x2000),
+			.protocol = RTE_BE16(RTE_ETHER_TYPE_TEB),
+			.flow_id = 0,
+		},
 	};
 	memcpy(action_nvgre_encap_data->item_eth.dst.addr_bytes,
 	       nvgre_encap_conf.eth_dst, RTE_ETHER_ADDR_LEN);
-- 
2.31.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2021-06-10 14:04:58.154873537 +0200
+++ 0001-app-testpmd-fix-NVGRE-encap-configuration.patch	2021-06-10 14:04:57.986024050 +0200
@@ -1 +1 @@
-From 9b0da816bdec98c0d6c5d17ccdd337bdbafc3f75 Mon Sep 17 00:00:00 2001
+From 74ad940af86530ca9d97bffda81680c7a8c46dcf Mon Sep 17 00:00:00 2001
@@ -3 +3 @@
-Date: Tue, 16 Mar 2021 06:18:27 +0200
+Date: Fri, 4 Jun 2021 16:37:33 +0300
@@ -5,0 +6,2 @@
+[ upstream commit 9b0da816bdec98c0d6c5d17ccdd337bdbafc3f75 ]
+
@@ -14 +15,0 @@
-Cc: stable@dpdk.org
@@ -17 +17,0 @@
-Acked-by: Ori Kam <orika@nvidia.com>
@@ -19,2 +19,2 @@
- app/test-pmd/cmdline_flow.c | 2 ++
- 1 file changed, 2 insertions(+)
+ app/test-pmd/cmdline_flow.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
@@ -23 +23 @@
-index 49d9f9c043..2c40c6996e 100644
+index da3533c557..0b76f7ef21 100644
@@ -26 +26 @@
-@@ -5439,6 +5439,8 @@ parse_vc_action_nvgre_encap(struct context *ctx, const struct token *token,
+@@ -4250,7 +4250,11 @@ parse_vc_action_nvgre_encap(struct context *ctx, const struct token *token,
@@ -30,3 +30,6 @@
-+		.item_nvgre.c_k_s_rsvd0_ver = RTE_BE16(0x2000),
-+		.item_nvgre.protocol = RTE_BE16(RTE_ETHER_TYPE_TEB),
- 		.item_nvgre.flow_id = 0,
+-		.item_nvgre.flow_id = 0,
++		.item_nvgre = {
++			.c_k_s_rsvd0_ver = RTE_BE16(0x2000),
++			.protocol = RTE_BE16(RTE_ETHER_TYPE_TEB),
++			.flow_id = 0,
++		},
@@ -34,0 +38 @@
+ 	       nvgre_encap_conf.eth_dst, RTE_ETHER_ADDR_LEN);

^ permalink raw reply	[flat|nested] 54+ messages in thread
* [dpdk-stable] patch 'vfio: do not merge contiguous areas' has been queued to stable release 19.11.9
@ 2021-05-17 16:07 Christian Ehrhardt
  2021-05-17 16:08 ` [dpdk-stable] patch 'app/testpmd: fix NVGRE encap configuration' " Christian Ehrhardt
  0 siblings, 1 reply; 54+ messages in thread
From: Christian Ehrhardt @ 2021-05-17 16:07 UTC (permalink / raw)
  To: Nithin Dabilpuram; +Cc: Anatoly Burakov, David Christensen, dpdk stable

Hi,

FYI, your patch has been queued to stable release 19.11.9

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 05/19/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/cpaelzer/dpdk-stable-queue

This queued commit can be viewed at:
https://github.com/cpaelzer/dpdk-stable-queue/commit/b92fd56073afacb5ba3a31c42a5526b96399ff74

Thanks.

Christian Ehrhardt <christian.ehrhardt@canonical.com>

---
From b92fd56073afacb5ba3a31c42a5526b96399ff74 Mon Sep 17 00:00:00 2001
From: Nithin Dabilpuram <ndabilpuram@marvell.com>
Date: Fri, 15 Jan 2021 13:02:41 +0530
Subject: [PATCH] vfio: do not merge contiguous areas

[ upstream commit 016763c219580292c8b05059c7452a7a11d0d19e ]

In order to save DMA entries limited by kernel both for external
memory and hugepage memory, an attempt was made to map physically
contiguous memory in one go. This cannot be done as VFIO IOMMU type1
does not support partially unmapping a previously mapped memory
region while Heap can request for multi page mapping and
partial unmapping.
Hence for going back to old method of mapping/unmapping at
memseg granularity, this commit reverts
commit d1c7c0cdf7ba ("vfio: map contiguous areas in one go")

Also add documentation on what module parameter needs to be used
to increase the per-container dma map limit for VFIO.

Fixes: d1c7c0cdf7ba ("vfio: map contiguous areas in one go")

Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: David Christensen <drc@linux.vnet.ibm.com>
---
 doc/guides/linux_gsg/linux_drivers.rst | 10 +++++
 lib/librte_eal/linux/eal/eal_vfio.c    | 59 ++++----------------------
 2 files changed, 18 insertions(+), 51 deletions(-)

diff --git a/doc/guides/linux_gsg/linux_drivers.rst b/doc/guides/linux_gsg/linux_drivers.rst
index 96817e78cd..d8e5ad711a 100644
--- a/doc/guides/linux_gsg/linux_drivers.rst
+++ b/doc/guides/linux_gsg/linux_drivers.rst
@@ -72,6 +72,16 @@ Note that in order to use VFIO, your kernel must support it.
 VFIO kernel modules have been included in the Linux kernel since version 3.6.0 and are usually present by default,
 however please consult your distributions documentation to make sure that is the case.
 
+For DMA mapping of either external memory or hugepages, VFIO interface is used.
+VFIO does not support partial unmap of once mapped memory. Hence DPDK's memory is
+mapped in hugepage granularity or system page granularity. Number of DMA
+mappings is limited by kernel with user locked memory limit of a process (rlimit)
+for system/hugepage memory. Another per-container overall limit applicable both
+for external memory and system memory was added in kernel 5.1 defined by
+VFIO module parameter ``dma_entry_limit`` with a default value of 64K.
+When application is out of DMA entries, these limits need to be adjusted to
+increase the allowed limit.
+
 Also, to use VFIO, both kernel and BIOS must support and be configured to use IO virtualization (such as Intel® VT-d).
 
 .. note::
diff --git a/lib/librte_eal/linux/eal/eal_vfio.c b/lib/librte_eal/linux/eal/eal_vfio.c
index 1be02e7f13..5e6101d9a9 100644
--- a/lib/librte_eal/linux/eal/eal_vfio.c
+++ b/lib/librte_eal/linux/eal/eal_vfio.c
@@ -514,11 +514,9 @@ static void
 vfio_mem_event_callback(enum rte_mem_event type, const void *addr, size_t len,
 		void *arg __rte_unused)
 {
-	rte_iova_t iova_start, iova_expected;
 	struct rte_memseg_list *msl;
 	struct rte_memseg *ms;
 	size_t cur_len = 0;
-	uint64_t va_start;
 
 	msl = rte_mem_virt2memseg_list(addr);
 
@@ -547,63 +545,22 @@ vfio_mem_event_callback(enum rte_mem_event type, const void *addr, size_t len,
 #endif
 	/* memsegs are contiguous in memory */
 	ms = rte_mem_virt2memseg(addr, msl);
-
-	/*
-	 * This memory is not guaranteed to be contiguous, but it still could
-	 * be, or it could have some small contiguous chunks. Since the number
-	 * of VFIO mappings is limited, and VFIO appears to not concatenate
-	 * adjacent mappings, we have to do this ourselves.
-	 *
-	 * So, find contiguous chunks, then map them.
-	 */
-	va_start = ms->addr_64;
-	iova_start = iova_expected = ms->iova;
 	while (cur_len < len) {
-		bool new_contig_area = ms->iova != iova_expected;
-		bool last_seg = (len - cur_len) == ms->len;
-		bool skip_last = false;
-
-		/* only do mappings when current contiguous area ends */
-		if (new_contig_area) {
-			if (type == RTE_MEM_EVENT_ALLOC)
-				vfio_dma_mem_map(default_vfio_cfg, va_start,
-						iova_start,
-						iova_expected - iova_start, 1);
-			else
-				vfio_dma_mem_map(default_vfio_cfg, va_start,
-						iova_start,
-						iova_expected - iova_start, 0);
-			va_start = ms->addr_64;
-			iova_start = ms->iova;
-		}
 		/* some memory segments may have invalid IOVA */
 		if (ms->iova == RTE_BAD_IOVA) {
 			RTE_LOG(DEBUG, EAL, "Memory segment at %p has bad IOVA, skipping\n",
 					ms->addr);
-			skip_last = true;
+			goto next;
 		}
-		iova_expected = ms->iova + ms->len;
+		if (type == RTE_MEM_EVENT_ALLOC)
+			vfio_dma_mem_map(default_vfio_cfg, ms->addr_64,
+					ms->iova, ms->len, 1);
+		else
+			vfio_dma_mem_map(default_vfio_cfg, ms->addr_64,
+					ms->iova, ms->len, 0);
+next:
 		cur_len += ms->len;
 		++ms;
-
-		/*
-		 * don't count previous segment, and don't attempt to
-		 * dereference a potentially invalid pointer.
-		 */
-		if (skip_last && !last_seg) {
-			iova_expected = iova_start = ms->iova;
-			va_start = ms->addr_64;
-		} else if (!skip_last && last_seg) {
-			/* this is the last segment and we're not skipping */
-			if (type == RTE_MEM_EVENT_ALLOC)
-				vfio_dma_mem_map(default_vfio_cfg, va_start,
-						iova_start,
-						iova_expected - iova_start, 1);
-			else
-				vfio_dma_mem_map(default_vfio_cfg, va_start,
-						iova_start,
-						iova_expected - iova_start, 0);
-		}
 	}
 #ifdef RTE_ARCH_PPC_64
 	cur_len = 0;
-- 
2.31.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2021-05-17 17:40:29.646596418 +0200
+++ 0001-vfio-do-not-merge-contiguous-areas.patch	2021-05-17 17:40:29.087808815 +0200
@@ -1 +1 @@
-From 016763c219580292c8b05059c7452a7a11d0d19e Mon Sep 17 00:00:00 2001
+From b92fd56073afacb5ba3a31c42a5526b96399ff74 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 016763c219580292c8b05059c7452a7a11d0d19e ]
+
@@ -20 +21,0 @@
-Cc: stable@dpdk.org
@@ -27 +28 @@
- lib/librte_eal/linux/eal_vfio.c        | 59 ++++----------------------
+ lib/librte_eal/linux/eal/eal_vfio.c    | 59 ++++----------------------
@@ -31 +32 @@
-index 90635a45d9..c6b6881ea2 100644
+index 96817e78cd..d8e5ad711a 100644
@@ -34,2 +35,2 @@
-@@ -25,6 +25,16 @@ To make use of VFIO, the ``vfio-pci`` module must be loaded:
- VFIO kernel is usually present by default in all distributions,
+@@ -72,6 +72,16 @@ Note that in order to use VFIO, your kernel must support it.
+ VFIO kernel modules have been included in the Linux kernel since version 3.6.0 and are usually present by default,
@@ -48,8 +49,8 @@
- Since Linux version 5.7,
- the ``vfio-pci`` module supports the creation of virtual functions.
- After the PF is bound to ``vfio-pci`` module,
-diff --git a/lib/librte_eal/linux/eal_vfio.c b/lib/librte_eal/linux/eal_vfio.c
-index 050082444e..64b134d530 100644
---- a/lib/librte_eal/linux/eal_vfio.c
-+++ b/lib/librte_eal/linux/eal_vfio.c
-@@ -517,11 +517,9 @@ static void
+ Also, to use VFIO, both kernel and BIOS must support and be configured to use IO virtualization (such as Intel® VT-d).
+ 
+ .. note::
+diff --git a/lib/librte_eal/linux/eal/eal_vfio.c b/lib/librte_eal/linux/eal/eal_vfio.c
+index 1be02e7f13..5e6101d9a9 100644
+--- a/lib/librte_eal/linux/eal/eal_vfio.c
++++ b/lib/librte_eal/linux/eal/eal_vfio.c
+@@ -514,11 +514,9 @@ static void
@@ -67,2 +68,2 @@
-@@ -539,63 +537,22 @@ vfio_mem_event_callback(enum rte_mem_event type, const void *addr, size_t len,
- 
+@@ -547,63 +545,22 @@ vfio_mem_event_callback(enum rte_mem_event type, const void *addr, size_t len,
+ #endif
@@ -137,2 +138,2 @@
- }
- 
+ #ifdef RTE_ARCH_PPC_64
+ 	cur_len = 0;

^ permalink raw reply	[flat|nested] 54+ messages in thread

end of thread, other threads:[~2021-06-10 12:08 UTC | newest]

Thread overview: 54+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-10 12:05 [dpdk-stable] patch 'app/testpmd: fix NVGRE encap configuration' has been queued to stable release 19.11.9 Christian Ehrhardt
2021-06-10 12:05 ` [dpdk-stable] patch 'Revert "kni: fix compilation on SLES15-SP3"' " Christian Ehrhardt
2021-06-10 12:05 ` [dpdk-stable] patch 'bus/fslmc: remove unused debug macro' " Christian Ehrhardt
2021-06-10 12:05 ` [dpdk-stable] patch 'raw/skeleton: add missing check after setting attribute' " Christian Ehrhardt
2021-06-10 12:05 ` [dpdk-stable] patch 'ipc: use monotonic clock' " Christian Ehrhardt
2021-06-10 12:05 ` [dpdk-stable] patch 'examples/timer: fix time interval' " Christian Ehrhardt
2021-06-10 12:05 ` [dpdk-stable] patch 'test/timer: check memzone allocation' " Christian Ehrhardt
2021-06-10 12:05 ` [dpdk-stable] patch 'power: fix sanity checks for guest channel read' " Christian Ehrhardt
2021-06-10 12:05 ` [dpdk-stable] patch 'event/dpaa2: remove unused macros' " Christian Ehrhardt
2021-06-10 12:05 ` [dpdk-stable] patch 'app/eventdev: fix lcore parsing skipping last core' " Christian Ehrhardt
2021-06-10 12:05 ` [dpdk-stable] patch 'net/ice/base: fix memory allocation wrapper' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'net/ena: switch memcpy to optimized version' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'net/ena/base: fix type conversions by explicit casting' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'net/ena: remove endian swap functions' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'net/nfp: fix reporting of RSS capabilities' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'net/hns3: return error on PCI config write failure' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'net/hns3: clear hash map on flow director clear' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'net/hns3: fix querying flow director counter for out param' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'net/hns3: fix secondary process request start/stop Rx/Tx' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'net/hns3: fix ordering in secondary process initialization' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'net/iavf: fix Tx context descriptor' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'net/ice: fix VSI array out of bounds access' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'net/i40e: fix VF RSS configuration' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'net/bnx2x: fix build with GCC 11' " Christian Ehrhardt
2021-06-10 12:06 ` Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'net/ice/base: " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'net/tap: " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'net/mlx4: fix secondary process initialization ordering' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'net/mlx5: " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'crypto/qat: fix null authentication request' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'app/crypto-perf: check memory allocation' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'examples/rxtx_callbacks: fix port ID format specifier' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'examples/flow_classify: fix NUMA check of port and core' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'examples/l2fwd-cat: " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'examples/skeleton: " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'test: check flow classifier creation' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'test/power: fix CPU frequency check' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'test/power: add turbo mode to " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'test/power: fix low frequency test when turbo enabled' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'test/power: fix turbo test' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'test/table: fix build with GCC 11' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'examples/l3fwd-power: fix empty poll thresholds' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'test: fix division by zero' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'test/crypto: fix build with GCC 11' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'net/mlx4: fix leak when configured repeatedly' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'net/mlx5: " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'net/hns3: fix requested FC mode rollback' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'net/hns3: remove meaningless packet buffer " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'net/hns3: fix DCB reconfiguration' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'common/sfc_efx/base: limit reported MCDI response length' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'net/memif: fix Tx bps statistics for zero-copy' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'test: fix build with GCC 11' " Christian Ehrhardt
2021-06-10 12:06 ` [dpdk-stable] patch 'test/cmdline: silence clang 12 warning' " Christian Ehrhardt
  -- strict thread matches above, loose matches on Subject: below --
2021-05-17 16:07 [dpdk-stable] patch 'vfio: do not merge contiguous areas' " Christian Ehrhardt
2021-05-17 16:08 ` [dpdk-stable] patch 'app/testpmd: fix NVGRE encap configuration' " Christian Ehrhardt

patches for DPDK stable branches

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://inbox.dpdk.org/stable/0 stable/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 stable stable/ https://inbox.dpdk.org/stable \
		stable@dpdk.org
	public-inbox-index stable

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.stable


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git