patches for DPDK stable branches
 help / color / mirror / Atom feed
* [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1
@ 2019-01-04 13:23 Kevin Traynor
  2019-01-04 13:23 ` [dpdk-stable] patch 'mk: do not install meson.build in usertools' " Kevin Traynor
                   ` (71 more replies)
  0 siblings, 72 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:23 UTC (permalink / raw)
  To: Gavin Hu
  Cc: Ruifeng Wang, Honnappa Nagarahalli, Bruce Richardson, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From c50ba18e9550ae951a2251e5e19975dc649f7ead Mon Sep 17 00:00:00 2001
From: Gavin Hu <gavin.hu@arm.com>
Date: Tue, 11 Dec 2018 11:55:50 +0800
Subject: [PATCH] config: enable C11 memory model for armv8 with meson

[ upstream commit 592a13c9e6739b07e6657def5df5cd1e7abe2423 ]

This patch makes the configuration based on makefile and the
configuration based on meson to be the same.

Fixes: c6e536e38437 ("build: add more implementers IDs and PNs for ARM")

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 config/arm/meson.build | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/config/arm/meson.build b/config/arm/meson.build
index 3f917250d..dae55d6b2 100644
--- a/config/arm/meson.build
+++ b/config/arm/meson.build
@@ -48,4 +48,5 @@ flags_generic = [
 	['RTE_MACHINE', '"armv8a"'],
 	['RTE_MAX_LCORE', 256],
+	['RTE_USE_C11_MEM_MODEL', true],
 	['RTE_CACHE_LINE_SIZE', 128]]
 flags_cavium = [
@@ -58,4 +59,5 @@ flags_cavium = [
 flags_dpaa = [
 	['RTE_MACHINE', '"dpaa"'],
+	['RTE_USE_C11_MEM_MODEL', true],
 	['RTE_CACHE_LINE_SIZE', 64],
 	['RTE_MAX_NUMA_NODES', 1],
@@ -63,4 +65,5 @@ flags_dpaa = [
 flags_dpaa2 = [
 	['RTE_MACHINE', '"dpaa2"'],
+	['RTE_USE_C11_MEM_MODEL', true],
 	['RTE_CACHE_LINE_SIZE', 64],
 	['RTE_MAX_NUMA_NODES', 1],
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:07.490842674 +0000
+++ 0001-config-enable-C11-memory-model-for-armv8-with-meson.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,13 +1,14 @@
-From 592a13c9e6739b07e6657def5df5cd1e7abe2423 Mon Sep 17 00:00:00 2001
+From c50ba18e9550ae951a2251e5e19975dc649f7ead Mon Sep 17 00:00:00 2001
 From: Gavin Hu <gavin.hu@arm.com>
 Date: Tue, 11 Dec 2018 11:55:50 +0800
 Subject: [PATCH] config: enable C11 memory model for armv8 with meson
 
+[ upstream commit 592a13c9e6739b07e6657def5df5cd1e7abe2423 ]
+
 This patch makes the configuration based on makefile and the
 configuration based on meson to be the same.
 
 Fixes: c6e536e38437 ("build: add more implementers IDs and PNs for ARM")
-Cc: stable@dpdk.org
 
 Signed-off-by: Gavin Hu <gavin.hu@arm.com>
 Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>

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

* [dpdk-stable] patch 'mk: do not install meson.build in usertools' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
@ 2019-01-04 13:23 ` Kevin Traynor
  2019-01-04 13:23 ` [dpdk-stable] patch 'log: add missing experimental tag' " Kevin Traynor
                   ` (70 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:23 UTC (permalink / raw)
  To: Timothy Redaelli; +Cc: Luca Boccassi, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From cf96e8c18c0ae6560b910a56c095f1e1d92cf55c Mon Sep 17 00:00:00 2001
From: Timothy Redaelli <tredaelli@redhat.com>
Date: Tue, 27 Nov 2018 20:35:32 +0100
Subject: [PATCH] mk: do not install meson.build in usertools

[ upstream commit d80a21eb720b009da224c8a97879a00360b3066b ]

In commit 7dd34c71de2a ("usertools: install with meson") meson.build was
added in usertools directory and so it's copied to $(datadir)/usertools
with "make install".

This patch avoids to copy meson.build when installing usertools with
"make install".

Fixes: 7dd34c71de2a ("usertools: install with meson")

Signed-off-by: Timothy Redaelli <tredaelli@redhat.com>
Acked-by: Luca Boccassi <bluca@debian.org>
---
 mk/rte.sdkinstall.mk | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/mk/rte.sdkinstall.mk b/mk/rte.sdkinstall.mk
index 8296e6dbd..2d34b4e5a 100644
--- a/mk/rte.sdkinstall.mk
+++ b/mk/rte.sdkinstall.mk
@@ -100,6 +100,7 @@ install-runtime:
 		--exclude app/testacl --exclude app/testpipeline app | \
 	    tar -xf -      -C $(DESTDIR)$(bindir) $(TAR_X_FLAGS)
-	$(Q)$(call rte_mkdir,      $(DESTDIR)$(datadir))
-	$(Q)cp $(CP_FLAGS) $(RTE_SDK)/usertools $(DESTDIR)$(datadir)
+	$(Q)$(call rte_mkdir,      $(DESTDIR)$(datadir)/usertools)
+	$(Q)tar -cf -      -C $(RTE_SDK) --exclude meson.build usertools | \
+	    tar -xf -      -C $(DESTDIR)$(datadir)/usertools $(TAR_X_FLAGS)
 	$(Q)$(call rte_mkdir,      $(DESTDIR)$(sbindir))
 	$(Q)$(call rte_symlink,    $(DESTDIR)$(datadir)/usertools/dpdk-devbind.py, \
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:07.511732554 +0000
+++ 0002-mk-do-not-install-meson.build-in-usertools.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,8 +1,10 @@
-From d80a21eb720b009da224c8a97879a00360b3066b Mon Sep 17 00:00:00 2001
+From cf96e8c18c0ae6560b910a56c095f1e1d92cf55c Mon Sep 17 00:00:00 2001
 From: Timothy Redaelli <tredaelli@redhat.com>
 Date: Tue, 27 Nov 2018 20:35:32 +0100
 Subject: [PATCH] mk: do not install meson.build in usertools
 
+[ upstream commit d80a21eb720b009da224c8a97879a00360b3066b ]
+
 In commit 7dd34c71de2a ("usertools: install with meson") meson.build was
 added in usertools directory and so it's copied to $(datadir)/usertools
 with "make install".
@@ -11,7 +13,6 @@
 "make install".
 
 Fixes: 7dd34c71de2a ("usertools: install with meson")
-Cc: stable@dpdk.org
 
 Signed-off-by: Timothy Redaelli <tredaelli@redhat.com>
 Acked-by: Luca Boccassi <bluca@debian.org>

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

* [dpdk-stable] patch 'log: add missing experimental tag' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
  2019-01-04 13:23 ` [dpdk-stable] patch 'mk: do not install meson.build in usertools' " Kevin Traynor
@ 2019-01-04 13:23 ` Kevin Traynor
  2019-01-10  9:52   ` David Marchand
  2019-01-04 13:23 ` [dpdk-stable] patch 'bus/vmbus: fix race in subchannel creation' " Kevin Traynor
                   ` (69 subsequent siblings)
  71 siblings, 1 reply; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:23 UTC (permalink / raw)
  To: David Marchand; +Cc: Neil Horman, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From a4bca176eea3a5fc71e2e42094c806037f84c15f Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand@redhat.com>
Date: Tue, 4 Dec 2018 09:28:31 +0100
Subject: [PATCH] log: add missing experimental tag

[ upstream commit a8499f65a1d116ffb25db48abbe3bbaefa7cf120 ]

When rte_log_register_type_and_pick_level() has been introduced, it has
been correctly added to the EXPERIMENTAL section of the eal map and the
symbol itself has been marked at its definition.

However, the declaration of this symbol in rte_log.h is missing the
__rte_experimental tag.
Because of this, a user can try to call this symbol without being aware
this is an experimental api (neither compilation nor link warning).

Fixes: b22e77c02620 ("eal: register log type and pick level from args")

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
---
 lib/librte_eal/common/include/rte_log.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/lib/librte_eal/common/include/rte_log.h b/lib/librte_eal/common/include/rte_log.h
index 2f789cb90..f334efce4 100644
--- a/lib/librte_eal/common/include/rte_log.h
+++ b/lib/librte_eal/common/include/rte_log.h
@@ -25,4 +25,5 @@ extern "C" {
 #include <rte_common.h>
 #include <rte_config.h>
+#include <rte_compat.h>
 
 struct rte_log_dynamic_type;
@@ -227,4 +228,5 @@ int rte_log_register(const char *name);
  *    - <0: rte_log_register() error value
  */
+__rte_experimental
 int rte_log_register_type_and_pick_level(const char *name, uint32_t level_def);
 
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:07.534676260 +0000
+++ 0003-log-add-missing-experimental-tag.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,8 +1,10 @@
-From a8499f65a1d116ffb25db48abbe3bbaefa7cf120 Mon Sep 17 00:00:00 2001
+From a4bca176eea3a5fc71e2e42094c806037f84c15f Mon Sep 17 00:00:00 2001
 From: David Marchand <david.marchand@redhat.com>
 Date: Tue, 4 Dec 2018 09:28:31 +0100
 Subject: [PATCH] log: add missing experimental tag
 
+[ upstream commit a8499f65a1d116ffb25db48abbe3bbaefa7cf120 ]
+
 When rte_log_register_type_and_pick_level() has been introduced, it has
 been correctly added to the EXPERIMENTAL section of the eal map and the
 symbol itself has been marked at its definition.
@@ -13,7 +15,6 @@
 this is an experimental api (neither compilation nor link warning).
 
 Fixes: b22e77c02620 ("eal: register log type and pick level from args")
-Cc: stable@dpdk.org
 
 Signed-off-by: David Marchand <david.marchand@redhat.com>
 Acked-by: Neil Horman <nhorman@tuxdriver.com>

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

* [dpdk-stable] patch 'bus/vmbus: fix race in subchannel creation' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
  2019-01-04 13:23 ` [dpdk-stable] patch 'mk: do not install meson.build in usertools' " Kevin Traynor
  2019-01-04 13:23 ` [dpdk-stable] patch 'log: add missing experimental tag' " Kevin Traynor
@ 2019-01-04 13:23 ` Kevin Traynor
  2019-01-04 13:23 ` [dpdk-stable] patch 'net/netvsc: enable SR-IOV' " Kevin Traynor
                   ` (68 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:23 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: Mohammed Gamal, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 59573b60e2f8ff6ce07dacb023c8645266d8eadf Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <sthemmin@microsoft.com>
Date: Wed, 5 Dec 2018 14:11:56 -0800
Subject: [PATCH] bus/vmbus: fix race in subchannel creation

[ upstream commit 4970103e89f4f828669acf3b465e984fdc891e1e ]

When using multiple queues, there was a race with the kernel
in setting up the second channel. This regression is due to a kernel change
which does not allow accessing sysfs files for Hyper-V channels that are not opened.

The fix is simple, just move the logic to detect not ready
sub channels earlier in the existing loop.

Fixes: 831dba47bd36 ("bus/vmbus: add Hyper-V virtual bus support")

Reported-by: Mohammed Gamal <mgamal@redhat.com>
Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
---
 drivers/bus/vmbus/linux/vmbus_uio.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/bus/vmbus/linux/vmbus_uio.c b/drivers/bus/vmbus/linux/vmbus_uio.c
index 12e97e3a4..38df4d724 100644
--- a/drivers/bus/vmbus/linux/vmbus_uio.c
+++ b/drivers/bus/vmbus/linux/vmbus_uio.c
@@ -358,4 +358,10 @@ int vmbus_uio_get_subchan(struct vmbus_channel *primary,
 		}
 
+		if (!vmbus_isnew_subchannel(primary, relid))
+			continue;	/* Already know about you */
+
+		if (!vmbus_uio_ring_present(dev, relid))
+			continue;	/* Ring may not be ready yet */
+
 		snprintf(subchan_path, sizeof(subchan_path), "%s/%lu",
 			 chan_path, relid);
@@ -371,10 +377,4 @@ int vmbus_uio_get_subchan(struct vmbus_channel *primary,
 			continue;	/* skip primary channel */
 
-		if (!vmbus_isnew_subchannel(primary, relid))
-			continue;
-
-		if (!vmbus_uio_ring_present(dev, relid))
-			continue;	/* Ring may not be ready yet */
-
 		err = vmbus_uio_sysfs_read(subchan_path, "monitor_id",
 					   &monid, UINT8_MAX);
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:07.556190007 +0000
+++ 0004-bus-vmbus-fix-race-in-subchannel-creation.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,8 +1,10 @@
-From 4970103e89f4f828669acf3b465e984fdc891e1e Mon Sep 17 00:00:00 2001
+From 59573b60e2f8ff6ce07dacb023c8645266d8eadf Mon Sep 17 00:00:00 2001
 From: Stephen Hemminger <sthemmin@microsoft.com>
 Date: Wed, 5 Dec 2018 14:11:56 -0800
 Subject: [PATCH] bus/vmbus: fix race in subchannel creation
 
+[ upstream commit 4970103e89f4f828669acf3b465e984fdc891e1e ]
+
 When using multiple queues, there was a race with the kernel
 in setting up the second channel. This regression is due to a kernel change
 which does not allow accessing sysfs files for Hyper-V channels that are not opened.
@@ -11,7 +13,6 @@
 sub channels earlier in the existing loop.
 
 Fixes: 831dba47bd36 ("bus/vmbus: add Hyper-V virtual bus support")
-Cc: stable@dpdk.org
 
 Reported-by: Mohammed Gamal <mgamal@redhat.com>
 Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>

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

* [dpdk-stable] patch 'net/netvsc: enable SR-IOV' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (2 preceding siblings ...)
  2019-01-04 13:23 ` [dpdk-stable] patch 'bus/vmbus: fix race in subchannel creation' " Kevin Traynor
@ 2019-01-04 13:23 ` Kevin Traynor
  2019-01-04 13:23 ` [dpdk-stable] patch 'net/netvsc: disable multi-queue on older servers' " Kevin Traynor
                   ` (67 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:23 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 37345a580bd9e81f769d081c9a3f04188d1ef696 Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <sthemmin@microsoft.com>
Date: Wed, 5 Dec 2018 14:11:57 -0800
Subject: [PATCH] net/netvsc: enable SR-IOV

[ upstream commit 825ab257b5ce8235ab0cdc260e5b7b757e102875 ]

Make DPDK enable SRIOV flag in same way as Linux and FreeBSD.

Fixes: dc7680e8597c ("net/netvsc: support integrated VF")

Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
---
 drivers/net/netvsc/hn_nvs.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/netvsc/hn_nvs.c b/drivers/net/netvsc/hn_nvs.c
index 9690c5f8a..d58770e04 100644
--- a/drivers/net/netvsc/hn_nvs.c
+++ b/drivers/net/netvsc/hn_nvs.c
@@ -327,7 +327,7 @@ hn_nvs_conf_ndis(struct hn_data *hv, unsigned int mtu)
 	conf.caps = NVS_NDIS_CONF_VLAN;
 
-	/* TODO enable SRIOV */
-	//if (hv->nvs_ver >= NVS_VERSION_5)
-	//	conf.caps |= NVS_NDIS_CONF_SRIOV;
+	/* enable SRIOV */
+	if (hv->nvs_ver >= NVS_VERSION_5)
+		conf.caps |= NVS_NDIS_CONF_SRIOV;
 
 	/* NOTE: No response. */
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:07.580202372 +0000
+++ 0005-net-netvsc-enable-SR-IOV.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,12 +1,13 @@
-From 825ab257b5ce8235ab0cdc260e5b7b757e102875 Mon Sep 17 00:00:00 2001
+From 37345a580bd9e81f769d081c9a3f04188d1ef696 Mon Sep 17 00:00:00 2001
 From: Stephen Hemminger <sthemmin@microsoft.com>
 Date: Wed, 5 Dec 2018 14:11:57 -0800
 Subject: [PATCH] net/netvsc: enable SR-IOV
 
+[ upstream commit 825ab257b5ce8235ab0cdc260e5b7b757e102875 ]
+
 Make DPDK enable SRIOV flag in same way as Linux and FreeBSD.
 
 Fixes: dc7680e8597c ("net/netvsc: support integrated VF")
-Cc: stable@dpdk.org
 
 Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
 ---

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

* [dpdk-stable] patch 'net/netvsc: disable multi-queue on older servers' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (3 preceding siblings ...)
  2019-01-04 13:23 ` [dpdk-stable] patch 'net/netvsc: enable SR-IOV' " Kevin Traynor
@ 2019-01-04 13:23 ` Kevin Traynor
  2019-01-04 13:23 ` [dpdk-stable] patch 'bus/dpaa: do nothing if bus not present' " Kevin Traynor
                   ` (66 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:23 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 458c7a12a9483550fe161e44186ce3ede613a53d Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <sthemmin@microsoft.com>
Date: Wed, 5 Dec 2018 14:11:58 -0800
Subject: [PATCH] net/netvsc: disable multi-queue on older servers

[ upstream commit afbc22bf51ab98b9b61b11eb6d38278a9d577111 ]

NDIS multi-queue support is only in WS2012 or later. Check the NDIS
version to limit to single queue on older versions. Similar code
exists in Linux driver.

Fixes: 4e9c73e96e83 ("net/netvsc: add Hyper-V network device")

Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
---
 drivers/net/netvsc/hn_ethdev.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/net/netvsc/hn_ethdev.c b/drivers/net/netvsc/hn_ethdev.c
index b330bf3d7..1256fa399 100644
--- a/drivers/net/netvsc/hn_ethdev.c
+++ b/drivers/net/netvsc/hn_ethdev.c
@@ -733,4 +733,5 @@ eth_hn_dev_init(struct rte_eth_dev *eth_dev)
 	hv->port_id = eth_dev->data->port_id;
 	hv->latency = HN_CHAN_LATENCY_NS;
+	hv->max_queues = 1;
 
 	err = hn_parse_args(eth_dev);
@@ -771,4 +772,8 @@ eth_hn_dev_init(struct rte_eth_dev *eth_dev)
 		goto failed;
 
+	/* Multi queue requires later versions of windows server */
+	if (hv->nvs_ver < NVS_VERSION_5)
+		return 0;
+
 	max_chan = rte_vmbus_max_channels(vmbus);
 	PMD_INIT_LOG(DEBUG, "VMBus max channels %d", max_chan);
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:07.602723781 +0000
+++ 0006-net-netvsc-disable-multi-queue-on-older-servers.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,14 +1,15 @@
-From afbc22bf51ab98b9b61b11eb6d38278a9d577111 Mon Sep 17 00:00:00 2001
+From 458c7a12a9483550fe161e44186ce3ede613a53d Mon Sep 17 00:00:00 2001
 From: Stephen Hemminger <sthemmin@microsoft.com>
 Date: Wed, 5 Dec 2018 14:11:58 -0800
 Subject: [PATCH] net/netvsc: disable multi-queue on older servers
 
+[ upstream commit afbc22bf51ab98b9b61b11eb6d38278a9d577111 ]
+
 NDIS multi-queue support is only in WS2012 or later. Check the NDIS
 version to limit to single queue on older versions. Similar code
 exists in Linux driver.
 
 Fixes: 4e9c73e96e83 ("net/netvsc: add Hyper-V network device")
-Cc: stable@dpdk.org
 
 Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
 ---

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

* [dpdk-stable] patch 'bus/dpaa: do nothing if bus not present' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (4 preceding siblings ...)
  2019-01-04 13:23 ` [dpdk-stable] patch 'net/netvsc: disable multi-queue on older servers' " Kevin Traynor
@ 2019-01-04 13:23 ` Kevin Traynor
  2019-01-04 13:23 ` [dpdk-stable] patch 'doc: fix garbage text in generated HTML guides' " Kevin Traynor
                   ` (65 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:23 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: Shreyansh Jain, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 485f48f8cc5a179dc2bb8c2dc86a16b43f50129d Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Wed, 5 Dec 2018 14:02:30 -0800
Subject: [PATCH] bus/dpaa: do nothing if bus not present

[ upstream commit f18e18e0ccf7d3cb08042ad77074e1cbd070555d ]

The DPAA bus support code put out messages like:
	dpaax: read_memory_node():	 Unable to glob device-tree memory node:
		(/proc/device-tree/memory[@0-9]*/reg)(3)
	dpaax: PA->VA translation not available;
	dpaax: Expect performance impact.

These are unnecessary and likely to confuse the end user.
Fix this by doing nothing if bus is empty.

Fixes: 5a7dbb934d75 ("dpaa: enable dpaax library")

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com>
---
 drivers/bus/dpaa/dpaa_bus.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c
index 203f60dc1..204a50b1e 100644
--- a/drivers/bus/dpaa/dpaa_bus.c
+++ b/drivers/bus/dpaa/dpaa_bus.c
@@ -543,4 +543,8 @@ rte_dpaa_bus_probe(void)
 	int probe_all = rte_dpaa_bus.bus.conf.scan_mode != RTE_BUS_SCAN_WHITELIST;
 
+	/* If DPAA bus is not present nothing needs to be done */
+	if (TAILQ_EMPTY(&rte_dpaa_bus.device_list))
+		return 0;
+
 	svr_file = fopen(DPAA_SOC_ID_FILE, "r");
 	if (svr_file) {
@@ -587,6 +591,5 @@ rte_dpaa_bus_probe(void)
 	 * been detected.
 	 */
-	if (!TAILQ_EMPTY(&rte_dpaa_bus.device_list))
-		rte_mbuf_set_platform_mempool_ops(DPAA_MEMPOOL_OPS_NAME);
+	rte_mbuf_set_platform_mempool_ops(DPAA_MEMPOOL_OPS_NAME);
 
 	return 0;
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:07.624988453 +0000
+++ 0007-bus-dpaa-do-nothing-if-bus-not-present.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,8 +1,10 @@
-From f18e18e0ccf7d3cb08042ad77074e1cbd070555d Mon Sep 17 00:00:00 2001
+From 485f48f8cc5a179dc2bb8c2dc86a16b43f50129d Mon Sep 17 00:00:00 2001
 From: Stephen Hemminger <stephen@networkplumber.org>
 Date: Wed, 5 Dec 2018 14:02:30 -0800
 Subject: [PATCH] bus/dpaa: do nothing if bus not present
 
+[ upstream commit f18e18e0ccf7d3cb08042ad77074e1cbd070555d ]
+
 The DPAA bus support code put out messages like:
 	dpaax: read_memory_node():	 Unable to glob device-tree memory node:
 		(/proc/device-tree/memory[@0-9]*/reg)(3)
@@ -13,7 +15,6 @@
 Fix this by doing nothing if bus is empty.
 
 Fixes: 5a7dbb934d75 ("dpaa: enable dpaax library")
-Cc: stable@dpdk.org
 
 Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
 Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com>

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

* [dpdk-stable] patch 'doc: fix garbage text in generated HTML guides' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (5 preceding siblings ...)
  2019-01-04 13:23 ` [dpdk-stable] patch 'bus/dpaa: do nothing if bus not present' " Kevin Traynor
@ 2019-01-04 13:23 ` Kevin Traynor
  2019-01-04 13:23 ` [dpdk-stable] patch 'eal: clean up unused files on initialization' " Kevin Traynor
                   ` (64 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:23 UTC (permalink / raw)
  To: Luca Boccassi; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 8f8cc56e461a830fa0d277a0e25dff4ade1807a0 Mon Sep 17 00:00:00 2001
From: Luca Boccassi <bluca@debian.org>
Date: Wed, 5 Dec 2018 14:25:45 +0000
Subject: [PATCH] doc: fix garbage text in generated HTML guides

[ upstream commit 430b35de4a579a7f65eda5c3fd00eaab2bc57aca ]

If the user has MAKEFLAGS set in the environment when building the
documentation, the doc/guides/conf.py script which calls "make"
exclusively to get the project version might pick up garbage from
stdout, like:

<title>FAQ &mdash; Data Plane Development Kit make[2]:
Entering directory &#39;/build/1st/dpdk-18.11/doc/guides&#39;
18.11.0
make[2]: Leaving directory &#39;/build/1st/dpdk-18.11&#39;
documentation</title>

Override MAKEFLAGS in the Python subprocess call to avoid this issue.

Fixes: f7aaae2fe6f7 ("doc: add copyright and version")

Signed-off-by: Luca Boccassi <bluca@debian.org>
---
 doc/guides/conf.py | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/doc/guides/conf.py b/doc/guides/conf.py
index c883306d7..da99a3f84 100644
--- a/doc/guides/conf.py
+++ b/doc/guides/conf.py
@@ -10,4 +10,5 @@ from sphinx.highlighting import PygmentsBridge
 from pygments.formatters.latex import LatexFormatter
 from os import listdir
+from os import environ
 from os.path import basename
 from os.path import dirname
@@ -38,5 +39,7 @@ html_show_copyright = False
 highlight_language = 'none'
 
-version = subprocess.check_output(['make', '-sRrC', '../../', 'showversion'])
+# If MAKEFLAGS is exported by the user, garbage text might end up in version
+version = subprocess.check_output(['make', '-sRrC', '../../', 'showversion'],
+                                  env=dict(environ, MAKEFLAGS=""))
 version = version.decode('utf-8').rstrip()
 release = version
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:07.649500426 +0000
+++ 0008-doc-fix-garbage-text-in-generated-HTML-guides.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,8 +1,10 @@
-From 430b35de4a579a7f65eda5c3fd00eaab2bc57aca Mon Sep 17 00:00:00 2001
+From 8f8cc56e461a830fa0d277a0e25dff4ade1807a0 Mon Sep 17 00:00:00 2001
 From: Luca Boccassi <bluca@debian.org>
 Date: Wed, 5 Dec 2018 14:25:45 +0000
 Subject: [PATCH] doc: fix garbage text in generated HTML guides
 
+[ upstream commit 430b35de4a579a7f65eda5c3fd00eaab2bc57aca ]
+
 If the user has MAKEFLAGS set in the environment when building the
 documentation, the doc/guides/conf.py script which calls "make"
 exclusively to get the project version might pick up garbage from
@@ -17,7 +19,6 @@
 Override MAKEFLAGS in the Python subprocess call to avoid this issue.
 
 Fixes: f7aaae2fe6f7 ("doc: add copyright and version")
-Cc: stable@dpdk.org
 
 Signed-off-by: Luca Boccassi <bluca@debian.org>
 ---

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

* [dpdk-stable] patch 'eal: clean up unused files on initialization' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (6 preceding siblings ...)
  2019-01-04 13:23 ` [dpdk-stable] patch 'doc: fix garbage text in generated HTML guides' " Kevin Traynor
@ 2019-01-04 13:23 ` Kevin Traynor
  2019-01-08 16:53   ` Burakov, Anatoly
  2019-01-04 13:23 ` [dpdk-stable] patch 'gro: fix overflow of payload length calculation' " Kevin Traynor
                   ` (63 subsequent siblings)
  71 siblings, 1 reply; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:23 UTC (permalink / raw)
  To: Anatoly Burakov; +Cc: Vipin Varghese, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 8c95205c36c6872e2a96a70bd0044d91cbe1792a Mon Sep 17 00:00:00 2001
From: Anatoly Burakov <anatoly.burakov@intel.com>
Date: Tue, 13 Nov 2018 15:54:44 +0000
Subject: [PATCH] eal: clean up unused files on initialization

[ upstream commit 0a529578f162df8b16e4eb7423e55570f3d13c97 ]

When creating process data structures, EAL will create many files
in EAL runtime directory. Because we allow multiple secondary
processes to run, each secondary process gets their own unique
file. With many secondary processes running and exiting on the
system, runtime directory will, over time, create enormous amounts
of sockets, fbarray files and other stuff that just sits there
unused because the process that allocated it has died a long time
ago. This may lead to exhaustion of disk (or RAM) space in the
runtime directory.

Fix this by removing every unlocked file at initialization that
matches either socket or fbarray naming convention. We cannot be
sure of any other files, so we'll leave them alone. Also, remove
similar code from mp socket code.

We do it at the end of init, rather than at the beginning, because
secondary process will use primary process' data structures even
if the primary itself has died, and we don't want to remove those
before we lock them.

Bugzilla ID: 106

Reported-by: Vipin Varghese <vipin.varghese@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
 lib/librte_eal/bsdapp/eal/eal.c         | 100 ++++++++++++++++++++++++
 lib/librte_eal/common/eal_common_proc.c |  30 -------
 lib/librte_eal/common/eal_filesystem.h  |   3 +
 lib/librte_eal/linuxapp/eal/eal.c       |  99 +++++++++++++++++++++++
 4 files changed, 202 insertions(+), 30 deletions(-)

diff --git a/lib/librte_eal/bsdapp/eal/eal.c b/lib/librte_eal/bsdapp/eal/eal.c
index b8152a75c..41ddb5a22 100644
--- a/lib/librte_eal/bsdapp/eal/eal.c
+++ b/lib/librte_eal/bsdapp/eal/eal.c
@@ -4,4 +4,6 @@
  */
 
+#include <dirent.h>
+#include <fnmatch.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -142,4 +144,90 @@ eal_create_runtime_dir(void)
 }
 
+int
+eal_clean_runtime_dir(void)
+{
+	DIR *dir;
+	struct dirent *dirent;
+	int dir_fd, fd, lck_result;
+	static const char * const filters[] = {
+		"fbarray_*",
+		"mp_socket_*"
+	};
+
+	/* open directory */
+	dir = opendir(runtime_dir);
+	if (!dir) {
+		RTE_LOG(ERR, EAL, "Unable to open runtime directory %s\n",
+				runtime_dir);
+		goto error;
+	}
+	dir_fd = dirfd(dir);
+
+	/* lock the directory before doing anything, to avoid races */
+	if (flock(dir_fd, LOCK_EX) < 0) {
+		RTE_LOG(ERR, EAL, "Unable to lock runtime directory %s\n",
+			runtime_dir);
+		goto error;
+	}
+
+	dirent = readdir(dir);
+	if (!dirent) {
+		RTE_LOG(ERR, EAL, "Unable to read runtime directory %s\n",
+				runtime_dir);
+		goto error;
+	}
+
+	while (dirent != NULL) {
+		unsigned int f_idx;
+		bool skip = true;
+
+		/* skip files that don't match the patterns */
+		for (f_idx = 0; f_idx < RTE_DIM(filters); f_idx++) {
+			const char *filter = filters[f_idx];
+
+			if (fnmatch(filter, dirent->d_name, 0) == 0) {
+				skip = false;
+				break;
+			}
+		}
+		if (skip) {
+			dirent = readdir(dir);
+			continue;
+		}
+
+		/* try and lock the file */
+		fd = openat(dir_fd, dirent->d_name, O_RDONLY);
+
+		/* skip to next file */
+		if (fd == -1) {
+			dirent = readdir(dir);
+			continue;
+		}
+
+		/* non-blocking lock */
+		lck_result = flock(fd, LOCK_EX | LOCK_NB);
+
+		/* if lock succeeds, remove the file */
+		if (lck_result != -1)
+			unlinkat(dir_fd, dirent->d_name, 0);
+		close(fd);
+		dirent = readdir(dir);
+	}
+
+	/* closedir closes dir_fd and drops the lock */
+	closedir(dir);
+	return 0;
+
+error:
+	if (dir)
+		closedir(dir);
+
+	RTE_LOG(ERR, EAL, "Error while clearing runtime dir: %s\n",
+		strerror(errno));
+
+	return -1;
+}
+
+
 const char *
 rte_eal_get_runtime_dir(void)
@@ -808,4 +896,16 @@ rte_eal_init(int argc, char **argv)
 	}
 
+	/*
+	 * Clean up unused files in runtime directory. We do this at the end of
+	 * init and not at the beginning because we want to clean stuff up
+	 * whether we are primary or secondary process, but we cannot remove
+	 * primary process' files because secondary should be able to run even
+	 * if primary process is dead.
+	 */
+	if (eal_clean_runtime_dir() < 0) {
+		rte_eal_init_alert("Cannot clear runtime directory\n");
+		return -1;
+	}
+
 	rte_eal_mcfg_complete();
 
diff --git a/lib/librte_eal/common/eal_common_proc.c b/lib/librte_eal/common/eal_common_proc.c
index 1c3f09aad..6b876590a 100644
--- a/lib/librte_eal/common/eal_common_proc.c
+++ b/lib/librte_eal/common/eal_common_proc.c
@@ -543,27 +543,4 @@ open_socket_fd(void)
 }
 
-static int
-unlink_sockets(const char *filter)
-{
-	int dir_fd;
-	DIR *mp_dir;
-	struct dirent *ent;
-
-	mp_dir = opendir(mp_dir_path);
-	if (!mp_dir) {
-		RTE_LOG(ERR, EAL, "Unable to open directory %s\n", mp_dir_path);
-		return -1;
-	}
-	dir_fd = dirfd(mp_dir);
-
-	while ((ent = readdir(mp_dir))) {
-		if (fnmatch(filter, ent->d_name, 0) == 0)
-			unlinkat(dir_fd, ent->d_name, 0);
-	}
-
-	closedir(mp_dir);
-	return 0;
-}
-
 int
 rte_mp_channel_init(void)
@@ -604,11 +581,4 @@ rte_mp_channel_init(void)
 	}
 
-	if (rte_eal_process_type() == RTE_PROC_PRIMARY &&
-			unlink_sockets(mp_filter)) {
-		RTE_LOG(ERR, EAL, "failed to unlink mp sockets\n");
-		close(dir_fd);
-		return -1;
-	}
-
 	if (open_socket_fd() < 0) {
 		close(dir_fd);
diff --git a/lib/librte_eal/common/eal_filesystem.h b/lib/librte_eal/common/eal_filesystem.h
index 6e0331fdb..64a028db7 100644
--- a/lib/librte_eal/common/eal_filesystem.h
+++ b/lib/librte_eal/common/eal_filesystem.h
@@ -26,4 +26,7 @@ int
 eal_create_runtime_dir(void);
 
+int
+eal_clean_runtime_dir(void);
+
 #define RUNTIME_CONFIG_FNAME "config"
 static inline const char *
diff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c
index 361744d40..d252c8591 100644
--- a/lib/librte_eal/linuxapp/eal/eal.c
+++ b/lib/librte_eal/linuxapp/eal/eal.c
@@ -14,5 +14,7 @@
 #include <getopt.h>
 #include <sys/file.h>
+#include <dirent.h>
 #include <fcntl.h>
+#include <fnmatch.h>
 #include <stddef.h>
 #include <errno.h>
@@ -150,4 +152,89 @@ eal_create_runtime_dir(void)
 }
 
+int
+eal_clean_runtime_dir(void)
+{
+	DIR *dir;
+	struct dirent *dirent;
+	int dir_fd, fd, lck_result;
+	static const char * const filters[] = {
+		"fbarray_*",
+		"mp_socket_*"
+	};
+
+	/* open directory */
+	dir = opendir(runtime_dir);
+	if (!dir) {
+		RTE_LOG(ERR, EAL, "Unable to open runtime directory %s\n",
+				runtime_dir);
+		goto error;
+	}
+	dir_fd = dirfd(dir);
+
+	/* lock the directory before doing anything, to avoid races */
+	if (flock(dir_fd, LOCK_EX) < 0) {
+		RTE_LOG(ERR, EAL, "Unable to lock runtime directory %s\n",
+			runtime_dir);
+		goto error;
+	}
+
+	dirent = readdir(dir);
+	if (!dirent) {
+		RTE_LOG(ERR, EAL, "Unable to read runtime directory %s\n",
+				runtime_dir);
+		goto error;
+	}
+
+	while (dirent != NULL) {
+		unsigned int f_idx;
+		bool skip = true;
+
+		/* skip files that don't match the patterns */
+		for (f_idx = 0; f_idx < RTE_DIM(filters); f_idx++) {
+			const char *filter = filters[f_idx];
+
+			if (fnmatch(filter, dirent->d_name, 0) == 0) {
+				skip = false;
+				break;
+			}
+		}
+		if (skip) {
+			dirent = readdir(dir);
+			continue;
+		}
+
+		/* try and lock the file */
+		fd = openat(dir_fd, dirent->d_name, O_RDONLY);
+
+		/* skip to next file */
+		if (fd == -1) {
+			dirent = readdir(dir);
+			continue;
+		}
+
+		/* non-blocking lock */
+		lck_result = flock(fd, LOCK_EX | LOCK_NB);
+
+		/* if lock succeeds, remove the file */
+		if (lck_result != -1)
+			unlinkat(dir_fd, dirent->d_name, 0);
+		close(fd);
+		dirent = readdir(dir);
+	}
+
+	/* closedir closes dir_fd and drops the lock */
+	closedir(dir);
+	return 0;
+
+error:
+	if (dir)
+		closedir(dir);
+
+	RTE_LOG(ERR, EAL, "Error while clearing runtime dir: %s\n",
+		strerror(errno));
+
+	return -1;
+}
+
 const char *
 rte_eal_get_runtime_dir(void)
@@ -1097,4 +1184,16 @@ rte_eal_init(int argc, char **argv)
 	}
 
+	/*
+	 * Clean up unused files in runtime directory. We do this at the end of
+	 * init and not at the beginning because we want to clean stuff up
+	 * whether we are primary or secondary process, but we cannot remove
+	 * primary process' files because secondary should be able to run even
+	 * if primary process is dead.
+	 */
+	if (eal_clean_runtime_dir() < 0) {
+		rte_eal_init_alert("Cannot clear runtime directory\n");
+		return -1;
+	}
+
 	rte_eal_mcfg_complete();
 
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:07.672255523 +0000
+++ 0009-eal-clean-up-unused-files-on-initialization.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,8 +1,10 @@
-From 0a529578f162df8b16e4eb7423e55570f3d13c97 Mon Sep 17 00:00:00 2001
+From 8c95205c36c6872e2a96a70bd0044d91cbe1792a Mon Sep 17 00:00:00 2001
 From: Anatoly Burakov <anatoly.burakov@intel.com>
 Date: Tue, 13 Nov 2018 15:54:44 +0000
 Subject: [PATCH] eal: clean up unused files on initialization
 
+[ upstream commit 0a529578f162df8b16e4eb7423e55570f3d13c97 ]
+
 When creating process data structures, EAL will create many files
 in EAL runtime directory. Because we allow multiple secondary
 processes to run, each secondary process gets their own unique
@@ -24,7 +26,6 @@
 before we lock them.
 
 Bugzilla ID: 106
-Cc: stable@dpdk.org
 
 Reported-by: Vipin Varghese <vipin.varghese@intel.com>
 Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>

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

* [dpdk-stable] patch 'gro: fix overflow of payload length calculation' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (7 preceding siblings ...)
  2019-01-04 13:23 ` [dpdk-stable] patch 'eal: clean up unused files on initialization' " Kevin Traynor
@ 2019-01-04 13:23 ` Kevin Traynor
  2019-01-04 13:23 ` [dpdk-stable] patch 'eventdev: fix error log in eth Rx adapter' " Kevin Traynor
                   ` (62 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:23 UTC (permalink / raw)
  To: Jiayu Hu; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From af703566f8bbb1cc6dda529d47fadc17117ffd09 Mon Sep 17 00:00:00 2001
From: Jiayu Hu <jiayu.hu@intel.com>
Date: Mon, 17 Dec 2018 14:05:39 +0800
Subject: [PATCH] gro: fix overflow of payload length calculation

[ upstream commit f8a05885e7fffbcba1b42bf21ac61c2523943cde ]

When the packet length is smaller than the header length,
the calculated payload length will be overflowed and result
in incorrect reassembly behaviors.

Fixes: 1e4cf4d6d4fb ("gro: cleanup")
Fixes: 9e0b9d2ec0f4 ("gro: support VxLAN GRO")

Signed-off-by: Jiayu Hu <jiayu.hu@intel.com>
---
 lib/librte_gro/gro_tcp4.c       | 3 ++-
 lib/librte_gro/gro_vxlan_tcp4.c | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/lib/librte_gro/gro_tcp4.c b/lib/librte_gro/gro_tcp4.c
index 2c0f35c6d..2fe9aab3e 100644
--- a/lib/librte_gro/gro_tcp4.c
+++ b/lib/librte_gro/gro_tcp4.c
@@ -199,5 +199,6 @@ gro_tcp4_reassemble(struct rte_mbuf *pkt,
 	struct tcp_hdr *tcp_hdr;
 	uint32_t sent_seq;
-	uint16_t tcp_dl, ip_id, hdr_len, frag_off;
+	int32_t tcp_dl;
+	uint16_t ip_id, hdr_len, frag_off;
 	uint8_t is_atomic;
 
diff --git a/lib/librte_gro/gro_vxlan_tcp4.c b/lib/librte_gro/gro_vxlan_tcp4.c
index ca86f010c..955ae4b56 100644
--- a/lib/librte_gro/gro_vxlan_tcp4.c
+++ b/lib/librte_gro/gro_vxlan_tcp4.c
@@ -296,5 +296,6 @@ gro_vxlan_tcp4_reassemble(struct rte_mbuf *pkt,
 	struct vxlan_hdr *vxlan_hdr;
 	uint32_t sent_seq;
-	uint16_t tcp_dl, frag_off, outer_ip_id, ip_id;
+	int32_t tcp_dl;
+	uint16_t frag_off, outer_ip_id, ip_id;
 	uint8_t outer_is_atomic, is_atomic;
 
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:07.697424029 +0000
+++ 0010-gro-fix-overflow-of-payload-length-calculation.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,15 +1,16 @@
-From f8a05885e7fffbcba1b42bf21ac61c2523943cde Mon Sep 17 00:00:00 2001
+From af703566f8bbb1cc6dda529d47fadc17117ffd09 Mon Sep 17 00:00:00 2001
 From: Jiayu Hu <jiayu.hu@intel.com>
 Date: Mon, 17 Dec 2018 14:05:39 +0800
 Subject: [PATCH] gro: fix overflow of payload length calculation
 
+[ upstream commit f8a05885e7fffbcba1b42bf21ac61c2523943cde ]
+
 When the packet length is smaller than the header length,
 the calculated payload length will be overflowed and result
 in incorrect reassembly behaviors.
 
 Fixes: 1e4cf4d6d4fb ("gro: cleanup")
 Fixes: 9e0b9d2ec0f4 ("gro: support VxLAN GRO")
-Cc: stable@dpdk.org
 
 Signed-off-by: Jiayu Hu <jiayu.hu@intel.com>
 ---

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

* [dpdk-stable] patch 'eventdev: fix error log in eth Rx adapter' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (8 preceding siblings ...)
  2019-01-04 13:23 ` [dpdk-stable] patch 'gro: fix overflow of payload length calculation' " Kevin Traynor
@ 2019-01-04 13:23 ` Kevin Traynor
  2019-01-04 13:23 ` [dpdk-stable] patch 'eventdev: remove redundant timer adapter function prototypes' " Kevin Traynor
                   ` (61 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:23 UTC (permalink / raw)
  To: Nikhil Rao; +Cc: Ferruh Yigit, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 4b385ed98182c1a5620e3ac71c944ed69ac57b22 Mon Sep 17 00:00:00 2001
From: Nikhil Rao <nikhil.rao@intel.com>
Date: Thu, 29 Nov 2018 13:30:17 +0530
Subject: [PATCH] eventdev: fix error log in eth Rx adapter

[ upstream commit 91c1667da077976a8fe443cfc9281ef430c5532c ]

strerror() input parameter should be > 0.

Coverity issue: 302864
Fixes: 3810ae435783 ("eventdev: add interrupt driven queues to Rx adapter")

Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 lib/librte_eventdev/rte_event_eth_rx_adapter.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/librte_eventdev/rte_event_eth_rx_adapter.c b/lib/librte_eventdev/rte_event_eth_rx_adapter.c
index 8831bc35f..8d178be15 100644
--- a/lib/librte_eventdev/rte_event_eth_rx_adapter.c
+++ b/lib/librte_eventdev/rte_event_eth_rx_adapter.c
@@ -913,5 +913,5 @@ rxa_intr_ring_enqueue(struct rte_event_eth_rx_adapter *rx_adapter,
 		if (err)
 			RTE_EDEV_LOG_ERR("Failed to enqueue interrupt"
-				" to ring: %s", strerror(err));
+				" to ring: %s", strerror(-err));
 		else
 			rte_eth_dev_rx_intr_disable(port_id, queue);
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:07.720488365 +0000
+++ 0011-eventdev-fix-error-log-in-eth-Rx-adapter.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,13 +1,14 @@
-From 91c1667da077976a8fe443cfc9281ef430c5532c Mon Sep 17 00:00:00 2001
+From 4b385ed98182c1a5620e3ac71c944ed69ac57b22 Mon Sep 17 00:00:00 2001
 From: Nikhil Rao <nikhil.rao@intel.com>
 Date: Thu, 29 Nov 2018 13:30:17 +0530
 Subject: [PATCH] eventdev: fix error log in eth Rx adapter
 
+[ upstream commit 91c1667da077976a8fe443cfc9281ef430c5532c ]
+
 strerror() input parameter should be > 0.
 
 Coverity issue: 302864
 Fixes: 3810ae435783 ("eventdev: add interrupt driven queues to Rx adapter")
-Cc: stable@dpdk.org
 
 Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
 Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>

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

* [dpdk-stable] patch 'eventdev: remove redundant timer adapter function prototypes' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (9 preceding siblings ...)
  2019-01-04 13:23 ` [dpdk-stable] patch 'eventdev: fix error log in eth Rx adapter' " Kevin Traynor
@ 2019-01-04 13:23 ` Kevin Traynor
  2019-01-04 13:23 ` [dpdk-stable] patch 'app/eventdev: detect deadlock for timer event producer' " Kevin Traynor
                   ` (60 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:23 UTC (permalink / raw)
  To: Erik Gabriel Carrillo; +Cc: Jerin Jacob, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 832f227f6d4cc00d39fd1e8189b49e7352e5d43a Mon Sep 17 00:00:00 2001
From: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
Date: Thu, 29 Nov 2018 13:45:26 -0600
Subject: [PATCH] eventdev: remove redundant timer adapter function prototypes

[ upstream commit ac0fc54a49eb4c07ed38606344683dd533a4decb ]

Fixes: 6750b21bd6af ("eventdev: add default software timer adapter")

Signed-off-by: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
---
 lib/librte_eventdev/rte_event_timer_adapter.h | 57 +------------------
 1 file changed, 2 insertions(+), 55 deletions(-)

diff --git a/lib/librte_eventdev/rte_event_timer_adapter.h b/lib/librte_eventdev/rte_event_timer_adapter.h
index d4ea6f172..db98dec46 100644
--- a/lib/librte_eventdev/rte_event_timer_adapter.h
+++ b/lib/librte_eventdev/rte_event_timer_adapter.h
@@ -462,59 +462,6 @@ rte_event_timer_adapter_stats_get(struct rte_event_timer_adapter *adapter,
  *   - <0: Failure; error code returned.
  */
-int __rte_experimental rte_event_timer_adapter_stats_reset(
-		struct rte_event_timer_adapter *adapter);
-
-/**
- * Retrieve the service ID of the event timer adapter. If the adapter doesn't
- * use an rte_service function, this function returns -ESRCH.
- *
- * @param adapter
- *   A pointer to an event timer adapter.
- *
- * @param [out] service_id
- *   A pointer to a uint32_t, to be filled in with the service id.
- *
- * @return
- *   - 0: Success
- *   - <0: Error code on failure, if the event dev doesn't use a rte_service
- *   function, this function returns -ESRCH.
- */
-int
-rte_event_timer_adapter_service_id_get(struct rte_event_timer_adapter *adapter,
-				       uint32_t *service_id);
-
-/**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
- * Retrieve statistics for an event timer adapter instance.
- *
- * @param adapter
- *   A pointer to an event timer adapter structure.
- * @param[out] stats
- *   A pointer to a structure to fill with statistics.
- *
- * @return
- *   - 0: Successfully retrieved.
- *   - <0: Failure; error code returned.
- */
-int rte_event_timer_adapter_stats_get(struct rte_event_timer_adapter *adapter,
-				struct rte_event_timer_adapter_stats *stats);
-
-/**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
- * Reset statistics for an event timer adapter instance.
- *
- * @param adapter
- *   A pointer to an event timer adapter structure.
- *
- * @return
- *   - 0: Successfully reset;
- *   - <0: Failure; error code returned.
- */
-int rte_event_timer_adapter_stats_reset(
-				struct rte_event_timer_adapter *adapter);
+int __rte_experimental
+rte_event_timer_adapter_stats_reset(struct rte_event_timer_adapter *adapter);
 
 /**
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:07.745762834 +0000
+++ 0012-eventdev-remove-redundant-timer-adapter-function-pro.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,10 +1,11 @@
-From ac0fc54a49eb4c07ed38606344683dd533a4decb Mon Sep 17 00:00:00 2001
+From 832f227f6d4cc00d39fd1e8189b49e7352e5d43a Mon Sep 17 00:00:00 2001
 From: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
 Date: Thu, 29 Nov 2018 13:45:26 -0600
 Subject: [PATCH] eventdev: remove redundant timer adapter function prototypes
 
+[ upstream commit ac0fc54a49eb4c07ed38606344683dd533a4decb ]
+
 Fixes: 6750b21bd6af ("eventdev: add default software timer adapter")
-Cc: stable@dpdk.org
 
 Signed-off-by: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
 Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>

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

* [dpdk-stable] patch 'app/eventdev: detect deadlock for timer event producer' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (10 preceding siblings ...)
  2019-01-04 13:23 ` [dpdk-stable] patch 'eventdev: remove redundant timer adapter function prototypes' " Kevin Traynor
@ 2019-01-04 13:23 ` Kevin Traynor
  2019-01-04 13:23 ` [dpdk-stable] patch 'eventdev: fix xstats documentation typo' " Kevin Traynor
                   ` (59 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:23 UTC (permalink / raw)
  To: Erik Gabriel Carrillo; +Cc: Jerin Jacob, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From d581ef04bbd88ae93b57c2a340036700d27fdbaa Mon Sep 17 00:00:00 2001
From: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
Date: Mon, 3 Dec 2018 11:48:14 -0600
Subject: [PATCH] app/eventdev: detect deadlock for timer event producer

[ upstream commit 4730378428cf32a8ccdf6c018a399536a7144cc6 ]

If timer events get dropped for some reason, the thread that launched
producer and worker cores will never exit, because the deadlock check
doesn't currently apply to the event timer adapter case. This commit
fixes this.

Fixes: d008f20bce23 ("app/eventdev: add event timer adapter as a producer")

Signed-off-by: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
---
 app/test-eventdev/test_perf_common.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/app/test-eventdev/test_perf_common.c b/app/test-eventdev/test_perf_common.c
index 861877532..f99a6a607 100644
--- a/app/test-eventdev/test_perf_common.c
+++ b/app/test-eventdev/test_perf_common.c
@@ -328,5 +328,6 @@ perf_launch_lcores(struct evt_test *test, struct evt_options *opt,
 
 		if (new_cycles - dead_lock_cycles > dead_lock_sample &&
-				opt->prod_type == EVT_PROD_TYPE_SYNT) {
+		    (opt->prod_type == EVT_PROD_TYPE_SYNT ||
+		     opt->prod_type == EVT_PROD_TYPE_EVENT_TIMER_ADPTR)) {
 			remaining = t->outstand_pkts - processed_pkts(t);
 			if (dead_lock_remaining == remaining) {
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:07.768311296 +0000
+++ 0013-app-eventdev-detect-deadlock-for-timer-event-produce.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,15 +1,16 @@
-From 4730378428cf32a8ccdf6c018a399536a7144cc6 Mon Sep 17 00:00:00 2001
+From d581ef04bbd88ae93b57c2a340036700d27fdbaa Mon Sep 17 00:00:00 2001
 From: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
 Date: Mon, 3 Dec 2018 11:48:14 -0600
 Subject: [PATCH] app/eventdev: detect deadlock for timer event producer
 
+[ upstream commit 4730378428cf32a8ccdf6c018a399536a7144cc6 ]
+
 If timer events get dropped for some reason, the thread that launched
 producer and worker cores will never exit, because the deadlock check
 doesn't currently apply to the event timer adapter case. This commit
 fixes this.
 
 Fixes: d008f20bce23 ("app/eventdev: add event timer adapter as a producer")
-Cc: stable@dpdk.org
 
 Signed-off-by: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
 Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>

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

* [dpdk-stable] patch 'eventdev: fix xstats documentation typo' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (11 preceding siblings ...)
  2019-01-04 13:23 ` [dpdk-stable] patch 'app/eventdev: detect deadlock for timer event producer' " Kevin Traynor
@ 2019-01-04 13:23 ` Kevin Traynor
  2019-01-04 13:23 ` [dpdk-stable] patch 'eventdev: fix eth Tx adapter queue count checks' " Kevin Traynor
                   ` (58 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:23 UTC (permalink / raw)
  To: Gage Eads; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 489ad75e1a04e4194f016ccd1c45500341838570 Mon Sep 17 00:00:00 2001
From: Gage Eads <gage.eads@intel.com>
Date: Mon, 3 Dec 2018 14:05:04 -0600
Subject: [PATCH] eventdev: fix xstats documentation typo

[ upstream commit 1f7a11026988955b865a2b9f570f5cff087bd9b1 ]

The eventdev extended stats documentation referred to two non-existent
functions, rte_eventdev_xstats_get and rte_eventdev_get_xstats_by_name.

Fixes: 3ed7fc039a ("eventdev: add extended stats")

Signed-off-by: Gage Eads <gage.eads@intel.com>
---
 lib/librte_eventdev/rte_eventdev.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/librte_eventdev/rte_eventdev.h b/lib/librte_eventdev/rte_eventdev.h
index d7eb69d1f..ef10a855d 100644
--- a/lib/librte_eventdev/rte_eventdev.h
+++ b/lib/librte_eventdev/rte_eventdev.h
@@ -1894,5 +1894,5 @@ rte_event_dev_xstats_names_get(uint8_t dev_id,
  *   The id numbers of the stats to get. The ids can be got from the stat
  *   position in the stat list from rte_event_dev_get_xstats_names(), or
- *   by using rte_eventdev_get_xstats_by_name()
+ *   by using rte_event_dev_xstats_by_name_get().
  * @param[out] values
  *   The values for each stats request by ID.
@@ -1922,5 +1922,5 @@ rte_event_dev_xstats_get(uint8_t dev_id,
  * @param[out] id
  *   If non-NULL, the numerical id of the stat will be returned, so that further
- *   requests for the stat can be got using rte_eventdev_xstats_get, which will
+ *   requests for the stat can be got using rte_event_dev_xstats_get, which will
  *   be faster as it doesn't need to scan a list of names for the stat.
  *   If the stat cannot be found, the id returned will be (unsigned)-1.
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:07.791430744 +0000
+++ 0014-eventdev-fix-xstats-documentation-typo.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,13 +1,14 @@
-From 1f7a11026988955b865a2b9f570f5cff087bd9b1 Mon Sep 17 00:00:00 2001
+From 489ad75e1a04e4194f016ccd1c45500341838570 Mon Sep 17 00:00:00 2001
 From: Gage Eads <gage.eads@intel.com>
 Date: Mon, 3 Dec 2018 14:05:04 -0600
 Subject: [PATCH] eventdev: fix xstats documentation typo
 
+[ upstream commit 1f7a11026988955b865a2b9f570f5cff087bd9b1 ]
+
 The eventdev extended stats documentation referred to two non-existent
 functions, rte_eventdev_xstats_get and rte_eventdev_get_xstats_by_name.
 
 Fixes: 3ed7fc039a ("eventdev: add extended stats")
-Cc: stable@dpdk.org
 
 Signed-off-by: Gage Eads <gage.eads@intel.com>
 ---

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

* [dpdk-stable] patch 'eventdev: fix eth Tx adapter queue count checks' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (12 preceding siblings ...)
  2019-01-04 13:23 ` [dpdk-stable] patch 'eventdev: fix xstats documentation typo' " Kevin Traynor
@ 2019-01-04 13:23 ` Kevin Traynor
  2019-01-04 13:23 ` [dpdk-stable] patch 'compressdev: fix structure comment' " Kevin Traynor
                   ` (57 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:23 UTC (permalink / raw)
  To: Nikhil Rao; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From ca606f46af5c45e08c2492e87749ba2808347538 Mon Sep 17 00:00:00 2001
From: Nikhil Rao <nikhil.rao@intel.com>
Date: Mon, 17 Dec 2018 10:09:41 +0530
Subject: [PATCH] eventdev: fix eth Tx adapter queue count checks

[ upstream commit 5bd4ae2d774b5988a1b5ec084f27f859e91c655e ]

rte_event_eth_tx_adapter_queue_add() - add a check
that returns an error if the ethdev has zero Tx queues
configured.

rte_event_eth_tx_adapter_queue_del() - remove the
checks for ethdev queue count, instead check for
queues added to the adapter which maybe different
from the current ethdev queue count.

Fixes: a3bbf2e09756 ("eventdev: add eth Tx adapter implementation")

Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
---
 .../rte_event_eth_tx_adapter.c                | 54 +++++++++++++------
 1 file changed, 37 insertions(+), 17 deletions(-)

diff --git a/lib/librte_eventdev/rte_event_eth_tx_adapter.c b/lib/librte_eventdev/rte_event_eth_tx_adapter.c
index ccf8a7550..67216a305 100644
--- a/lib/librte_eventdev/rte_event_eth_tx_adapter.c
+++ b/lib/librte_eventdev/rte_event_eth_tx_adapter.c
@@ -60,4 +60,18 @@ do {\
 } while (0)
 
+#define TXA_CHECK_TXQ(dev, queue) \
+do {\
+	if ((dev)->data->nb_tx_queues == 0) { \
+		RTE_EDEV_LOG_ERR("No tx queues configured"); \
+		return -EINVAL; \
+	} \
+	if ((queue) != -1 && \
+		(uint16_t)(queue) >= (dev)->data->nb_tx_queues) { \
+		RTE_EDEV_LOG_ERR("Invalid tx queue_id %" PRIu16, \
+				(uint16_t)(queue)); \
+		return -EINVAL; \
+	} \
+} while (0)
+
 /* Tx retry callback structure */
 struct txa_retry {
@@ -796,12 +810,28 @@ txa_service_queue_del(uint8_t id,
 	uint16_t port_id;
 
+	txa = txa_service_id_to_data(id);
+	port_id = dev->data->port_id;
+
 	if (tx_queue_id == -1) {
-		uint16_t i;
-		int ret = -1;
+		uint16_t i, q, nb_queues;
+		int ret = 0;
 
-		for (i = 0; i < dev->data->nb_tx_queues; i++) {
-			ret = txa_service_queue_del(id, dev, i);
-			if (ret != 0)
-				break;
+		nb_queues = txa->nb_queues;
+		if (nb_queues == 0)
+			return 0;
+
+		i = 0;
+		q = 0;
+		tqi = txa->txa_ethdev[port_id].queues;
+
+		while (i < nb_queues) {
+
+			if (tqi[q].added) {
+				ret = txa_service_queue_del(id, dev, q);
+				if (ret != 0)
+					break;
+			}
+			i++;
+			q++;
 		}
 		return ret;
@@ -809,5 +839,4 @@ txa_service_queue_del(uint8_t id,
 
 	txa = txa_service_id_to_data(id);
-	port_id = dev->data->port_id;
 
 	tqi = txa_service_queue(txa, port_id, tx_queue_id);
@@ -1000,9 +1029,5 @@ rte_event_eth_tx_adapter_queue_add(uint8_t id,
 
 	eth_dev = &rte_eth_devices[eth_dev_id];
-	if (queue != -1 && (uint16_t)queue >= eth_dev->data->nb_tx_queues) {
-		RTE_EDEV_LOG_ERR("Invalid tx queue_id %" PRIu16,
-				(uint16_t)queue);
-		return -EINVAL;
-	}
+	TXA_CHECK_TXQ(eth_dev, queue);
 
 	caps = 0;
@@ -1035,9 +1060,4 @@ rte_event_eth_tx_adapter_queue_del(uint8_t id,
 
 	eth_dev = &rte_eth_devices[eth_dev_id];
-	if (queue != -1 && (uint16_t)queue >= eth_dev->data->nb_tx_queues) {
-		RTE_EDEV_LOG_ERR("Invalid tx queue_id %" PRIu16,
-				(uint16_t)queue);
-		return -EINVAL;
-	}
 
 	caps = 0;
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:07.817307496 +0000
+++ 0015-eventdev-fix-eth-Tx-adapter-queue-count-checks.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,8 +1,10 @@
-From 5bd4ae2d774b5988a1b5ec084f27f859e91c655e Mon Sep 17 00:00:00 2001
+From ca606f46af5c45e08c2492e87749ba2808347538 Mon Sep 17 00:00:00 2001
 From: Nikhil Rao <nikhil.rao@intel.com>
 Date: Mon, 17 Dec 2018 10:09:41 +0530
 Subject: [PATCH] eventdev: fix eth Tx adapter queue count checks
 
+[ upstream commit 5bd4ae2d774b5988a1b5ec084f27f859e91c655e ]
+
 rte_event_eth_tx_adapter_queue_add() - add a check
 that returns an error if the ethdev has zero Tx queues
 configured.
@@ -13,7 +15,6 @@
 from the current ethdev queue count.
 
 Fixes: a3bbf2e09756 ("eventdev: add eth Tx adapter implementation")
-Cc: stable@dpdk.org
 
 Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
 ---

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

* [dpdk-stable] patch 'compressdev: fix structure comment' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (13 preceding siblings ...)
  2019-01-04 13:23 ` [dpdk-stable] patch 'eventdev: fix eth Tx adapter queue count checks' " Kevin Traynor
@ 2019-01-04 13:23 ` Kevin Traynor
  2019-01-04 13:23 ` [dpdk-stable] patch 'bb/turbo_sw: fix dynamic linking' " Kevin Traynor
                   ` (56 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:23 UTC (permalink / raw)
  To: Lee Daly; +Cc: Fiona Trahe, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From a869ffa4fdea4d1602546839e35e725fb3dc528d Mon Sep 17 00:00:00 2001
From: Lee Daly <lee.daly@intel.com>
Date: Tue, 27 Nov 2018 15:10:24 +0000
Subject: [PATCH] compressdev: fix structure comment

[ upstream commit 9d3e1cb1355db3b6593862e12d4304fbc4b2240d ]

Fixes incorrect comment on compressdev rte_comp_op structure element.
Comment needed to be updated to be compliant with the use of
chained mbufs.

Fixes: f87bdc1ddcf4 ("compressdev: add compression specific data")

Signed-off-by: Lee Daly <lee.daly@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
---
 lib/librte_compressdev/rte_comp.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/librte_compressdev/rte_comp.h b/lib/librte_compressdev/rte_comp.h
index 395ce29f8..ea306d5f9 100644
--- a/lib/librte_compressdev/rte_comp.h
+++ b/lib/librte_compressdev/rte_comp.h
@@ -311,5 +311,5 @@ struct rte_comp_op {
 	/**< source mbuf
 	 * The total size of the input buffer(s) can be retrieved using
-	 * rte_pktmbuf_data_len(m_src). The max data size which can fit in a
+	 * rte_pktmbuf_pkt_len(m_src). The max data size which can fit in a
 	 * single mbuf is limited by the uint16_t rte_mbuf.data_len to 64k-1.
 	 * If the input data is bigger than this it can be passed to the PMD in
@@ -319,5 +319,5 @@ struct rte_comp_op {
 	/**< destination mbuf
 	 * The total size of the output buffer(s) can be retrieved using
-	 * rte_pktmbuf_data_len(m_dst). The max data size which can fit in a
+	 * rte_pktmbuf_pkt_len(m_dst). The max data size which can fit in a
 	 * single mbuf is limited by the uint16_t rte_mbuf.data_len to 64k-1.
 	 * If the output data is expected to be bigger than this a chain of
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:07.839090302 +0000
+++ 0016-compressdev-fix-structure-comment.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,14 +1,15 @@
-From 9d3e1cb1355db3b6593862e12d4304fbc4b2240d Mon Sep 17 00:00:00 2001
+From a869ffa4fdea4d1602546839e35e725fb3dc528d Mon Sep 17 00:00:00 2001
 From: Lee Daly <lee.daly@intel.com>
 Date: Tue, 27 Nov 2018 15:10:24 +0000
 Subject: [PATCH] compressdev: fix structure comment
 
+[ upstream commit 9d3e1cb1355db3b6593862e12d4304fbc4b2240d ]
+
 Fixes incorrect comment on compressdev rte_comp_op structure element.
 Comment needed to be updated to be compliant with the use of
 chained mbufs.
 
 Fixes: f87bdc1ddcf4 ("compressdev: add compression specific data")
-Cc: stable@dpdk.org
 
 Signed-off-by: Lee Daly <lee.daly@intel.com>
 Acked-by: Fiona Trahe <fiona.trahe@intel.com>
@@ -17,7 +18,7 @@
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/lib/librte_compressdev/rte_comp.h b/lib/librte_compressdev/rte_comp.h
-index c2b3de8ed..67423bdc5 100644
+index 395ce29f8..ea306d5f9 100644
 --- a/lib/librte_compressdev/rte_comp.h
 +++ b/lib/librte_compressdev/rte_comp.h
 @@ -311,5 +311,5 @@ struct rte_comp_op {

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

* [dpdk-stable] patch 'bb/turbo_sw: fix dynamic linking' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (14 preceding siblings ...)
  2019-01-04 13:23 ` [dpdk-stable] patch 'compressdev: fix structure comment' " Kevin Traynor
@ 2019-01-04 13:23 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'crypto/qat: fix block size error handling' " Kevin Traynor
                   ` (55 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:23 UTC (permalink / raw)
  To: Kamil Chalupnik; +Cc: Amr Mokhtar, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 220ec355a1ba96aba580cc871e276d0f579e4a52 Mon Sep 17 00:00:00 2001
From: Kamil Chalupnik <kamilx.chalupnik@intel.com>
Date: Mon, 3 Dec 2018 14:48:11 +0100
Subject: [PATCH] bb/turbo_sw: fix dynamic linking

[ upstream commit 262ad21adccc42e8b82606317a23b90711a8adad ]

Building Turbo Software as shared library for AVX512 failed
due to wrong order of library in the library list (LDLIBS)

Fixes: b8cfe2c9aed2 ("bb/turbo_sw: add software turbo driver")

Signed-off-by: Kamil Chalupnik <kamilx.chalupnik@intel.com>
Acked-by: Amr Mokhtar <amr.mokhtar@intel.com>
---
 drivers/baseband/turbo_sw/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/baseband/turbo_sw/Makefile b/drivers/baseband/turbo_sw/Makefile
index 79eb55477..d36467706 100644
--- a/drivers/baseband/turbo_sw/Makefile
+++ b/drivers/baseband/turbo_sw/Makefile
@@ -28,6 +28,6 @@ CFLAGS += -I$(FLEXRAN_SDK)/lib_crc
 CFLAGS += -I$(FLEXRAN_SDK)/lib_rate_matching
 
-LDLIBS += -L$(FLEXRAN_SDK)/lib_crc -lcrc
 LDLIBS += -L$(FLEXRAN_SDK)/lib_turbo -lturbo
+LDLIBS += -L$(FLEXRAN_SDK)/lib_crc -lcrc
 LDLIBS += -L$(FLEXRAN_SDK)/lib_rate_matching -lrate_matching
 LDLIBS += -L$(FLEXRAN_SDK)/lib_common -lcommon
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:07.862234241 +0000
+++ 0017-bb-turbo_sw-fix-dynamic-linking.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,13 +1,14 @@
-From 262ad21adccc42e8b82606317a23b90711a8adad Mon Sep 17 00:00:00 2001
+From 220ec355a1ba96aba580cc871e276d0f579e4a52 Mon Sep 17 00:00:00 2001
 From: Kamil Chalupnik <kamilx.chalupnik@intel.com>
 Date: Mon, 3 Dec 2018 14:48:11 +0100
 Subject: [PATCH] bb/turbo_sw: fix dynamic linking
 
+[ upstream commit 262ad21adccc42e8b82606317a23b90711a8adad ]
+
 Building Turbo Software as shared library for AVX512 failed
 due to wrong order of library in the library list (LDLIBS)
 
 Fixes: b8cfe2c9aed2 ("bb/turbo_sw: add software turbo driver")
-Cc: stable@dpdk.org
 
 Signed-off-by: Kamil Chalupnik <kamilx.chalupnik@intel.com>
 Acked-by: Amr Mokhtar <amr.mokhtar@intel.com>

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

* [dpdk-stable] patch 'crypto/qat: fix block size error handling' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (15 preceding siblings ...)
  2019-01-04 13:23 ` [dpdk-stable] patch 'bb/turbo_sw: fix dynamic linking' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'crypto/qat: fix message for CCM when setting unused counter' " Kevin Traynor
                   ` (54 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Arek Kusztal; +Cc: Fiona Trahe, Marko Kovacevic, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 79061e5566737ef99cb68cc6316df966974c8928 Mon Sep 17 00:00:00 2001
From: Arek Kusztal <arkadiuszx.kusztal@intel.com>
Date: Wed, 12 Dec 2018 20:59:02 +0100
Subject: [PATCH] crypto/qat: fix block size error handling

[ upstream commit 93685b1fbf37d508032a4d640b67cd63075f93b9 ]

Error code of qat_hash_get_block_size needs to be handle properly.

Fixes: 10b49880e3c5 ("crypto/qat: make the session struct variable in size")

Signed-off-by: Arek Kusztal <arkadiuszx.kusztal@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
Tested-by: Marko Kovacevic <marko.kovacevic@intel.com>
Acked-by: Marko Kovacevic <marko.kovacevic@intel.com>
---
 drivers/crypto/qat/qat_sym_session.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/drivers/crypto/qat/qat_sym_session.c b/drivers/crypto/qat/qat_sym_session.c
index 8196e2333..272177f0a 100644
--- a/drivers/crypto/qat/qat_sym_session.c
+++ b/drivers/crypto/qat/qat_sym_session.c
@@ -1144,6 +1144,6 @@ static int qat_sym_do_precomputes(enum icp_qat_hw_auth_algo hash_alg,
 
 	block_size = qat_hash_get_block_size(hash_alg);
-	if (block_size <= 0)
-		return -EFAULT;
+	if (block_size < 0)
+		return block_size;
 	/* init ipad and opad from key and xor with fixed values */
 	memset(ipad, 0, block_size);
@@ -1491,7 +1491,11 @@ int qat_sym_session_aead_create_cd_auth(struct qat_sym_session *cdesc,
 			)
 		hash->auth_counter.counter = 0;
-	else
-		hash->auth_counter.counter = rte_bswap32(
-				qat_hash_get_block_size(cdesc->qat_hash_alg));
+	else {
+		int block_size = qat_hash_get_block_size(cdesc->qat_hash_alg);
+
+		if (block_size < 0)
+			return block_size;
+		hash->auth_counter.counter = rte_bswap32(block_size);
+	}
 
 	cdesc->cd_cur_ptr += sizeof(struct icp_qat_hw_auth_setup);
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:07.884043199 +0000
+++ 0018-crypto-qat-fix-block-size-error-handling.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,12 +1,13 @@
-From 93685b1fbf37d508032a4d640b67cd63075f93b9 Mon Sep 17 00:00:00 2001
+From 79061e5566737ef99cb68cc6316df966974c8928 Mon Sep 17 00:00:00 2001
 From: Arek Kusztal <arkadiuszx.kusztal@intel.com>
 Date: Wed, 12 Dec 2018 20:59:02 +0100
 Subject: [PATCH] crypto/qat: fix block size error handling
 
+[ upstream commit 93685b1fbf37d508032a4d640b67cd63075f93b9 ]
+
 Error code of qat_hash_get_block_size needs to be handle properly.
 
 Fixes: 10b49880e3c5 ("crypto/qat: make the session struct variable in size")
-Cc: stable@dpdk.org
 
 Signed-off-by: Arek Kusztal <arkadiuszx.kusztal@intel.com>
 Acked-by: Fiona Trahe <fiona.trahe@intel.com>

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

* [dpdk-stable] patch 'crypto/qat: fix message for CCM when setting unused counter' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (16 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'crypto/qat: fix block size error handling' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'crypto/qat: fix message for NULL algo " Kevin Traynor
                   ` (53 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Arek Kusztal; +Cc: Fiona Trahe, Marko Kovacevic, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 5671bf95f410fcf326163955034e3184f6f8744d Mon Sep 17 00:00:00 2001
From: Arek Kusztal <arkadiuszx.kusztal@intel.com>
Date: Wed, 12 Dec 2018 20:59:03 +0100
Subject: [PATCH] crypto/qat: fix message for CCM when setting unused counter

[ upstream commit 605eb4d5966bd4f0fbfca1afaae10dd49344a5d9 ]

AES-CCM algo does not to set counter flag so it should be zeroed.

Fixes: ab56c4d9ed9a ("crypto/qat: support AES-CCM")

Signed-off-by: Arek Kusztal <arkadiuszx.kusztal@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
Acked-by: Marko Kovacevic <marko.kovacevic@intel.com>
---
 drivers/crypto/qat/qat_sym_session.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/crypto/qat/qat_sym_session.c b/drivers/crypto/qat/qat_sym_session.c
index 272177f0a..d8cc70286 100644
--- a/drivers/crypto/qat/qat_sym_session.c
+++ b/drivers/crypto/qat/qat_sym_session.c
@@ -1489,4 +1489,5 @@ int qat_sym_session_aead_create_cd_auth(struct qat_sym_session *cdesc,
 		|| cdesc->qat_hash_alg == ICP_QAT_HW_AUTH_ALGO_ZUC_3G_128_EIA3
 		|| cdesc->qat_hash_alg == ICP_QAT_HW_AUTH_ALGO_AES_XCBC_MAC
+		|| cdesc->qat_hash_alg == ICP_QAT_HW_AUTH_ALGO_AES_CBC_MAC
 			)
 		hash->auth_counter.counter = 0;
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:07.907864475 +0000
+++ 0019-crypto-qat-fix-message-for-CCM-when-setting-unused-c.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,12 +1,13 @@
-From 605eb4d5966bd4f0fbfca1afaae10dd49344a5d9 Mon Sep 17 00:00:00 2001
+From 5671bf95f410fcf326163955034e3184f6f8744d Mon Sep 17 00:00:00 2001
 From: Arek Kusztal <arkadiuszx.kusztal@intel.com>
 Date: Wed, 12 Dec 2018 20:59:03 +0100
 Subject: [PATCH] crypto/qat: fix message for CCM when setting unused counter
 
+[ upstream commit 605eb4d5966bd4f0fbfca1afaae10dd49344a5d9 ]
+
 AES-CCM algo does not to set counter flag so it should be zeroed.
 
 Fixes: ab56c4d9ed9a ("crypto/qat: support AES-CCM")
-Cc: stable@dpdk.org
 
 Signed-off-by: Arek Kusztal <arkadiuszx.kusztal@intel.com>
 Acked-by: Fiona Trahe <fiona.trahe@intel.com>

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

* [dpdk-stable] patch 'crypto/qat: fix message for NULL algo setting unused counter' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (17 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'crypto/qat: fix message for CCM when setting unused counter' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'common/qat: remove check of valid firmware response' " Kevin Traynor
                   ` (52 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Arek Kusztal; +Cc: Fiona Trahe, Marko Kovacevic, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 0bf1868e47b7ebad67455b80a1725eb316af776c Mon Sep 17 00:00:00 2001
From: Arek Kusztal <arkadiuszx.kusztal@intel.com>
Date: Wed, 12 Dec 2018 20:59:04 +0100
Subject: [PATCH] crypto/qat: fix message for NULL algo setting unused counter

[ upstream commit 4dc73ff7042a27602a738be4450a8bae39388c4f ]

NULL algo algo does not to set counter flag so it should be zeroed.

Fixes: db0e952a5c01 ("crypto/qat: add NULL capability")

Signed-off-by: Arek Kusztal <arkadiuszx.kusztal@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
Acked-by: Marko Kovacevic <marko.kovacevic@intel.com>
---
 drivers/crypto/qat/qat_sym_session.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/crypto/qat/qat_sym_session.c b/drivers/crypto/qat/qat_sym_session.c
index d8cc70286..4d7ec01d4 100644
--- a/drivers/crypto/qat/qat_sym_session.c
+++ b/drivers/crypto/qat/qat_sym_session.c
@@ -1490,4 +1490,5 @@ int qat_sym_session_aead_create_cd_auth(struct qat_sym_session *cdesc,
 		|| cdesc->qat_hash_alg == ICP_QAT_HW_AUTH_ALGO_AES_XCBC_MAC
 		|| cdesc->qat_hash_alg == ICP_QAT_HW_AUTH_ALGO_AES_CBC_MAC
+		|| cdesc->qat_hash_alg == ICP_QAT_HW_AUTH_ALGO_NULL
 			)
 		hash->auth_counter.counter = 0;
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:07.931274408 +0000
+++ 0020-crypto-qat-fix-message-for-NULL-algo-setting-unused-.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,12 +1,13 @@
-From 4dc73ff7042a27602a738be4450a8bae39388c4f Mon Sep 17 00:00:00 2001
+From 0bf1868e47b7ebad67455b80a1725eb316af776c Mon Sep 17 00:00:00 2001
 From: Arek Kusztal <arkadiuszx.kusztal@intel.com>
 Date: Wed, 12 Dec 2018 20:59:04 +0100
 Subject: [PATCH] crypto/qat: fix message for NULL algo setting unused counter
 
+[ upstream commit 4dc73ff7042a27602a738be4450a8bae39388c4f ]
+
 NULL algo algo does not to set counter flag so it should be zeroed.
 
 Fixes: db0e952a5c01 ("crypto/qat: add NULL capability")
-Cc: stable@dpdk.org
 
 Signed-off-by: Arek Kusztal <arkadiuszx.kusztal@intel.com>
 Acked-by: Fiona Trahe <fiona.trahe@intel.com>

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

* [dpdk-stable] patch 'common/qat: remove check of valid firmware response' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (18 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'crypto/qat: fix message for NULL algo " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'compress/qat: fix return on building request error' " Kevin Traynor
                   ` (51 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Tomasz Jozwiak; +Cc: Fiona Trahe, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From aba3a2b8920464eb98fd8f617b3dee4e02a1fa13 Mon Sep 17 00:00:00 2001
From: Tomasz Jozwiak <tomaszx.jozwiak@intel.com>
Date: Fri, 14 Dec 2018 12:19:30 +0100
Subject: [PATCH] common/qat: remove check of valid firmware response

[ upstream commit 8c41455e9e610385b826271798c0b532fd59054a ]

This reverts commit d09973f6c4df ("common/qat: fix for invalid
response from firmware") due to incorrectly reporting failures
on some older firmware versions.

Fixes: d09973f6c4df ("common/qat: fix for invalid response from firmware")

Signed-off-by: Tomasz Jozwiak <tomaszx.jozwiak@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
---
 drivers/common/qat/qat_qp.c | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/drivers/common/qat/qat_qp.c b/drivers/common/qat/qat_qp.c
index 79f6a01ba..ec7f2b309 100644
--- a/drivers/common/qat/qat_qp.c
+++ b/drivers/common/qat/qat_qp.c
@@ -635,5 +635,4 @@ qat_dequeue_op_burst(void *qp, void **ops, uint16_t nb_ops)
 	uint32_t resp_counter = 0;
 	uint8_t *resp_msg;
-	uint8_t hdr_flags;
 
 	rx_queue = &(tmp_qp->rx_q);
@@ -641,15 +640,8 @@ qat_dequeue_op_burst(void *qp, void **ops, uint16_t nb_ops)
 	head = rx_queue->head;
 	resp_msg = (uint8_t *)rx_queue->base_addr + rx_queue->head;
-	hdr_flags = ((struct icp_qat_fw_comn_resp_hdr *)resp_msg)->hdr_flags;
 
 	while (*(uint32_t *)resp_msg != ADF_RING_EMPTY_SIG &&
 			resp_counter != nb_ops) {
 
-		if (unlikely(!ICP_QAT_FW_COMN_VALID_FLAG_GET(hdr_flags))) {
-			/* Fatal firmware error */
-			QAT_LOG(ERR, "QAT Firmware returned invalid response");
-			return 0;
-		}
-
 		if (tmp_qp->service_type == QAT_SERVICE_SYMMETRIC)
 			qat_sym_process_response(ops, resp_msg);
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:07.958286953 +0000
+++ 0021-common-qat-remove-check-of-valid-firmware-response.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,14 +1,15 @@
-From 8c41455e9e610385b826271798c0b532fd59054a Mon Sep 17 00:00:00 2001
+From aba3a2b8920464eb98fd8f617b3dee4e02a1fa13 Mon Sep 17 00:00:00 2001
 From: Tomasz Jozwiak <tomaszx.jozwiak@intel.com>
 Date: Fri, 14 Dec 2018 12:19:30 +0100
 Subject: [PATCH] common/qat: remove check of valid firmware response
 
+[ upstream commit 8c41455e9e610385b826271798c0b532fd59054a ]
+
 This reverts commit d09973f6c4df ("common/qat: fix for invalid
 response from firmware") due to incorrectly reporting failures
 on some older firmware versions.
 
 Fixes: d09973f6c4df ("common/qat: fix for invalid response from firmware")
-Cc: stable@dpdk.org
 
 Signed-off-by: Tomasz Jozwiak <tomaszx.jozwiak@intel.com>
 Acked-by: Fiona Trahe <fiona.trahe@intel.com>

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

* [dpdk-stable] patch 'compress/qat: fix return on building request error' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (19 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'common/qat: remove check of valid firmware response' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'compress/qat: fix dequeue error counter' " Kevin Traynor
                   ` (50 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Tomasz Jozwiak; +Cc: Fiona Trahe, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 5d50bb019b0010f472c8a9c07338705f9b31f1ac Mon Sep 17 00:00:00 2001
From: Tomasz Jozwiak <tomaszx.jozwiak@intel.com>
Date: Fri, 14 Dec 2018 12:19:31 +0100
Subject: [PATCH] compress/qat: fix return on building request error

[ upstream commit 652b59df06ccf554d4c39ab76f8b85cc003cf9b0 ]

This patch fixes error status which should be set inside
qat_comp_build_request function in case any errors are detected.
In these cases op.status is set to
RTE_COMP_OP_STATUS_INVALID_ARGS to help application debug.

Fixes: 1947bd18580b ("compress/qat: support scatter-gather buffers")

Signed-off-by: Tomasz Jozwiak <tomaszx.jozwiak@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
---
 drivers/compress/qat/qat_comp.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/compress/qat/qat_comp.c b/drivers/compress/qat/qat_comp.c
index 27547428f..8a6fad06a 100644
--- a/drivers/compress/qat/qat_comp.c
+++ b/drivers/compress/qat/qat_comp.c
@@ -37,4 +37,5 @@ qat_comp_build_request(void *in_op, uint8_t *out_msg,
 				"operation requests, op (%p) is not a "
 				"stateless operation.", op);
+		op->status = RTE_COMP_OP_STATUS_INVALID_ARGS;
 		return -EINVAL;
 	}
@@ -62,4 +63,5 @@ qat_comp_build_request(void *in_op, uint8_t *out_msg,
 		if (ret) {
 			QAT_DP_LOG(ERR, "QAT PMD Cannot fill source sgl array");
+			op->status = RTE_COMP_OP_STATUS_INVALID_ARGS;
 			return ret;
 		}
@@ -72,4 +74,5 @@ qat_comp_build_request(void *in_op, uint8_t *out_msg,
 		if (ret) {
 			QAT_DP_LOG(ERR, "QAT PMD Cannot fill dest. sgl array");
+			op->status = RTE_COMP_OP_STATUS_INVALID_ARGS;
 			return ret;
 		}
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:07.980659179 +0000
+++ 0022-compress-qat-fix-return-on-building-request-error.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,15 +1,16 @@
-From 652b59df06ccf554d4c39ab76f8b85cc003cf9b0 Mon Sep 17 00:00:00 2001
+From 5d50bb019b0010f472c8a9c07338705f9b31f1ac Mon Sep 17 00:00:00 2001
 From: Tomasz Jozwiak <tomaszx.jozwiak@intel.com>
 Date: Fri, 14 Dec 2018 12:19:31 +0100
 Subject: [PATCH] compress/qat: fix return on building request error
 
+[ upstream commit 652b59df06ccf554d4c39ab76f8b85cc003cf9b0 ]
+
 This patch fixes error status which should be set inside
 qat_comp_build_request function in case any errors are detected.
 In these cases op.status is set to
 RTE_COMP_OP_STATUS_INVALID_ARGS to help application debug.
 
 Fixes: 1947bd18580b ("compress/qat: support scatter-gather buffers")
-Cc: stable@dpdk.org
 
 Signed-off-by: Tomasz Jozwiak <tomaszx.jozwiak@intel.com>
 Acked-by: Fiona Trahe <fiona.trahe@intel.com>

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

* [dpdk-stable] patch 'compress/qat: fix dequeue error counter' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (20 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'compress/qat: fix return on building request error' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'timer: fix race condition' " Kevin Traynor
                   ` (49 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Tomasz Jozwiak; +Cc: Fiona Trahe, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From f03856b390dd9a46fb2ea89a48e39d9c00079a47 Mon Sep 17 00:00:00 2001
From: Tomasz Jozwiak <tomaszx.jozwiak@intel.com>
Date: Fri, 14 Dec 2018 13:11:47 +0100
Subject: [PATCH] compress/qat: fix dequeue error counter

[ upstream commit ba83e5c0062936dab5c017da574036788c64fb6b ]

This patch increments error counter (stats.dequeue_err_count)
in case of any error detection during qat_comp_process_response
function.

Fixes: 3cc14fc48e35 ("compress/qat: check that correct firmware is in use")
Fixes: 32842f2a6d7d ("compress/qat: create FW request and process response")

Signed-off-by: Tomasz Jozwiak <tomaszx.jozwiak@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
---
 drivers/common/qat/qat_qp.c     | 6 ++++--
 drivers/common/qat/qat_qp.h     | 3 ++-
 drivers/compress/qat/qat_comp.c | 4 +++-
 drivers/compress/qat/qat_comp.h | 4 ++--
 4 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/drivers/common/qat/qat_qp.c b/drivers/common/qat/qat_qp.c
index ec7f2b309..4e66c583b 100644
--- a/drivers/common/qat/qat_qp.c
+++ b/drivers/common/qat/qat_qp.c
@@ -647,5 +647,6 @@ qat_dequeue_op_burst(void *qp, void **ops, uint16_t nb_ops)
 			qat_sym_process_response(ops, resp_msg);
 		else if (tmp_qp->service_type == QAT_SERVICE_COMPRESSION)
-			qat_comp_process_response(ops, resp_msg);
+			qat_comp_process_response(ops, resp_msg,
+					&tmp_qp->stats.dequeue_err_count);
 
 		head = adf_modulo(head + rx_queue->msg_size,
@@ -675,5 +676,6 @@ qat_dequeue_op_burst(void *qp, void **ops, uint16_t nb_ops)
 
 __rte_weak int
-qat_comp_process_response(void **op __rte_unused, uint8_t *resp __rte_unused)
+qat_comp_process_response(void **op __rte_unused, uint8_t *resp __rte_unused,
+			  uint64_t *dequeue_err_count __rte_unused)
 {
 	return  0;
diff --git a/drivers/common/qat/qat_qp.h b/drivers/common/qat/qat_qp.h
index 6f1525e1e..9833bcbd8 100644
--- a/drivers/common/qat/qat_qp.h
+++ b/drivers/common/qat/qat_qp.h
@@ -108,5 +108,6 @@ qat_qps_per_service(const struct qat_qp_hw_data *qp_hw_data,
 /* Needed for weak function*/
 int
-qat_comp_process_response(void **op __rte_unused, uint8_t *resp __rte_unused);
+qat_comp_process_response(void **op __rte_unused, uint8_t *resp __rte_unused,
+			  uint64_t *dequeue_err_count);
 
 #endif /* _QAT_QP_H_ */
diff --git a/drivers/compress/qat/qat_comp.c b/drivers/compress/qat/qat_comp.c
index 8a6fad06a..bb006104f 100644
--- a/drivers/compress/qat/qat_comp.c
+++ b/drivers/compress/qat/qat_comp.c
@@ -110,5 +110,5 @@ qat_comp_build_request(void *in_op, uint8_t *out_msg,
 
 int
-qat_comp_process_response(void **op, uint8_t *resp)
+qat_comp_process_response(void **op, uint8_t *resp, uint64_t *dequeue_err_count)
 {
 	struct icp_qat_fw_comp_resp *resp_msg =
@@ -136,4 +136,5 @@ qat_comp_process_response(void **op, uint8_t *resp)
 			*op = (void *)rx_op;
 			QAT_DP_LOG(ERR, "QAT has wrong firmware");
+			++(*dequeue_err_count);
 			return 0;
 		}
@@ -153,4 +154,5 @@ qat_comp_process_response(void **op, uint8_t *resp)
 			    "small for output, try configuring a larger size");
 
+		++(*dequeue_err_count);
 		rx_op->status = RTE_COMP_OP_STATUS_ERROR;
 		rx_op->debug_status =
diff --git a/drivers/compress/qat/qat_comp.h b/drivers/compress/qat/qat_comp.h
index 99a4462eb..19f48df59 100644
--- a/drivers/compress/qat/qat_comp.h
+++ b/drivers/compress/qat/qat_comp.h
@@ -61,6 +61,6 @@ qat_comp_build_request(void *in_op, uint8_t *out_msg, void *op_cookie,
 
 int
-qat_comp_process_response(void **op, uint8_t *resp);
-
+qat_comp_process_response(void **op, uint8_t *resp,
+			  uint64_t *dequeue_err_count);
 
 int
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.003346376 +0000
+++ 0023-compress-qat-fix-dequeue-error-counter.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,15 +1,16 @@
-From ba83e5c0062936dab5c017da574036788c64fb6b Mon Sep 17 00:00:00 2001
+From f03856b390dd9a46fb2ea89a48e39d9c00079a47 Mon Sep 17 00:00:00 2001
 From: Tomasz Jozwiak <tomaszx.jozwiak@intel.com>
 Date: Fri, 14 Dec 2018 13:11:47 +0100
 Subject: [PATCH] compress/qat: fix dequeue error counter
 
+[ upstream commit ba83e5c0062936dab5c017da574036788c64fb6b ]
+
 This patch increments error counter (stats.dequeue_err_count)
 in case of any error detection during qat_comp_process_response
 function.
 
 Fixes: 3cc14fc48e35 ("compress/qat: check that correct firmware is in use")
 Fixes: 32842f2a6d7d ("compress/qat: create FW request and process response")
-Cc: stable@dpdk.org
 
 Signed-off-by: Tomasz Jozwiak <tomaszx.jozwiak@intel.com>
 Acked-by: Fiona Trahe <fiona.trahe@intel.com>

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

* [dpdk-stable] patch 'timer: fix race condition' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (21 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'compress/qat: fix dequeue error counter' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'ip_frag: fix IPv6 when MTU sizes not aligned to 8 bytes' " Kevin Traynor
                   ` (48 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Erik Gabriel Carrillo; +Cc: Gavin Hu, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 8e49368645c700b04341096cf9c93d0916b314d9 Mon Sep 17 00:00:00 2001
From: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
Date: Wed, 19 Dec 2018 10:09:34 -0600
Subject: [PATCH] timer: fix race condition

[ upstream commit 7079e29f7f28661b712620f46e6a8514eb0a708a ]

rte_timer_manage() adds expired timers to a "run list", and walks the
list, transitioning each timer from the PENDING to the RUNNING state.
If another lcore resets or stops the timer at precisely this
moment, the timer state would instead be set to CONFIG by that other
lcore, which would cause timer_manage() to skip over it. This is
expected behavior.

However, if a timer expires quickly enough, there exists the
following race condition that causes the timer_manage() routine to
misinterpret a timer in CONFIG state, resulting in lost timers:

- Thread A:
  - starts a timer with rte_timer_reset()
  - the timer is moved to CONFIG state
  - the spinlock associated with the appropriate skiplist is acquired
  - timer is inserted into the skiplist
  - the spinlock is released
- Thread B:
  - executes rte_timer_manage()
  - find above timer as expired, add it to run list
  - walk run list, see above timer still in CONFIG state, unlink it from
    run list and continue on
- Thread A:
  - move timer to PENDING state
  - return from rte_timer_reset()
  - timer is now in PENDING state, but not actually linked into a
    pending list or a run list and will never get processed further
    by rte_timer_manage()

This commit fixes this race condition by only releasing the spinlock
after the timer state has been transitioned from CONFIG to PENDING,
which prevents rte_timer_manage() from seeing an incorrect state.

Fixes: 9b15ba895b9f ("timer: use a skip list")

Signed-off-by: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
Reviewed-by: Gavin Hu <gavin.hu@arm.com>
---
 lib/librte_timer/rte_timer.c | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/lib/librte_timer/rte_timer.c b/lib/librte_timer/rte_timer.c
index 590488c7e..30c7b0ab4 100644
--- a/lib/librte_timer/rte_timer.c
+++ b/lib/librte_timer/rte_timer.c
@@ -242,22 +242,15 @@ timer_get_prev_entries_for_node(struct rte_timer *tim, unsigned tim_lcore,
 }
 
-/*
- * add in list, lock if needed
+/* call with lock held as necessary
+ * add in list
  * timer must be in config state
  * timer must not be in a list
  */
 static void
-timer_add(struct rte_timer *tim, unsigned tim_lcore, int local_is_locked)
+timer_add(struct rte_timer *tim, unsigned int tim_lcore)
 {
-	unsigned lcore_id = rte_lcore_id();
 	unsigned lvl;
 	struct rte_timer *prev[MAX_SKIPLIST_DEPTH+1];
 
-	/* if timer needs to be scheduled on another core, we need to
-	 * lock the list; if it is on local core, we need to lock if
-	 * we are not called from rte_timer_manage() */
-	if (tim_lcore != lcore_id || !local_is_locked)
-		rte_spinlock_lock(&priv_timer[tim_lcore].list_lock);
-
 	/* find where exactly this element goes in the list of elements
 	 * for each depth. */
@@ -283,7 +276,4 @@ timer_add(struct rte_timer *tim, unsigned tim_lcore, int local_is_locked)
 	priv_timer[tim_lcore].pending_head.expire = priv_timer[tim_lcore].\
 			pending_head.sl_next[0]->expire;
-
-	if (tim_lcore != lcore_id || !local_is_locked)
-		rte_spinlock_unlock(&priv_timer[tim_lcore].list_lock);
 }
 
@@ -380,6 +370,13 @@ __rte_timer_reset(struct rte_timer *tim, uint64_t expire,
 	tim->arg = arg;
 
+	/* if timer needs to be scheduled on another core, we need to
+	 * lock the destination list; if it is on local core, we need to lock if
+	 * we are not called from rte_timer_manage()
+	 */
+	if (tim_lcore != lcore_id || !local_is_locked)
+		rte_spinlock_lock(&priv_timer[tim_lcore].list_lock);
+
 	__TIMER_STAT_ADD(pending, 1);
-	timer_add(tim, tim_lcore, local_is_locked);
+	timer_add(tim, tim_lcore);
 
 	/* update state: as we are in CONFIG state, only us can modify
@@ -390,4 +387,7 @@ __rte_timer_reset(struct rte_timer *tim, uint64_t expire,
 	tim->status.u32 = status.u32;
 
+	if (tim_lcore != lcore_id || !local_is_locked)
+		rte_spinlock_unlock(&priv_timer[tim_lcore].list_lock);
+
 	return 0;
 }
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.027948323 +0000
+++ 0024-timer-fix-race-condition.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,8 +1,10 @@
-From 7079e29f7f28661b712620f46e6a8514eb0a708a Mon Sep 17 00:00:00 2001
+From 8e49368645c700b04341096cf9c93d0916b314d9 Mon Sep 17 00:00:00 2001
 From: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
 Date: Wed, 19 Dec 2018 10:09:34 -0600
 Subject: [PATCH] timer: fix race condition
 
+[ upstream commit 7079e29f7f28661b712620f46e6a8514eb0a708a ]
+
 rte_timer_manage() adds expired timers to a "run list", and walks the
 list, transitioning each timer from the PENDING to the RUNNING state.
 If another lcore resets or stops the timer at precisely this
@@ -37,7 +39,6 @@
 which prevents rte_timer_manage() from seeing an incorrect state.
 
 Fixes: 9b15ba895b9f ("timer: use a skip list")
-Cc: stable@dpdk.org
 
 Signed-off-by: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
 Reviewed-by: Gavin Hu <gavin.hu@arm.com>

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

* [dpdk-stable] patch 'ip_frag: fix IPv6 when MTU sizes not aligned to 8 bytes' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (22 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'timer: fix race condition' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'eal: fix missing newline in a log' " Kevin Traynor
                   ` (47 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Chas Williams; +Cc: Luca Boccassi, Konstantin Ananyev, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 6b7505c11ae60d81f6d4091719e17f00fe592284 Mon Sep 17 00:00:00 2001
From: Chas Williams <chas3@att.com>
Date: Mon, 26 Nov 2018 23:56:13 -0500
Subject: [PATCH] ip_frag: fix IPv6 when MTU sizes not aligned to 8 bytes

[ upstream commit 7a838c8798a93fc4b0eb305c4c7d61da54875a14 ]

The same issue was fixed on for the ipv4 version of this routine in
commit 8d4d3a4f7337 ("ip_frag: handle MTU sizes not aligned to 8 bytes").
Briefly, the size of an ipv6 header is always 40 bytes.  With an MTU of
1500, this will never produce a multiple of 8 bytes for the frag_size
and this routine can never succeed. Since RTE_ASSERTS are disabled by
default, this failure is typically ignored.

To fix this, round down to the nearest 8 bytes and use this when
producing the fragments.

Fixes: 0aa31d7a5929 ("ip_frag: add IPv6 fragmentation support")

Signed-off-by: Chas Williams <chas3@att.com>
Acked-by: Luca Boccassi <bluca@debian.org>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
---
 lib/librte_ip_frag/rte_ip_frag.h            |  1 +
 lib/librte_ip_frag/rte_ipv6_fragmentation.c | 18 +++++++++++-------
 2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/lib/librte_ip_frag/rte_ip_frag.h b/lib/librte_ip_frag/rte_ip_frag.h
index a4ccaf9d1..04fd9df52 100644
--- a/lib/librte_ip_frag/rte_ip_frag.h
+++ b/lib/librte_ip_frag/rte_ip_frag.h
@@ -116,4 +116,5 @@ struct rte_ip_frag_tbl {
 #define	RTE_IPV6_EHDR_FO_SHIFT			3
 #define	RTE_IPV6_EHDR_FO_MASK			(~((1 << RTE_IPV6_EHDR_FO_SHIFT) - 1))
+#define	RTE_IPV6_EHDR_FO_ALIGN			(1 << RTE_IPV6_EHDR_FO_SHIFT)
 
 #define RTE_IPV6_FRAG_USED_MASK			\
diff --git a/lib/librte_ip_frag/rte_ipv6_fragmentation.c b/lib/librte_ip_frag/rte_ipv6_fragmentation.c
index 62a7e4e83..b9437eb11 100644
--- a/lib/librte_ip_frag/rte_ipv6_fragmentation.c
+++ b/lib/librte_ip_frag/rte_ipv6_fragmentation.c
@@ -78,9 +78,12 @@ rte_ipv6_fragment_packet(struct rte_mbuf *pkt_in,
 	uint32_t more_in_segs;
 	uint16_t fragment_offset, frag_size;
+	uint64_t frag_bytes_remaining;
 
-	frag_size = (uint16_t)(mtu_size - sizeof(struct ipv6_hdr));
-
-	/* Fragment size should be a multiple of 8. */
-	RTE_ASSERT((frag_size & ~RTE_IPV6_EHDR_FO_MASK) == 0);
+	/*
+	 * Ensure the IP payload length of all fragments (except the
+	 * the last fragment) are a multiple of 8 bytes per RFC2460.
+	 */
+	frag_size = RTE_ALIGN_FLOOR(mtu_size - sizeof(struct ipv6_hdr),
+				    RTE_IPV6_EHDR_FO_ALIGN);
 
 	/* Check that pkts_out is big enough to hold all fragments */
@@ -112,4 +115,5 @@ rte_ipv6_fragment_packet(struct rte_mbuf *pkt_in,
 		out_pkt->data_len = sizeof(struct ipv6_hdr) + sizeof(struct ipv6_extension_fragment);
 		out_pkt->pkt_len  = sizeof(struct ipv6_hdr) + sizeof(struct ipv6_extension_fragment);
+		frag_bytes_remaining = frag_size;
 
 		out_seg_prev = out_pkt;
@@ -131,5 +135,5 @@ rte_ipv6_fragment_packet(struct rte_mbuf *pkt_in,
 			/* Prepare indirect buffer */
 			rte_pktmbuf_attach(out_seg, in_seg);
-			len = mtu_size - out_pkt->pkt_len;
+			len = frag_bytes_remaining;
 			if (len > (in_seg->data_len - in_seg_data_pos)) {
 				len = in_seg->data_len - in_seg_data_pos;
@@ -141,9 +145,9 @@ rte_ipv6_fragment_packet(struct rte_mbuf *pkt_in,
 			out_pkt->nb_segs += 1;
 			in_seg_data_pos += len;
+			frag_bytes_remaining -= len;
 
 			/* Current output packet (i.e. fragment) done ? */
-			if (unlikely(out_pkt->pkt_len >= mtu_size)) {
+			if (unlikely(frag_bytes_remaining == 0))
 				more_out_segs = 0;
-			}
 
 			/* Current input segment done ? */
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.050376168 +0000
+++ 0025-ip_frag-fix-IPv6-when-MTU-sizes-not-aligned-to-8-byt.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,8 +1,10 @@
-From 7a838c8798a93fc4b0eb305c4c7d61da54875a14 Mon Sep 17 00:00:00 2001
+From 6b7505c11ae60d81f6d4091719e17f00fe592284 Mon Sep 17 00:00:00 2001
 From: Chas Williams <chas3@att.com>
 Date: Mon, 26 Nov 2018 23:56:13 -0500
 Subject: [PATCH] ip_frag: fix IPv6 when MTU sizes not aligned to 8 bytes
 
+[ upstream commit 7a838c8798a93fc4b0eb305c4c7d61da54875a14 ]
+
 The same issue was fixed on for the ipv4 version of this routine in
 commit 8d4d3a4f7337 ("ip_frag: handle MTU sizes not aligned to 8 bytes").
 Briefly, the size of an ipv6 header is always 40 bytes.  With an MTU of
@@ -14,7 +16,6 @@
 producing the fragments.
 
 Fixes: 0aa31d7a5929 ("ip_frag: add IPv6 fragmentation support")
-Cc: stable@dpdk.org
 
 Signed-off-by: Chas Williams <chas3@att.com>
 Acked-by: Luca Boccassi <bluca@debian.org>

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

* [dpdk-stable] patch 'eal: fix missing newline in a log' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (23 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'ip_frag: fix IPv6 when MTU sizes not aligned to 8 bytes' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'eal: fix detection of duplicate option register' " Kevin Traynor
                   ` (46 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Keith Wiles; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 035f05239e41279c6991e7a8c93f4e9f3183517e Mon Sep 17 00:00:00 2001
From: Keith Wiles <keith.wiles@intel.com>
Date: Sun, 16 Dec 2018 17:01:03 -0600
Subject: [PATCH] eal: fix missing newline in a log

[ upstream commit e3b090f3daded540ab37bce69d0ce4ec730dab3d ]

Add a missing newline to a RTE_LOG message.

Fixes: 2395332798d0 ("eal: add option register infrastructure")

Signed-off-by: Keith Wiles <keith.wiles@intel.com>
---
 lib/librte_eal/common/rte_option.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/librte_eal/common/rte_option.c b/lib/librte_eal/common/rte_option.c
index 02d59a869..7605190c3 100644
--- a/lib/librte_eal/common/rte_option.c
+++ b/lib/librte_eal/common/rte_option.c
@@ -37,5 +37,5 @@ rte_option_register(struct rte_option *opt)
 	TAILQ_FOREACH(option, &rte_option_list, next) {
 		if (strcmp(opt->opt_str, option->opt_str) == 0)
-			RTE_LOG(INFO, EAL, "Option %s has already been registered.",
+			RTE_LOG(INFO, EAL, "Option %s has already been registered.\n",
 					opt->opt_str);
 			return;
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.073343220 +0000
+++ 0026-eal-fix-missing-newline-in-a-log.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,12 +1,13 @@
-From e3b090f3daded540ab37bce69d0ce4ec730dab3d Mon Sep 17 00:00:00 2001
+From 035f05239e41279c6991e7a8c93f4e9f3183517e Mon Sep 17 00:00:00 2001
 From: Keith Wiles <keith.wiles@intel.com>
 Date: Sun, 16 Dec 2018 17:01:03 -0600
 Subject: [PATCH] eal: fix missing newline in a log
 
+[ upstream commit e3b090f3daded540ab37bce69d0ce4ec730dab3d ]
+
 Add a missing newline to a RTE_LOG message.
 
 Fixes: 2395332798d0 ("eal: add option register infrastructure")
-Cc: stable@dpdk.org
 
 Signed-off-by: Keith Wiles <keith.wiles@intel.com>
 ---

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

* [dpdk-stable] patch 'eal: fix detection of duplicate option register' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (24 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'eal: fix missing newline in a log' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'eal: fix leak on multi-process request error' " Kevin Traynor
                   ` (45 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Gaetan Rivet; +Cc: Anatoly Burakov, David Marchand, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 58ef03c41f94cefb2747660a5431cc717fe95f90 Mon Sep 17 00:00:00 2001
From: Gaetan Rivet <gaetan.rivet@6wind.com>
Date: Mon, 17 Dec 2018 10:25:59 +0100
Subject: [PATCH] eal: fix detection of duplicate option register

[ upstream commit c9b413c3b1cfb52740acb2a0fbf1b73acdb93646 ]

Missing brackets around the if means that the loop will end at
its first iteration.

Fixes: 2395332798d0 ("eal: add option register infrastructure")

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
---
 lib/librte_eal/common/rte_option.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/librte_eal/common/rte_option.c b/lib/librte_eal/common/rte_option.c
index 7605190c3..088e0fd23 100644
--- a/lib/librte_eal/common/rte_option.c
+++ b/lib/librte_eal/common/rte_option.c
@@ -36,8 +36,9 @@ rte_option_register(struct rte_option *opt)
 {
 	TAILQ_FOREACH(option, &rte_option_list, next) {
-		if (strcmp(opt->opt_str, option->opt_str) == 0)
+		if (strcmp(opt->opt_str, option->opt_str) == 0) {
 			RTE_LOG(INFO, EAL, "Option %s has already been registered.\n",
 					opt->opt_str);
 			return;
+		}
 	}
 
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.096129625 +0000
+++ 0027-eal-fix-detection-of-duplicate-option-register.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,13 +1,14 @@
-From c9b413c3b1cfb52740acb2a0fbf1b73acdb93646 Mon Sep 17 00:00:00 2001
+From 58ef03c41f94cefb2747660a5431cc717fe95f90 Mon Sep 17 00:00:00 2001
 From: Gaetan Rivet <gaetan.rivet@6wind.com>
 Date: Mon, 17 Dec 2018 10:25:59 +0100
 Subject: [PATCH] eal: fix detection of duplicate option register
 
+[ upstream commit c9b413c3b1cfb52740acb2a0fbf1b73acdb93646 ]
+
 Missing brackets around the if means that the loop will end at
 its first iteration.
 
 Fixes: 2395332798d0 ("eal: add option register infrastructure")
-Cc: stable@dpdk.org
 
 Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
 Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>

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

* [dpdk-stable] patch 'eal: fix leak on multi-process request error' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (25 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'eal: fix detection of duplicate option register' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'memzone: fix unlock on initialization failure' " Kevin Traynor
                   ` (44 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Gao Feng; +Cc: Anatoly Burakov, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 08eb5669bf91a89e1ed0138e4de012f32dabad5b Mon Sep 17 00:00:00 2001
From: Gao Feng <davidfgao@tencent.com>
Date: Wed, 5 Dec 2018 10:50:25 +0800
Subject: [PATCH] eal: fix leak on multi-process request error

[ upstream commit e14bc93e8f231455ac7ffb45189f8dedcc45276d ]

When rte_eal_alarm_set failed, need to free the bundle mem in the
error handler of handle_primary_request and handle_secondary_request.

Fixes: 244d5130719c ("eal: enable hotplug on multi-process")
Fixes: ac9e4a17370f ("eal: support attach/detach shared device from secondary")

Signed-off-by: Gao Feng <davidfgao@tencent.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
 lib/librte_eal/common/hotplug_mp.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/lib/librte_eal/common/hotplug_mp.c b/lib/librte_eal/common/hotplug_mp.c
index 070e2e0c2..9d610a8a2 100644
--- a/lib/librte_eal/common/hotplug_mp.c
+++ b/lib/librte_eal/common/hotplug_mp.c
@@ -209,4 +209,6 @@ handle_secondary_request(const struct rte_mp_msg *msg, const void *peer)
 	if (ret != 0) {
 		RTE_LOG(ERR, EAL, "failed to add mp task\n");
+		free(bundle->peer);
+		free(bundle);
 		return send_response_to_secondary(req, ret, peer);
 	}
@@ -333,4 +335,6 @@ handle_primary_request(const struct rte_mp_msg *msg, const void *peer)
 	ret = rte_eal_alarm_set(1, __handle_primary_request, bundle);
 	if (ret != 0) {
+		free(bundle->peer);
+		free(bundle);
 		resp->result = ret;
 		ret = rte_mp_reply(&mp_resp, peer);
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.119461650 +0000
+++ 0028-eal-fix-leak-on-multi-process-request-error.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,14 +1,15 @@
-From e14bc93e8f231455ac7ffb45189f8dedcc45276d Mon Sep 17 00:00:00 2001
+From 08eb5669bf91a89e1ed0138e4de012f32dabad5b Mon Sep 17 00:00:00 2001
 From: Gao Feng <davidfgao@tencent.com>
 Date: Wed, 5 Dec 2018 10:50:25 +0800
 Subject: [PATCH] eal: fix leak on multi-process request error
 
+[ upstream commit e14bc93e8f231455ac7ffb45189f8dedcc45276d ]
+
 When rte_eal_alarm_set failed, need to free the bundle mem in the
 error handler of handle_primary_request and handle_secondary_request.
 
 Fixes: 244d5130719c ("eal: enable hotplug on multi-process")
 Fixes: ac9e4a17370f ("eal: support attach/detach shared device from secondary")
-Cc: stable@dpdk.org
 
 Signed-off-by: Gao Feng <davidfgao@tencent.com>
 Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>

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

* [dpdk-stable] patch 'memzone: fix unlock on initialization failure' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (26 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'eal: fix leak on multi-process request error' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'malloc: fix finding maximum contiguous IOVA size' " Kevin Traynor
                   ` (43 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Gao Feng; +Cc: Anatoly Burakov, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 2f476141e41717169144075ddfc5b954e3233be5 Mon Sep 17 00:00:00 2001
From: Gao Feng <davidfgao@tencent.com>
Date: Fri, 7 Dec 2018 09:20:08 +0800
Subject: [PATCH] memzone: fix unlock on initialization failure

[ upstream commit cc8035322384b2454b596ee7e557cae3250f20f1 ]

The RTE_PROC_PRIMARY error handler lost the unlock statement in the
current codes. Now unlock and return in one place to fix it.

Fixes: 49df3db84883 ("memzone: replace memzone array with fbarray")

Signed-off-by: Gao Feng <davidfgao@tencent.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
 lib/librte_eal/common/eal_common_memzone.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/lib/librte_eal/common/eal_common_memzone.c b/lib/librte_eal/common/eal_common_memzone.c
index b7081afbf..664df5b9f 100644
--- a/lib/librte_eal/common/eal_common_memzone.c
+++ b/lib/librte_eal/common/eal_common_memzone.c
@@ -366,4 +366,5 @@ rte_eal_memzone_init(void)
 {
 	struct rte_mem_config *mcfg;
+	int ret = 0;
 
 	/* get pointer to global configuration */
@@ -376,15 +377,14 @@ rte_eal_memzone_init(void)
 			RTE_MAX_MEMZONE, sizeof(struct rte_memzone))) {
 		RTE_LOG(ERR, EAL, "Cannot allocate memzone list\n");
-		return -1;
+		ret = -1;
 	} else if (rte_eal_process_type() == RTE_PROC_SECONDARY &&
 			rte_fbarray_attach(&mcfg->memzones)) {
 		RTE_LOG(ERR, EAL, "Cannot attach to memzone list\n");
-		rte_rwlock_write_unlock(&mcfg->mlock);
-		return -1;
+		ret = -1;
 	}
 
 	rte_rwlock_write_unlock(&mcfg->mlock);
 
-	return 0;
+	return ret;
 }
 
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.141928703 +0000
+++ 0029-memzone-fix-unlock-on-initialization-failure.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,13 +1,14 @@
-From cc8035322384b2454b596ee7e557cae3250f20f1 Mon Sep 17 00:00:00 2001
+From 2f476141e41717169144075ddfc5b954e3233be5 Mon Sep 17 00:00:00 2001
 From: Gao Feng <davidfgao@tencent.com>
 Date: Fri, 7 Dec 2018 09:20:08 +0800
 Subject: [PATCH] memzone: fix unlock on initialization failure
 
+[ upstream commit cc8035322384b2454b596ee7e557cae3250f20f1 ]
+
 The RTE_PROC_PRIMARY error handler lost the unlock statement in the
 current codes. Now unlock and return in one place to fix it.
 
 Fixes: 49df3db84883 ("memzone: replace memzone array with fbarray")
-Cc: stable@dpdk.org
 
 Signed-off-by: Gao Feng <davidfgao@tencent.com>
 Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>

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

* [dpdk-stable] patch 'malloc: fix finding maximum contiguous IOVA size' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (27 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'memzone: fix unlock on initialization failure' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'malloc: notify primary process about hotplug in secondary' " Kevin Traynor
                   ` (42 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Yongseok Koh; +Cc: Anatoly Burakov, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From db9e14e7975a908aaedfd0313a6441fd37492f30 Mon Sep 17 00:00:00 2001
From: Yongseok Koh <yskoh@mellanox.com>
Date: Wed, 12 Dec 2018 03:10:54 -0800
Subject: [PATCH] malloc: fix finding maximum contiguous IOVA size

[ upstream commit 6d09256148567807b772347ec4ac363c4bcb6b5a ]

malloc_elem_find_max_iova_contig() could return invalid size due to a
missing sanity check. The following gdb output shows how 'cur_size' can be
invalid in find_biggest_element().

	(gdb) p/x cur_size
	$4 = 0xffffffffffe42900
	(gdb) p elem
	$1 = (struct malloc_elem *) 0x12e842000
	(gdb) p *elem
	$2 = {heap = 0x7ffff7ff387c, prev = 0x12e831fc0, next =
		0x12e842900, free_list = {le_next = 0x109538000, le_prev =
		0x7ffff7ff3894}, msl = 0x7ffff7ff107c, state = ELEM_FREE,
		pad = 0, size = 2304}
	(gdb) p *elem->msl
	$5 = {{base_va = 0x100200000, addr_64 = 4297064448}, page_sz =
		2097152, socket_id = 0, version = 790, len = 17179869184,
		external = 0, memseg_arr = {name = "memseg-2048k-0-0",
		'\000' <repeats 47 times>, count = 493, len = 8192, elt_sz
		= 48, data = 0x10002e000, rwlock = {cnt = 0}}}

Fixes: 9fe6bceafd51 ("malloc: add finding biggest free IOVA-contiguous element")

Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
 lib/librte_eal/common/malloc_elem.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/lib/librte_eal/common/malloc_elem.c b/lib/librte_eal/common/malloc_elem.c
index 9d3dcb6a9..052aeeb7b 100644
--- a/lib/librte_eal/common/malloc_elem.c
+++ b/lib/librte_eal/common/malloc_elem.c
@@ -39,4 +39,8 @@ malloc_elem_find_max_iova_contig(struct malloc_elem *elem, size_t align)
 	contig_seg_start = RTE_PTR_ALIGN_CEIL(data_start, align);
 
+	/* return if aligned address is already out of malloc element */
+	if (contig_seg_start > data_end)
+		return 0;
+
 	/* if we're in IOVA as VA mode, or if we're in legacy mode with
 	 * hugepages, all elements are IOVA-contiguous. however, we can only
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.164413037 +0000
+++ 0030-malloc-fix-finding-maximum-contiguous-IOVA-size.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,8 +1,10 @@
-From 6d09256148567807b772347ec4ac363c4bcb6b5a Mon Sep 17 00:00:00 2001
+From db9e14e7975a908aaedfd0313a6441fd37492f30 Mon Sep 17 00:00:00 2001
 From: Yongseok Koh <yskoh@mellanox.com>
 Date: Wed, 12 Dec 2018 03:10:54 -0800
 Subject: [PATCH] malloc: fix finding maximum contiguous IOVA size
 
+[ upstream commit 6d09256148567807b772347ec4ac363c4bcb6b5a ]
+
 malloc_elem_find_max_iova_contig() could return invalid size due to a
 missing sanity check. The following gdb output shows how 'cur_size' can be
 invalid in find_biggest_element().
@@ -24,7 +26,6 @@
 		= 48, data = 0x10002e000, rwlock = {cnt = 0}}}
 
 Fixes: 9fe6bceafd51 ("malloc: add finding biggest free IOVA-contiguous element")
-Cc: stable@dpdk.org
 
 Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
 Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
@@ -33,7 +34,7 @@
  1 file changed, 4 insertions(+)
 
 diff --git a/lib/librte_eal/common/malloc_elem.c b/lib/librte_eal/common/malloc_elem.c
-index fcdb18120..d54a528ed 100644
+index 9d3dcb6a9..052aeeb7b 100644
 --- a/lib/librte_eal/common/malloc_elem.c
 +++ b/lib/librte_eal/common/malloc_elem.c
 @@ -39,4 +39,8 @@ malloc_elem_find_max_iova_contig(struct malloc_elem *elem, size_t align)

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

* [dpdk-stable] patch 'malloc: notify primary process about hotplug in secondary' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (28 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'malloc: fix finding maximum contiguous IOVA size' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'malloc: fix duplicate mem event notification' " Kevin Traynor
                   ` (41 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Seth Howell; +Cc: Darek Stojaczyk, Anatoly Burakov, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 6d1a887d2e88ea5d46735d893e31ed8d247103c5 Mon Sep 17 00:00:00 2001
From: Seth Howell <seth.howell@intel.com>
Date: Fri, 7 Dec 2018 13:10:42 -0700
Subject: [PATCH] malloc: notify primary process about hotplug in secondary

[ upstream commit fba0ca227453ee6a60f674884531fb3817ca8a17 ]

When secondary process hotplugs memory, it sends a request
to primary, which then performs the real mmap() and sends
sync requests to all secondary processes. Upon receiving
such sync request, each secondary process will notify the
upper layers of hotplugged memory (and will call all
locally registered event callbacks).

In the end we'll end up with memory event callbacks fired
in all the processes except the primary, which is a bug.

This gets critical if memory is hotplugged while a VFIO
device is attached, as the VFIO memory registration -
which is done from a memory event callback present in the
primary process only - is never called.

After this patch, a primary process fires memory event
callbacks before secondary processes start their
synchronizations - both for hotplug and hotremove.

Fixes: 07dcbfe0101f ("malloc: support multiprocess memory hotplug")

Signed-off-by: Seth Howell <seth.howell@intel.com>
Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
 lib/librte_eal/common/malloc_mp.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/lib/librte_eal/common/malloc_mp.c b/lib/librte_eal/common/malloc_mp.c
index 5f2d4e0be..f3a13353b 100644
--- a/lib/librte_eal/common/malloc_mp.c
+++ b/lib/librte_eal/common/malloc_mp.c
@@ -210,4 +210,6 @@ handle_alloc_request(const struct malloc_mp_req *m,
 	map_addr = ms[0]->addr;
 
+	eal_memalloc_mem_event_notify(RTE_MEM_EVENT_ALLOC, map_addr, alloc_sz);
+
 	/* we have succeeded in allocating memory, but we still need to sync
 	 * with other processes. however, since DPDK IPC is single-threaded, we
@@ -259,4 +261,7 @@ handle_request(const struct rte_mp_msg *msg, const void *peer __rte_unused)
 		ret = handle_alloc_request(m, entry);
 	} else if (m->t == REQ_TYPE_FREE) {
+		eal_memalloc_mem_event_notify(RTE_MEM_EVENT_FREE,
+				m->free_req.addr, m->free_req.len);
+
 		ret = malloc_heap_free_pages(m->free_req.addr,
 				m->free_req.len);
@@ -437,4 +442,7 @@ handle_sync_response(const struct rte_mp_msg *request,
 
 		/* we've failed to sync, so do a rollback */
+		eal_memalloc_mem_event_notify(RTE_MEM_EVENT_FREE,
+				state->map_addr, state->map_len);
+
 		rollback_expand_heap(state->ms, state->ms_len, state->elem,
 				state->map_addr, state->map_len);
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.186953918 +0000
+++ 0031-malloc-notify-primary-process-about-hotplug-in-secon.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,8 +1,10 @@
-From fba0ca227453ee6a60f674884531fb3817ca8a17 Mon Sep 17 00:00:00 2001
+From 6d1a887d2e88ea5d46735d893e31ed8d247103c5 Mon Sep 17 00:00:00 2001
 From: Seth Howell <seth.howell@intel.com>
 Date: Fri, 7 Dec 2018 13:10:42 -0700
 Subject: [PATCH] malloc: notify primary process about hotplug in secondary
 
+[ upstream commit fba0ca227453ee6a60f674884531fb3817ca8a17 ]
+
 When secondary process hotplugs memory, it sends a request
 to primary, which then performs the real mmap() and sends
 sync requests to all secondary processes. Upon receiving
@@ -23,7 +25,6 @@
 synchronizations - both for hotplug and hotremove.
 
 Fixes: 07dcbfe0101f ("malloc: support multiprocess memory hotplug")
-Cc: stable@dpdk.org
 
 Signed-off-by: Seth Howell <seth.howell@intel.com>
 Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>

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

* [dpdk-stable] patch 'malloc: fix duplicate mem event notification' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (29 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'malloc: notify primary process about hotplug in secondary' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'malloc: make alignment requirements more stringent' " Kevin Traynor
                   ` (40 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Anatoly Burakov; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 3c66bad246c40c5eeadf8c2f222c818a5d4f6739 Mon Sep 17 00:00:00 2001
From: Anatoly Burakov <anatoly.burakov@intel.com>
Date: Tue, 11 Dec 2018 16:48:28 +0000
Subject: [PATCH] malloc: fix duplicate mem event notification

[ upstream commit b3e735e16e07de79fb09dfb485eae2965c952d74 ]

We already trigger a mem event notification inside the walk function,
no need to do it twice.

Fixes: f32c7c9de961 ("malloc: enable event callbacks for external memory")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
 lib/librte_eal/common/rte_malloc.c | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/lib/librte_eal/common/rte_malloc.c b/lib/librte_eal/common/rte_malloc.c
index 0da5ad5e8..5f07b981a 100644
--- a/lib/librte_eal/common/rte_malloc.c
+++ b/lib/librte_eal/common/rte_malloc.c
@@ -518,11 +518,6 @@ sync_memory(const char *heap_name, void *va_addr, size_t len, bool attach)
 		rte_errno = -wa.result;
 		ret = -1;
-	} else {
-		/* notify all subscribers that a new memory area was added */
-		if (attach)
-			eal_memalloc_mem_event_notify(RTE_MEM_EVENT_ALLOC,
-					va_addr, len);
+	} else
 		ret = 0;
-	}
 unlock:
 	rte_rwlock_read_unlock(&mcfg->memory_hotplug_lock);
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.209896592 +0000
+++ 0032-malloc-fix-duplicate-mem-event-notification.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,13 +1,14 @@
-From b3e735e16e07de79fb09dfb485eae2965c952d74 Mon Sep 17 00:00:00 2001
+From 3c66bad246c40c5eeadf8c2f222c818a5d4f6739 Mon Sep 17 00:00:00 2001
 From: Anatoly Burakov <anatoly.burakov@intel.com>
 Date: Tue, 11 Dec 2018 16:48:28 +0000
 Subject: [PATCH] malloc: fix duplicate mem event notification
 
+[ upstream commit b3e735e16e07de79fb09dfb485eae2965c952d74 ]
+
 We already trigger a mem event notification inside the walk function,
 no need to do it twice.
 
 Fixes: f32c7c9de961 ("malloc: enable event callbacks for external memory")
-Cc: stable@dpdk.org
 
 Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
 ---

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

* [dpdk-stable] patch 'malloc: make alignment requirements more stringent' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (30 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'malloc: fix duplicate mem event notification' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'mem: fix segment fd API error code for external segment' " Kevin Traynor
                   ` (39 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Anatoly Burakov; +Cc: Yongseok Koh, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From a6cabceceb71448498795c29fdd0fc450a8abe5b Mon Sep 17 00:00:00 2001
From: Anatoly Burakov <anatoly.burakov@intel.com>
Date: Fri, 14 Dec 2018 11:54:01 +0000
Subject: [PATCH] malloc: make alignment requirements more stringent

[ upstream commit 646e5260ee5371709042b0e2712822ba3ea63fe3 ]

The external heaps API already implicitly expects start address
of the external memory area to be page-aligned, but it is not
enforced or documented. Fix this by implementing additional
parameter checks at memory add call, and document the page
alignment requirement explicitly.

Fixes: 7d75c31014f7 ("malloc: allow adding memory to named heaps")

Suggested-by: Yongseok Koh <yskoh@mellanox.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Yongseok Koh <yskoh@mellanox.com>
---
 lib/librte_eal/common/include/rte_malloc.h | 4 ++--
 lib/librte_eal/common/rte_malloc.c         | 8 +++-----
 2 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/lib/librte_eal/common/include/rte_malloc.h b/lib/librte_eal/common/include/rte_malloc.h
index 7249e6aae..a5290b074 100644
--- a/lib/librte_eal/common/include/rte_malloc.h
+++ b/lib/librte_eal/common/include/rte_malloc.h
@@ -283,7 +283,7 @@ rte_malloc_get_socket_stats(int socket,
  *   Name of the heap to add memory chunk to
  * @param va_addr
- *   Start of virtual area to add to the heap
+ *   Start of virtual area to add to the heap. Must be aligned by ``page_sz``.
  * @param len
- *   Length of virtual area to add to the heap
+ *   Length of virtual area to add to the heap. Must be aligned by ``page_sz``.
  * @param iova_addrs
  *   Array of page IOVA addresses corresponding to each page in this memory
diff --git a/lib/librte_eal/common/rte_malloc.c b/lib/librte_eal/common/rte_malloc.c
index 5f07b981a..06cf1e666 100644
--- a/lib/librte_eal/common/rte_malloc.c
+++ b/lib/librte_eal/common/rte_malloc.c
@@ -346,4 +346,7 @@ rte_malloc_heap_memory_add(const char *heap_name, void *va_addr, size_t len,
 	if (heap_name == NULL || va_addr == NULL ||
 			page_sz == 0 || !rte_is_power_of_2(page_sz) ||
+			RTE_ALIGN(len, page_sz) != len ||
+			!rte_is_aligned(va_addr, page_sz) ||
+			((len / page_sz) != n_pages && iova_addrs != NULL) ||
 			strnlen(heap_name, RTE_HEAP_NAME_MAX_LEN) == 0 ||
 			strnlen(heap_name, RTE_HEAP_NAME_MAX_LEN) ==
@@ -368,9 +371,4 @@ rte_malloc_heap_memory_add(const char *heap_name, void *va_addr, size_t len,
 	}
 	n = len / page_sz;
-	if (n != n_pages && iova_addrs != NULL) {
-		rte_errno = EINVAL;
-		ret = -1;
-		goto unlock;
-	}
 
 	rte_spinlock_lock(&heap->lock);
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.232335009 +0000
+++ 0033-malloc-make-alignment-requirements-more-stringent.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,8 +1,10 @@
-From 646e5260ee5371709042b0e2712822ba3ea63fe3 Mon Sep 17 00:00:00 2001
+From a6cabceceb71448498795c29fdd0fc450a8abe5b Mon Sep 17 00:00:00 2001
 From: Anatoly Burakov <anatoly.burakov@intel.com>
 Date: Fri, 14 Dec 2018 11:54:01 +0000
 Subject: [PATCH] malloc: make alignment requirements more stringent
 
+[ upstream commit 646e5260ee5371709042b0e2712822ba3ea63fe3 ]
+
 The external heaps API already implicitly expects start address
 of the external memory area to be page-aligned, but it is not
 enforced or documented. Fix this by implementing additional
@@ -10,7 +12,6 @@
 alignment requirement explicitly.
 
 Fixes: 7d75c31014f7 ("malloc: allow adding memory to named heaps")
-Cc: stable@dpdk.org
 
 Suggested-by: Yongseok Koh <yskoh@mellanox.com>
 Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>

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

* [dpdk-stable] patch 'mem: fix segment fd API error code for external segment' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (31 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'malloc: make alignment requirements more stringent' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'mem: check for memfd support in segment fd API' " Kevin Traynor
                   ` (38 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Anatoly Burakov; +Cc: Tiwei Bie, Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 0cd9579b47cf06a7f3cccb346e4243d4c5973cf6 Mon Sep 17 00:00:00 2001
From: Anatoly Burakov <anatoly.burakov@intel.com>
Date: Thu, 13 Dec 2018 11:43:15 +0000
Subject: [PATCH] mem: fix segment fd API error code for external segment

[ upstream commit 525670756a566b3efa88eeae53755a770f0c14fe ]

Segment fd API does not support getting segment fd's from
externally allocated memory, so return proper error code
on any attempts to do so. This changes API behavior, so
document the change as well.

Fixes: 5282bb1c3695 ("mem: allow memseg lists to be marked as external")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Tiwei Bie <tiwei.bie@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 lib/librte_eal/common/eal_common_memory.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/lib/librte_eal/common/eal_common_memory.c b/lib/librte_eal/common/eal_common_memory.c
index d47ea4938..999ba24b4 100644
--- a/lib/librte_eal/common/eal_common_memory.c
+++ b/lib/librte_eal/common/eal_common_memory.c
@@ -705,4 +705,10 @@ rte_memseg_get_fd_thread_unsafe(const struct rte_memseg *ms)
 	}
 
+	/* segment fd API is not supported for external segments */
+	if (msl->external) {
+		rte_errno = ENOTSUP;
+		return -1;
+	}
+
 	ret = eal_memalloc_get_seg_fd(msl_idx, seg_idx);
 	if (ret < 0) {
@@ -755,4 +761,10 @@ rte_memseg_get_fd_offset_thread_unsafe(const struct rte_memseg *ms,
 	}
 
+	/* segment fd API is not supported for external segments */
+	if (msl->external) {
+		rte_errno = ENOTSUP;
+		return -1;
+	}
+
 	ret = eal_memalloc_get_seg_fd_offset(msl_idx, seg_idx, offset);
 	if (ret < 0) {
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.256571309 +0000
+++ 0034-mem-fix-segment-fd-API-error-code-for-external-segme.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,43 +1,29 @@
-From 525670756a566b3efa88eeae53755a770f0c14fe Mon Sep 17 00:00:00 2001
+From 0cd9579b47cf06a7f3cccb346e4243d4c5973cf6 Mon Sep 17 00:00:00 2001
 From: Anatoly Burakov <anatoly.burakov@intel.com>
 Date: Thu, 13 Dec 2018 11:43:15 +0000
 Subject: [PATCH] mem: fix segment fd API error code for external segment
 
+[ upstream commit 525670756a566b3efa88eeae53755a770f0c14fe ]
+
 Segment fd API does not support getting segment fd's from
 externally allocated memory, so return proper error code
 on any attempts to do so. This changes API behavior, so
 document the change as well.
 
 Fixes: 5282bb1c3695 ("mem: allow memseg lists to be marked as external")
-Cc: stable@dpdk.org
 
 Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
 Acked-by: Tiwei Bie <tiwei.bie@intel.com>
 Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
 ---
- doc/guides/rel_notes/release_19_02.rst    |  5 +++++
  lib/librte_eal/common/eal_common_memory.c | 12 ++++++++++++
- 2 files changed, 17 insertions(+)
+ 1 file changed, 12 insertions(+)
 
-diff --git a/doc/guides/rel_notes/release_19_02.rst b/doc/guides/rel_notes/release_19_02.rst
-index c1fa8843e..63e84fef7 100644
---- a/doc/guides/rel_notes/release_19_02.rst
-+++ b/doc/guides/rel_notes/release_19_02.rst
-@@ -110,4 +110,9 @@ API Changes
-    =========================================================
- 
-+* eal: Segment fd API on Linux now sets error code to ``ENOTSUP`` in more cases
-+  where segment fd API is not expected to be supported:
-+
-+  - On attempt to get segment fd for an externally allocated memory segment
-+
- * pdump: The ``rte_pdump_set_socket_dir()``, the parameter ``path`` of
-   ``rte_pdump_init()`` and enum ``rte_pdump_socktype`` were deprecated
 diff --git a/lib/librte_eal/common/eal_common_memory.c b/lib/librte_eal/common/eal_common_memory.c
-index 051159f80..c9da69b16 100644
+index d47ea4938..999ba24b4 100644
 --- a/lib/librte_eal/common/eal_common_memory.c
 +++ b/lib/librte_eal/common/eal_common_memory.c
-@@ -706,4 +706,10 @@ rte_memseg_get_fd_thread_unsafe(const struct rte_memseg *ms)
+@@ -705,4 +705,10 @@ rte_memseg_get_fd_thread_unsafe(const struct rte_memseg *ms)
  	}
  
 +	/* segment fd API is not supported for external segments */
@@ -48,7 +34,7 @@
 +
  	ret = eal_memalloc_get_seg_fd(msl_idx, seg_idx);
  	if (ret < 0) {
-@@ -756,4 +762,10 @@ rte_memseg_get_fd_offset_thread_unsafe(const struct rte_memseg *ms,
+@@ -755,4 +761,10 @@ rte_memseg_get_fd_offset_thread_unsafe(const struct rte_memseg *ms,
  	}
  
 +	/* segment fd API is not supported for external segments */

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

* [dpdk-stable] patch 'mem: check for memfd support in segment fd API' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (32 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'mem: fix segment fd API error code for external segment' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'doc: remove note on memory mode limitation in multi-process' " Kevin Traynor
                   ` (37 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Anatoly Burakov; +Cc: Tiwei Bie, Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 906d790a95f4358b5b6a3029bbfc157bcedb007a Mon Sep 17 00:00:00 2001
From: Anatoly Burakov <anatoly.burakov@intel.com>
Date: Thu, 13 Dec 2018 11:43:16 +0000
Subject: [PATCH] mem: check for memfd support in segment fd API

[ upstream commit d75eea314504834d18a94835ad858e3ecd0f8e41 ]

If memfd support was not compiled, or hugepage memfd support
is not available at runtime, the API will now return proper
error code, indicating that this API is unsupported. This
changes the API, so document the changes.

Fixes: 41dbdb68723b ("mem: add external API to retrieve page fd")
Fixes: 3a44687139eb ("mem: allow querying offset into segment fd")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Tiwei Bie <tiwei.bie@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 lib/librte_eal/linuxapp/eal/eal_memalloc.c | 40 +++++++++++++++++-----
 1 file changed, 32 insertions(+), 8 deletions(-)

diff --git a/lib/librte_eal/linuxapp/eal/eal_memalloc.c b/lib/librte_eal/linuxapp/eal/eal_memalloc.c
index 784939566..a93548b8c 100644
--- a/lib/librte_eal/linuxapp/eal/eal_memalloc.c
+++ b/lib/librte_eal/linuxapp/eal/eal_memalloc.c
@@ -24,4 +24,8 @@
 #include <signal.h>
 #include <setjmp.h>
+#ifdef F_ADD_SEALS /* if file sealing is supported, so is memfd */
+#include <linux/memfd.h>
+#define MEMFD_SUPPORTED
+#endif
 #ifdef RTE_EAL_NUMA_AWARE_HUGEPAGES
 #include <numa.h>
@@ -54,6 +58,6 @@ const int anonymous_hugepages_supported =
 
 /*
- * we don't actually care if memfd itself is supported - we only need to check
- * if memfd supports hugetlbfs, as that already implies memfd support.
+ * we've already checked memfd support at compile-time, but we also need to
+ * check if we can create hugepage files with memfd.
  *
  * also, this is not a constant, because while we may be *compiled* with memfd
@@ -64,8 +68,9 @@ const int anonymous_hugepages_supported =
 static int memfd_create_supported =
 #ifdef MFD_HUGETLB
-#define MEMFD_SUPPORTED
 		1;
+#define RTE_MFD_HUGETLB MFD_HUGETLB
 #else
 		0;
+#define RTE_MFD_HUGETLB 4U
 #endif
 
@@ -339,10 +344,10 @@ get_seg_memfd(struct hugepage_info *hi __rte_unused,
 	char segname[250]; /* as per manpage, limit is 249 bytes plus null */
 
+	int flags = RTE_MFD_HUGETLB | pagesz_flags(hi->hugepage_sz);
+
 	if (internal_config.single_file_segments) {
 		fd = fd_list[list_idx].memseg_list_fd;
 
 		if (fd < 0) {
-			int flags = MFD_HUGETLB | pagesz_flags(hi->hugepage_sz);
-
 			snprintf(segname, sizeof(segname), "seg_%i", list_idx);
 			fd = memfd_create(segname, flags);
@@ -358,6 +363,4 @@ get_seg_memfd(struct hugepage_info *hi __rte_unused,
 
 		if (fd < 0) {
-			int flags = MFD_HUGETLB | pagesz_flags(hi->hugepage_sz);
-
 			snprintf(segname, sizeof(segname), "seg_%i-%i",
 					list_idx, seg_idx);
@@ -1543,4 +1546,15 @@ eal_memalloc_get_seg_fd(int list_idx, int seg_idx)
 {
 	int fd;
+
+	if (internal_config.in_memory || internal_config.no_hugetlbfs) {
+#ifndef MEMFD_SUPPORTED
+		/* in in-memory or no-huge mode, we rely on memfd support */
+		return -ENOTSUP;
+#endif
+		/* memfd supported, but hugetlbfs memfd may not be */
+		if (!internal_config.no_hugetlbfs && !memfd_create_supported)
+			return -ENOTSUP;
+	}
+
 	if (internal_config.single_file_segments) {
 		fd = fd_list[list_idx].memseg_list_fd;
@@ -1566,5 +1580,5 @@ test_memfd_create(void)
 		int flags;
 
-		flags = pagesz_flag | MFD_HUGETLB;
+		flags = pagesz_flag | RTE_MFD_HUGETLB;
 		int fd = memfd_create("test", flags);
 		if (fd < 0) {
@@ -1590,4 +1604,14 @@ eal_memalloc_get_seg_fd_offset(int list_idx, int seg_idx, size_t *offset)
 	struct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config;
 
+	if (internal_config.in_memory || internal_config.no_hugetlbfs) {
+#ifndef MEMFD_SUPPORTED
+		/* in in-memory or no-huge mode, we rely on memfd support */
+		return -ENOTSUP;
+#endif
+		/* memfd supported, but hugetlbfs memfd may not be */
+		if (!internal_config.no_hugetlbfs && !memfd_create_supported)
+			return -ENOTSUP;
+	}
+
 	/* fd_list not initialized? */
 	if (fd_list[list_idx].len == 0)
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.281204253 +0000
+++ 0035-mem-check-for-memfd-support-in-segment-fd-API.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,8 +1,10 @@
-From d75eea314504834d18a94835ad858e3ecd0f8e41 Mon Sep 17 00:00:00 2001
+From 906d790a95f4358b5b6a3029bbfc157bcedb007a Mon Sep 17 00:00:00 2001
 From: Anatoly Burakov <anatoly.burakov@intel.com>
 Date: Thu, 13 Dec 2018 11:43:16 +0000
 Subject: [PATCH] mem: check for memfd support in segment fd API
 
+[ upstream commit d75eea314504834d18a94835ad858e3ecd0f8e41 ]
+
 If memfd support was not compiled, or hugepage memfd support
 is not available at runtime, the API will now return proper
 error code, indicating that this API is unsupported. This
@@ -10,27 +12,14 @@
 
 Fixes: 41dbdb68723b ("mem: add external API to retrieve page fd")
 Fixes: 3a44687139eb ("mem: allow querying offset into segment fd")
-Cc: stable@dpdk.org
 
 Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
 Acked-by: Tiwei Bie <tiwei.bie@intel.com>
 Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
 ---
- doc/guides/rel_notes/release_19_02.rst     |  2 ++
  lib/librte_eal/linuxapp/eal/eal_memalloc.c | 40 +++++++++++++++++-----
- 2 files changed, 34 insertions(+), 8 deletions(-)
+ 1 file changed, 32 insertions(+), 8 deletions(-)
 
-diff --git a/doc/guides/rel_notes/release_19_02.rst b/doc/guides/rel_notes/release_19_02.rst
-index 63e84fef7..010cac1d4 100644
---- a/doc/guides/rel_notes/release_19_02.rst
-+++ b/doc/guides/rel_notes/release_19_02.rst
-@@ -114,4 +114,6 @@ API Changes
- 
-   - On attempt to get segment fd for an externally allocated memory segment
-+  - In cases where memfd support would have been required to provide segment
-+    fd's (such as in-memory or no-huge mode)
- 
- * pdump: The ``rte_pdump_set_socket_dir()``, the parameter ``path`` of
 diff --git a/lib/librte_eal/linuxapp/eal/eal_memalloc.c b/lib/librte_eal/linuxapp/eal/eal_memalloc.c
 index 784939566..a93548b8c 100644
 --- a/lib/librte_eal/linuxapp/eal/eal_memalloc.c

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

* [dpdk-stable] patch 'doc: remove note on memory mode limitation in multi-process' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (33 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'mem: check for memfd support in segment fd API' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'test/mem: add external mem autotest to meson' " Kevin Traynor
                   ` (36 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Anatoly Burakov; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From d5936803fb2b62db3d953039eb3c981229f28670 Mon Sep 17 00:00:00 2001
From: Anatoly Burakov <anatoly.burakov@intel.com>
Date: Thu, 6 Dec 2018 09:30:33 +0000
Subject: [PATCH] doc: remove note on memory mode limitation in multi-process

[ upstream commit 41328c404f5023df3dddab5daddad2403c5bb434 ]

Memory mode flags are now shared between primary and secondary
processes, so the in documentation about limitations is no longer
necessary.

Fixes: 64cdfc35aaad ("mem: store memory mode flags in shared config")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
 doc/guides/prog_guide/env_abstraction_layer.rst | 9 ---------
 1 file changed, 9 deletions(-)

diff --git a/doc/guides/prog_guide/env_abstraction_layer.rst b/doc/guides/prog_guide/env_abstraction_layer.rst
index 8b5d050c7..426acfc28 100644
--- a/doc/guides/prog_guide/env_abstraction_layer.rst
+++ b/doc/guides/prog_guide/env_abstraction_layer.rst
@@ -148,13 +148,4 @@ A default validator callback is provided by EAL, which can be enabled with a
 of memory that can be used by DPDK application.
 
-.. note::
-
-    In multiprocess scenario, all related processes (i.e. primary process, and
-    secondary processes running with the same prefix) must be in the same memory
-    modes. That is, if primary process is run in dynamic memory mode, all of its
-    secondary processes must be run in the same mode. The same is applicable to
-    ``--single-file-segments`` command-line option - both primary and secondary
-    processes must shared this mode.
-
 + Legacy memory mode
 
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.304747242 +0000
+++ 0036-doc-remove-note-on-memory-mode-limitation-in-multi-p.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,14 +1,15 @@
-From 41328c404f5023df3dddab5daddad2403c5bb434 Mon Sep 17 00:00:00 2001
+From d5936803fb2b62db3d953039eb3c981229f28670 Mon Sep 17 00:00:00 2001
 From: Anatoly Burakov <anatoly.burakov@intel.com>
 Date: Thu, 6 Dec 2018 09:30:33 +0000
 Subject: [PATCH] doc: remove note on memory mode limitation in multi-process
 
+[ upstream commit 41328c404f5023df3dddab5daddad2403c5bb434 ]
+
 Memory mode flags are now shared between primary and secondary
 processes, so the in documentation about limitations is no longer
 necessary.
 
 Fixes: 64cdfc35aaad ("mem: store memory mode flags in shared config")
-Cc: stable@dpdk.org
 
 Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
 ---
@@ -16,7 +17,7 @@
  1 file changed, 9 deletions(-)
 
 diff --git a/doc/guides/prog_guide/env_abstraction_layer.rst b/doc/guides/prog_guide/env_abstraction_layer.rst
-index 5aaac0bd2..929d76dba 100644
+index 8b5d050c7..426acfc28 100644
 --- a/doc/guides/prog_guide/env_abstraction_layer.rst
 +++ b/doc/guides/prog_guide/env_abstraction_layer.rst
 @@ -148,13 +148,4 @@ A default validator callback is provided by EAL, which can be enabled with a

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

* [dpdk-stable] patch 'test/mem: add external mem autotest to meson' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (34 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'doc: remove note on memory mode limitation in multi-process' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'test/fbarray: add " Kevin Traynor
                   ` (35 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Anatoly Burakov; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From b660b4fddcf10fdba8b762e342b8080de9a30b52 Mon Sep 17 00:00:00 2001
From: Anatoly Burakov <anatoly.burakov@intel.com>
Date: Wed, 5 Dec 2018 16:25:48 +0000
Subject: [PATCH] test/mem: add external mem autotest to meson

[ upstream commit 01aa25644a465c6636672dee698c07dad2f37fec ]

The 'external_mem_autotest' was defined in the meson build, but
the actual source file was not being compiled by meson.

Fixes: b270daa43b3d ("test: support external memory")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
 test/test/meson.build | 1 +
 1 file changed, 1 insertion(+)

diff --git a/test/test/meson.build b/test/test/meson.build
index 554e9945f..0914aa258 100644
--- a/test/test/meson.build
+++ b/test/test/meson.build
@@ -40,4 +40,5 @@ test_sources = files('commands.c',
 	'test_event_timer_adapter.c',
 	'test_eventdev.c',
+	'test_external_mem.c',
 	'test_func_reentrancy.c',
 	'test_flow_classify.c',
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.328186562 +0000
+++ 0037-test-mem-add-external-mem-autotest-to-meson.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,13 +1,14 @@
-From 01aa25644a465c6636672dee698c07dad2f37fec Mon Sep 17 00:00:00 2001
+From b660b4fddcf10fdba8b762e342b8080de9a30b52 Mon Sep 17 00:00:00 2001
 From: Anatoly Burakov <anatoly.burakov@intel.com>
 Date: Wed, 5 Dec 2018 16:25:48 +0000
 Subject: [PATCH] test/mem: add external mem autotest to meson
 
+[ upstream commit 01aa25644a465c6636672dee698c07dad2f37fec ]
+
 The 'external_mem_autotest' was defined in the meson build, but
 the actual source file was not being compiled by meson.
 
 Fixes: b270daa43b3d ("test: support external memory")
-Cc: stable@dpdk.org
 
 Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
 ---

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

* [dpdk-stable] patch 'test/fbarray: add to meson' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (35 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'test/mem: add external mem autotest to meson' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'eal: close multi-process socket during cleanup' " Kevin Traynor
                   ` (34 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Anatoly Burakov; +Cc: Bruce Richardson, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 8eb8df29a23a2874b403a82b35f379d7cf369a9d Mon Sep 17 00:00:00 2001
From: Anatoly Burakov <anatoly.burakov@intel.com>
Date: Wed, 5 Dec 2018 16:26:00 +0000
Subject: [PATCH] test/fbarray: add to meson

[ upstream commit 025e949138e4f9c2544d290de24bee9822f89f53 ]

Currently, fbarray autotest is only built by make, but is
missing from meson build files.

Fixes: 7985860c18af ("test/fbarray: add autotests")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 test/test/meson.build | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/test/test/meson.build b/test/test/meson.build
index 0914aa258..5a4816fed 100644
--- a/test/test/meson.build
+++ b/test/test/meson.build
@@ -41,4 +41,5 @@ test_sources = files('commands.c',
 	'test_eventdev.c',
 	'test_external_mem.c',
+	'test_fbarray.c',
 	'test_func_reentrancy.c',
 	'test_flow_classify.c',
@@ -172,4 +173,5 @@ test_names = [
 	'eventdev_sw_autotest',
 	'external_mem_autotest',
+	'fbarray_autotest',
 	'func_reentrancy_autotest',
 	'flow_classify_autotest',
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.353117271 +0000
+++ 0038-test-fbarray-add-to-meson.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,13 +1,14 @@
-From 025e949138e4f9c2544d290de24bee9822f89f53 Mon Sep 17 00:00:00 2001
+From 8eb8df29a23a2874b403a82b35f379d7cf369a9d Mon Sep 17 00:00:00 2001
 From: Anatoly Burakov <anatoly.burakov@intel.com>
 Date: Wed, 5 Dec 2018 16:26:00 +0000
 Subject: [PATCH] test/fbarray: add to meson
 
+[ upstream commit 025e949138e4f9c2544d290de24bee9822f89f53 ]
+
 Currently, fbarray autotest is only built by make, but is
 missing from meson build files.
 
 Fixes: 7985860c18af ("test/fbarray: add autotests")
-Cc: stable@dpdk.org
 
 Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
 Acked-by: Bruce Richardson <bruce.richardson@intel.com>

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

* [dpdk-stable] patch 'eal: close multi-process socket during cleanup' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (36 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'test/fbarray: add " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'hash: fix return of bulk lookup' " Kevin Traynor
                   ` (33 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Qi Zhang; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From eeae5231818b708962c5341bd97d05e798e7001e Mon Sep 17 00:00:00 2001
From: Qi Zhang <qi.z.zhang@intel.com>
Date: Thu, 20 Dec 2018 20:51:14 +0800
Subject: [PATCH] eal: close multi-process socket during cleanup

[ upstream commit 85d6815fa6d071afc323c3a0bdfe2d0769ec33d0 ]

When secondary process quit, the mp_socket* file still exist, that
cause rte_mp_request_sync fail when try to send message on a floating
socket.

The patch fix the issue by introduce a function rte_mp_channel_cleanup.
This function will be called by rte_eal_cleanup and it will close the
mp socket and delete the mp_socket* file.

Fixes: bacaa2754017 ("eal: add channel for multi-process communication")

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
---
 lib/librte_eal/bsdapp/eal/eal.c         |  1 +
 lib/librte_eal/common/eal_common_proc.c | 22 +++++++++++++++++++++-
 lib/librte_eal/common/eal_private.h     |  6 +++++-
 lib/librte_eal/linuxapp/eal/eal.c       |  1 +
 4 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/lib/librte_eal/bsdapp/eal/eal.c b/lib/librte_eal/bsdapp/eal/eal.c
index 41ddb5a22..a6d02e7dc 100644
--- a/lib/librte_eal/bsdapp/eal/eal.c
+++ b/lib/librte_eal/bsdapp/eal/eal.c
@@ -920,4 +920,5 @@ rte_eal_cleanup(void)
 {
 	rte_service_finalize();
+	rte_mp_channel_cleanup();
 	return 0;
 }
diff --git a/lib/librte_eal/common/eal_common_proc.c b/lib/librte_eal/common/eal_common_proc.c
index 6b876590a..b46d644b3 100644
--- a/lib/librte_eal/common/eal_common_proc.c
+++ b/lib/librte_eal/common/eal_common_proc.c
@@ -38,4 +38,5 @@ static char mp_filter[PATH_MAX];   /* Filter for secondary process sockets */
 static char mp_dir_path[PATH_MAX]; /* The directory path for all mp sockets */
 static pthread_mutex_t mp_mutex_action = PTHREAD_MUTEX_INITIALIZER;
+static char peer_name[PATH_MAX];
 
 struct action_entry {
@@ -512,7 +513,7 @@ static int
 open_socket_fd(void)
 {
-	char peer_name[PATH_MAX] = {0};
 	struct sockaddr_un un;
 
+	peer_name[0] = '\0';
 	if (rte_eal_process_type() == RTE_PROC_SECONDARY)
 		snprintf(peer_name, sizeof(peer_name),
@@ -543,4 +544,17 @@ open_socket_fd(void)
 }
 
+static void
+close_socket_fd(void)
+{
+	char path[PATH_MAX];
+
+	if (mp_fd < 0)
+		return;
+
+	close(mp_fd);
+	create_socket_path(peer_name, path, sizeof(path));
+	unlink(path);
+}
+
 int
 rte_mp_channel_init(void)
@@ -603,4 +617,10 @@ rte_mp_channel_init(void)
 }
 
+void
+rte_mp_channel_cleanup(void)
+{
+	close_socket_fd();
+}
+
 /**
  * Return -1, as fail to send message and it's caused by the local side.
diff --git a/lib/librte_eal/common/eal_private.h b/lib/librte_eal/common/eal_private.h
index 442c6dc48..4f483833d 100644
--- a/lib/librte_eal/common/eal_private.h
+++ b/lib/librte_eal/common/eal_private.h
@@ -256,7 +256,11 @@ struct rte_bus *rte_bus_find_by_device_name(const char *str);
  *   (<0) on failure.
  */
-
 int rte_mp_channel_init(void);
 
+/**
+ * Primary/secondary communication cleanup.
+ */
+void rte_mp_channel_cleanup(void);
+
 /**
  * @internal
diff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c
index d252c8591..bcea22463 100644
--- a/lib/librte_eal/linuxapp/eal/eal.c
+++ b/lib/librte_eal/linuxapp/eal/eal.c
@@ -1230,4 +1230,5 @@ rte_eal_cleanup(void)
 		rte_memseg_walk(mark_freeable, NULL);
 	rte_service_finalize();
+	rte_mp_channel_cleanup();
 	return 0;
 }
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.374137064 +0000
+++ 0039-eal-close-multi-process-socket-during-cleanup.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,8 +1,10 @@
-From 85d6815fa6d071afc323c3a0bdfe2d0769ec33d0 Mon Sep 17 00:00:00 2001
+From eeae5231818b708962c5341bd97d05e798e7001e Mon Sep 17 00:00:00 2001
 From: Qi Zhang <qi.z.zhang@intel.com>
 Date: Thu, 20 Dec 2018 20:51:14 +0800
 Subject: [PATCH] eal: close multi-process socket during cleanup
 
+[ upstream commit 85d6815fa6d071afc323c3a0bdfe2d0769ec33d0 ]
+
 When secondary process quit, the mp_socket* file still exist, that
 cause rte_mp_request_sync fail when try to send message on a floating
 socket.
@@ -12,7 +14,6 @@
 mp socket and delete the mp_socket* file.
 
 Fixes: bacaa2754017 ("eal: add channel for multi-process communication")
-Cc: stable@dpdk.org
 
 Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
 ---
@@ -23,10 +24,10 @@
  4 files changed, 28 insertions(+), 2 deletions(-)
 
 diff --git a/lib/librte_eal/bsdapp/eal/eal.c b/lib/librte_eal/bsdapp/eal/eal.c
-index 20f790a71..c8e0da097 100644
+index 41ddb5a22..a6d02e7dc 100644
 --- a/lib/librte_eal/bsdapp/eal/eal.c
 +++ b/lib/librte_eal/bsdapp/eal/eal.c
-@@ -923,4 +923,5 @@ rte_eal_cleanup(void)
+@@ -920,4 +920,5 @@ rte_eal_cleanup(void)
  {
  	rte_service_finalize();
 +	rte_mp_channel_cleanup();
@@ -98,10 +99,10 @@
  /**
   * @internal
 diff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c
-index 1d46f3b27..2d8d470b8 100644
+index d252c8591..bcea22463 100644
 --- a/lib/librte_eal/linuxapp/eal/eal.c
 +++ b/lib/librte_eal/linuxapp/eal/eal.c
-@@ -1238,4 +1238,5 @@ rte_eal_cleanup(void)
+@@ -1230,4 +1230,5 @@ rte_eal_cleanup(void)
  		rte_memseg_walk(mark_freeable, NULL);
  	rte_service_finalize();
 +	rte_mp_channel_cleanup();

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

* [dpdk-stable] patch 'hash: fix return of bulk lookup' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (37 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'eal: close multi-process socket during cleanup' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'hash: fix out-of-bound write while freeing key slot' " Kevin Traynor
                   ` (32 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Jeff Shaw; +Cc: Bruce Richardson, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From cf868c33095de279e2d247e700aa5a336d581f0e Mon Sep 17 00:00:00 2001
From: Jeff Shaw <jeffrey.b.shaw@intel.com>
Date: Fri, 7 Dec 2018 16:01:26 -0800
Subject: [PATCH] hash: fix return of bulk lookup
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

[ upstream commit 0f48ca429bc7a816a6fb8a0d9bd119fe0471788c ]

The __rte_hash_lookup_bulk() function returns void, and therefore
should not return with an expression. This commit fixes the following
compiler warning when attempting to compile with "-pedantic -std=c11".

  warning: ISO C forbids ‘return’ with expression, in function
           returning void [-Wpedantic]

Fixes: 9eca8bd7a61c ("hash: separate lock-free and r/w lock lookup")

Signed-off-by: Jeff Shaw <jeffrey.b.shaw@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/librte_hash/rte_cuckoo_hash.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/lib/librte_hash/rte_cuckoo_hash.c b/lib/librte_hash/rte_cuckoo_hash.c
index c55a4f263..7e6c139d3 100644
--- a/lib/librte_hash/rte_cuckoo_hash.c
+++ b/lib/librte_hash/rte_cuckoo_hash.c
@@ -2023,9 +2023,9 @@ __rte_hash_lookup_bulk(const struct rte_hash *h, const void **keys,
 {
 	if (h->readwrite_concur_lf_support)
-		return __rte_hash_lookup_bulk_lf(h, keys, num_keys,
-						positions, hit_mask, data);
+		__rte_hash_lookup_bulk_lf(h, keys, num_keys, positions,
+					  hit_mask, data);
 	else
-		return __rte_hash_lookup_bulk_l(h, keys, num_keys,
-						positions, hit_mask, data);
+		__rte_hash_lookup_bulk_l(h, keys, num_keys, positions,
+					 hit_mask, data);
 }
 
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.401127981 +0000
+++ 0040-hash-fix-return-of-bulk-lookup.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,4 +1,4 @@
-From 0f48ca429bc7a816a6fb8a0d9bd119fe0471788c Mon Sep 17 00:00:00 2001
+From cf868c33095de279e2d247e700aa5a336d581f0e Mon Sep 17 00:00:00 2001
 From: Jeff Shaw <jeffrey.b.shaw@intel.com>
 Date: Fri, 7 Dec 2018 16:01:26 -0800
 Subject: [PATCH] hash: fix return of bulk lookup
@@ -6,6 +6,8 @@
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
 
+[ upstream commit 0f48ca429bc7a816a6fb8a0d9bd119fe0471788c ]
+
 The __rte_hash_lookup_bulk() function returns void, and therefore
 should not return with an expression. This commit fixes the following
 compiler warning when attempting to compile with "-pedantic -std=c11".
@@ -14,7 +16,6 @@
            returning void [-Wpedantic]
 
 Fixes: 9eca8bd7a61c ("hash: separate lock-free and r/w lock lookup")
-Cc: stable@dpdk.org
 
 Signed-off-by: Jeff Shaw <jeffrey.b.shaw@intel.com>
 Acked-by: Bruce Richardson <bruce.richardson@intel.com>

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

* [dpdk-stable] patch 'hash: fix out-of-bound write while freeing key slot' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (38 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'hash: fix return of bulk lookup' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'devtools: fix return of forbidden addition checks' " Kevin Traynor
                   ` (31 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Honnappa Nagarahalli
  Cc: Steve Capper, Gavin Hu, Bruce Richardson, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 6e4d89018954338778ea1c88bd4c9019c8900a73 Mon Sep 17 00:00:00 2001
From: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Date: Wed, 21 Nov 2018 20:51:56 -0600
Subject: [PATCH] hash: fix out-of-bound write while freeing key slot

[ upstream commit d5c677db89cc1e6113d55d8bf2300ec8b5f2d383 ]

Add a debug check for out-of-bound write while freeing the key slot.

Coverity issue: 325733
Fixes: e605a1d36ca7 ("hash: add lock-free r/w concurrency")

Signed-off-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Reviewed-by: Steve Capper <steve.capper@arm.com>
Reviewed-by: Gavin Hu <gavin.hu@arm.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/librte_hash/rte_cuckoo_hash.c |  4 ++++
 lib/librte_hash/rte_cuckoo_hash.h | 11 +++++++++++
 2 files changed, 15 insertions(+)

diff --git a/lib/librte_hash/rte_cuckoo_hash.c b/lib/librte_hash/rte_cuckoo_hash.c
index 7e6c139d3..c01489ba5 100644
--- a/lib/librte_hash/rte_cuckoo_hash.c
+++ b/lib/librte_hash/rte_cuckoo_hash.c
@@ -1348,4 +1348,7 @@ remove_entry(const struct rte_hash *h, struct rte_hash_bucket *bkt, unsigned i)
 						cached_free_slots->objs,
 						LCORE_CACHE_SIZE, NULL);
+			ERR_IF_TRUE((n_slots == 0),
+				"%s: could not enqueue free slots in global ring\n",
+				__func__);
 			cached_free_slots->len -= n_slots;
 		}
@@ -1553,4 +1556,5 @@ rte_hash_free_key_with_position(const struct rte_hash *h,
 						cached_free_slots->objs,
 						LCORE_CACHE_SIZE, NULL);
+			RETURN_IF_TRUE((n_slots == 0), -EFAULT);
 			cached_free_slots->len -= n_slots;
 		}
diff --git a/lib/librte_hash/rte_cuckoo_hash.h b/lib/librte_hash/rte_cuckoo_hash.h
index 5dfbbc48b..eacdaa8d4 100644
--- a/lib/librte_hash/rte_cuckoo_hash.h
+++ b/lib/librte_hash/rte_cuckoo_hash.h
@@ -30,4 +30,15 @@
 #endif
 
+#if defined(RTE_LIBRTE_HASH_DEBUG)
+#define ERR_IF_TRUE(cond, fmt, args...) do { \
+	if (cond) { \
+		RTE_LOG(ERR, HASH, fmt, ##args); \
+		return; \
+	} \
+} while (0)
+#else
+#define ERR_IF_TRUE(cond, fmt, args...)
+#endif
+
 #include <rte_hash_crc.h>
 #include <rte_jhash.h>
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.425985550 +0000
+++ 0041-hash-fix-out-of-bound-write-while-freeing-key-slot.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,13 +1,14 @@
-From d5c677db89cc1e6113d55d8bf2300ec8b5f2d383 Mon Sep 17 00:00:00 2001
+From 6e4d89018954338778ea1c88bd4c9019c8900a73 Mon Sep 17 00:00:00 2001
 From: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
 Date: Wed, 21 Nov 2018 20:51:56 -0600
 Subject: [PATCH] hash: fix out-of-bound write while freeing key slot
 
+[ upstream commit d5c677db89cc1e6113d55d8bf2300ec8b5f2d383 ]
+
 Add a debug check for out-of-bound write while freeing the key slot.
 
 Coverity issue: 325733
 Fixes: e605a1d36ca7 ("hash: add lock-free r/w concurrency")
-Cc: stable@dpdk.org
 
 Signed-off-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
 Reviewed-by: Steve Capper <steve.capper@arm.com>

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

* [dpdk-stable] patch 'devtools: fix return of forbidden addition checks' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (39 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'hash: fix out-of-bound write while freeing key slot' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'malloc: fix deadlock when reading stats' " Kevin Traynor
                   ` (30 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Arnon Warshavsky; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From c8d23d7b9743b7518d0ed09b20f1f0e5ff5c4a80 Mon Sep 17 00:00:00 2001
From: Arnon Warshavsky <arnon@qwilt.com>
Date: Tue, 18 Dec 2018 17:19:00 +0200
Subject: [PATCH] devtools: fix return of forbidden addition checks

[ upstream commit dafc04c15174e84ca04a7f4ebe67b10c059a5c0c ]

Explicitly collect the error code of the multiple awk script calls.

Bugzilla ID: 165
Fixes: 4d4c612e6a30 ("devtools: check wrong svg include in guides")

Signed-off-by: Arnon Warshavsky <arnon@qwilt.com>
---
 devtools/checkpatches.sh | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/devtools/checkpatches.sh b/devtools/checkpatches.sh
index ee8debecf..3b03b7ef2 100755
--- a/devtools/checkpatches.sh
+++ b/devtools/checkpatches.sh
@@ -45,4 +45,6 @@ print_usage () {
 
 check_forbidden_additions() { # <patch>
+	res=0
+
 	# refrain from new additions of rte_panic() and rte_exit()
 	# multiple folders and expressions are separated by spaces
@@ -52,5 +54,6 @@ check_forbidden_additions() { # <patch>
 		-v MESSAGE='Using rte_panic/rte_exit' \
 		-f $(dirname $(readlink -e $0))/check-forbidden-tokens.awk \
-		"$1"
+		"$1" || res=1
+
 	# svg figures must be included with wildcard extension
 	# because of png conversion for pdf docs
@@ -60,5 +63,7 @@ check_forbidden_additions() { # <patch>
 		-v MESSAGE='Using explicit .svg extension instead of .*' \
 		-f $(dirname $(readlink -e $0))/check-forbidden-tokens.awk \
-		"$1"
+		"$1" || res = 1
+
+	return $res
 }
 
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.452380475 +0000
+++ 0042-devtools-fix-return-of-forbidden-addition-checks.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,13 +1,14 @@
-From dafc04c15174e84ca04a7f4ebe67b10c059a5c0c Mon Sep 17 00:00:00 2001
+From c8d23d7b9743b7518d0ed09b20f1f0e5ff5c4a80 Mon Sep 17 00:00:00 2001
 From: Arnon Warshavsky <arnon@qwilt.com>
 Date: Tue, 18 Dec 2018 17:19:00 +0200
 Subject: [PATCH] devtools: fix return of forbidden addition checks
 
+[ upstream commit dafc04c15174e84ca04a7f4ebe67b10c059a5c0c ]
+
 Explicitly collect the error code of the multiple awk script calls.
 
 Bugzilla ID: 165
 Fixes: 4d4c612e6a30 ("devtools: check wrong svg include in guides")
-Cc: stable@dpdk.org
 
 Signed-off-by: Arnon Warshavsky <arnon@qwilt.com>
 ---

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

* [dpdk-stable] patch 'malloc: fix deadlock when reading stats' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (40 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'devtools: fix return of forbidden addition checks' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/i40e: clear VF reset flags after reset' " Kevin Traynor
                   ` (29 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Anatoly Burakov; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From ed54c0902f56a47e1d269824f543852fdac1796f Mon Sep 17 00:00:00 2001
From: Anatoly Burakov <anatoly.burakov@intel.com>
Date: Fri, 21 Dec 2018 12:26:05 +0000
Subject: [PATCH] malloc: fix deadlock when reading stats

[ upstream commit ba731ea1dda3f1a1b7eb4248d5988de746d3ef0a ]

Currently, malloc statistics and external heap creation code
use memory hotplug lock as a way to synchronize accesses to
heaps (as in, locking the hotplug lock to prevent list of heaps
from changing under our feet). At the same time, malloc
statistics code will also lock the heap because it needs to
access heap data and does not want any other thread to allocate
anything from that heap.

In such scheme, it is possible to enter a deadlock with the
following sequence of events:

thread 1		thread 2
rte_malloc()
			rte_malloc_dump_stats()
take heap lock
			take hotplug lock
failed to allocate,
attempt to take
hotplug lock
			attempt to take heap lock

Neither thread will be able to continue, as both of them are
waiting for the other one to drop the lock. Adding an
additional lock will require an ABI change, so instead of
that, make malloc statistics calls thread-unsafe with
respect to creating/destroying heaps.

Fixes: 72cf92b31855 ("malloc: index heaps using heap ID rather than NUMA node")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
 lib/librte_eal/common/include/rte_malloc.h |  9 +++++++++
 lib/librte_eal/common/rte_malloc.c         | 19 +++----------------
 2 files changed, 12 insertions(+), 16 deletions(-)

diff --git a/lib/librte_eal/common/include/rte_malloc.h b/lib/librte_eal/common/include/rte_malloc.h
index a5290b074..54a12467a 100644
--- a/lib/librte_eal/common/include/rte_malloc.h
+++ b/lib/librte_eal/common/include/rte_malloc.h
@@ -252,4 +252,7 @@ rte_malloc_validate(const void *ptr, size_t *size);
  * Get heap statistics for the specified heap.
  *
+ * @note This function is not thread-safe with respect to
+ *    ``rte_malloc_heap_create()``/``rte_malloc_heap_destroy()`` functions.
+ *
  * @param socket
  *   An unsigned integer specifying the socket to get heap statistics for
@@ -462,4 +465,7 @@ rte_malloc_heap_socket_is_external(int socket_id);
  * NULL, all memory types will be dumped.
  *
+ * @note This function is not thread-safe with respect to
+ *    ``rte_malloc_heap_create()``/``rte_malloc_heap_destroy()`` functions.
+ *
  * @param f
  *   A pointer to a file for output
@@ -474,4 +480,7 @@ rte_malloc_dump_stats(FILE *f, const char *type);
  * Dump contents of all malloc heaps to a file.
  *
+ * @note This function is not thread-safe with respect to
+ *    ``rte_malloc_heap_create()``/``rte_malloc_heap_destroy()`` functions.
+ *
  * @param f
  *   A pointer to a file for output
diff --git a/lib/librte_eal/common/rte_malloc.c b/lib/librte_eal/common/rte_malloc.c
index 06cf1e666..47c2bec72 100644
--- a/lib/librte_eal/common/rte_malloc.c
+++ b/lib/librte_eal/common/rte_malloc.c
@@ -157,18 +157,12 @@ rte_malloc_get_socket_stats(int socket,
 {
 	struct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config;
-	int heap_idx, ret = -1;
-
-	rte_rwlock_read_lock(&mcfg->memory_hotplug_lock);
+	int heap_idx;
 
 	heap_idx = malloc_socket_to_heap_id(socket);
 	if (heap_idx < 0)
-		goto unlock;
+		return -1;
 
-	ret = malloc_heap_get_stats(&mcfg->malloc_heaps[heap_idx],
+	return malloc_heap_get_stats(&mcfg->malloc_heaps[heap_idx],
 			socket_stats);
-unlock:
-	rte_rwlock_read_unlock(&mcfg->memory_hotplug_lock);
-
-	return ret;
 }
 
@@ -182,12 +176,8 @@ rte_malloc_dump_heaps(FILE *f)
 	unsigned int idx;
 
-	rte_rwlock_read_lock(&mcfg->memory_hotplug_lock);
-
 	for (idx = 0; idx < RTE_MAX_HEAPS; idx++) {
 		fprintf(f, "Heap id: %u\n", idx);
 		malloc_heap_dump(&mcfg->malloc_heaps[idx], f);
 	}
-
-	rte_rwlock_read_unlock(&mcfg->memory_hotplug_lock);
 }
 
@@ -263,6 +253,4 @@ rte_malloc_dump_stats(FILE *f, __rte_unused const char *type)
 	struct rte_malloc_socket_stats sock_stats;
 
-	rte_rwlock_read_lock(&mcfg->memory_hotplug_lock);
-
 	/* Iterate through all initialised heaps */
 	for (heap_id = 0; heap_id < RTE_MAX_HEAPS; heap_id++) {
@@ -281,5 +269,4 @@ rte_malloc_dump_stats(FILE *f, __rte_unused const char *type)
 		fprintf(f, "\tFree_count:%u,\n", sock_stats.free_count);
 	}
-	rte_rwlock_read_unlock(&mcfg->memory_hotplug_lock);
 	return;
 }
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.478061537 +0000
+++ 0043-malloc-fix-deadlock-when-reading-stats.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,8 +1,10 @@
-From ba731ea1dda3f1a1b7eb4248d5988de746d3ef0a Mon Sep 17 00:00:00 2001
+From ed54c0902f56a47e1d269824f543852fdac1796f Mon Sep 17 00:00:00 2001
 From: Anatoly Burakov <anatoly.burakov@intel.com>
 Date: Fri, 21 Dec 2018 12:26:05 +0000
 Subject: [PATCH] malloc: fix deadlock when reading stats
 
+[ upstream commit ba731ea1dda3f1a1b7eb4248d5988de746d3ef0a ]
+
 Currently, malloc statistics and external heap creation code
 use memory hotplug lock as a way to synchronize accesses to
 heaps (as in, locking the hotplug lock to prevent list of heaps
@@ -31,28 +33,13 @@
 respect to creating/destroying heaps.
 
 Fixes: 72cf92b31855 ("malloc: index heaps using heap ID rather than NUMA node")
-Cc: stable@dpdk.org
 
 Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
 ---
- doc/guides/rel_notes/release_19_02.rst     |  4 ++++
  lib/librte_eal/common/include/rte_malloc.h |  9 +++++++++
  lib/librte_eal/common/rte_malloc.c         | 19 +++----------------
- 3 files changed, 16 insertions(+), 16 deletions(-)
+ 2 files changed, 12 insertions(+), 16 deletions(-)
 
-diff --git a/doc/guides/rel_notes/release_19_02.rst b/doc/guides/rel_notes/release_19_02.rst
-index 47768288a..0b248d55d 100644
---- a/doc/guides/rel_notes/release_19_02.rst
-+++ b/doc/guides/rel_notes/release_19_02.rst
-@@ -127,4 +127,8 @@ API Changes
-     fd's (such as in-memory or no-huge mode)
- 
-+* eal: Functions ``rte_malloc_dump_stats()``, ``rte_malloc_dump_heaps()`` and
-+  ``rte_malloc_get_socket_stats()`` are no longer safe to call concurrently with
-+  ``rte_malloc_heap_create()`` or ``rte_malloc_heap_destroy()`` function calls.
-+
- * pdump: The ``rte_pdump_set_socket_dir()``, the parameter ``path`` of
-   ``rte_pdump_init()`` and enum ``rte_pdump_socktype`` were deprecated
 diff --git a/lib/librte_eal/common/include/rte_malloc.h b/lib/librte_eal/common/include/rte_malloc.h
 index a5290b074..54a12467a 100644
 --- a/lib/librte_eal/common/include/rte_malloc.h
@@ -82,7 +69,7 @@
   * @param f
   *   A pointer to a file for output
 diff --git a/lib/librte_eal/common/rte_malloc.c b/lib/librte_eal/common/rte_malloc.c
-index 09051c236..b39de3c99 100644
+index 06cf1e666..47c2bec72 100644
 --- a/lib/librte_eal/common/rte_malloc.c
 +++ b/lib/librte_eal/common/rte_malloc.c
 @@ -157,18 +157,12 @@ rte_malloc_get_socket_stats(int socket,

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

* [dpdk-stable] patch 'net/i40e: clear VF reset flags after reset' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (41 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'malloc: fix deadlock when reading stats' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/i40e: fix statistics inconsistency' " Kevin Traynor
                   ` (28 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Zhirun Yan; +Cc: Haiyue Wang, Qi Zhang, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 49719bdfde3834834b2f72bccea2d467159e9747 Mon Sep 17 00:00:00 2001
From: Zhirun Yan <zhirun.yan@intel.com>
Date: Thu, 13 Dec 2018 15:46:45 +0000
Subject: [PATCH] net/i40e: clear VF reset flags after reset

[ upstream commit 0eaa1f8c75311b96d269a0195b80e80d6c27e83c ]

The reset flags vf->vf_reset and vf->pend_msg are set when VF received
VIRTCHNL_EVENT_RESET_IMPENDING. So after resetting done, these flags
should be cleared.

Fixes: 8cacf78469a7 ("net/i40e: fix VF initialization error")

Signed-off-by: Zhirun Yan <zhirun.yan@intel.com>
Signed-off-by: Haiyue Wang <haiyue.wang@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
---
 drivers/net/i40e/i40e_ethdev_vf.c | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c
index 05dc6596b..100e71cc8 100644
--- a/drivers/net/i40e/i40e_ethdev_vf.c
+++ b/drivers/net/i40e/i40e_ethdev_vf.c
@@ -1081,7 +1081,9 @@ i40evf_enable_irq0(struct i40e_hw *hw)
 
 static int
-i40evf_check_vf_reset_done(struct i40e_hw *hw)
+i40evf_check_vf_reset_done(struct rte_eth_dev *dev)
 {
 	int i, reset;
+	struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	struct i40e_vf *vf = I40EVF_DEV_PRIVATE_TO_VF(dev->data->dev_private);
 
 	for (i = 0; i < MAX_RESET_WAIT_CNT; i++) {
@@ -1098,10 +1100,14 @@ i40evf_check_vf_reset_done(struct i40e_hw *hw)
 		return -1;
 
+	vf->vf_reset = false;
+	vf->pend_msg &= ~PFMSG_RESET_IMPENDING;
+
 	return 0;
 }
 static int
-i40evf_reset_vf(struct i40e_hw *hw)
+i40evf_reset_vf(struct rte_eth_dev *dev)
 {
 	int ret;
+	struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private);
 
 	if (i40e_vf_reset(hw) != I40E_SUCCESS) {
@@ -1120,5 +1126,5 @@ i40evf_reset_vf(struct i40e_hw *hw)
 	rte_delay_ms(200);
 
-	ret = i40evf_check_vf_reset_done(hw);
+	ret = i40evf_check_vf_reset_done(dev);
 	if (ret) {
 		PMD_INIT_LOG(ERR, "VF is still resetting");
@@ -1146,5 +1152,5 @@ i40evf_init_vf(struct rte_eth_dev *dev)
 	}
 
-	err = i40evf_check_vf_reset_done(hw);
+	err = i40evf_check_vf_reset_done(dev);
 	if (err)
 		goto err;
@@ -1158,5 +1164,5 @@ i40evf_init_vf(struct rte_eth_dev *dev)
 
 	/* Reset VF and wait until it's complete */
-	if (i40evf_reset_vf(hw)) {
+	if (i40evf_reset_vf(dev)) {
 		PMD_INIT_LOG(ERR, "reset NIC failed");
 		goto err_aq;
@@ -2258,5 +2264,5 @@ i40evf_dev_close(struct rte_eth_dev *dev)
 	i40evf_dev_allmulticast_disable(dev);
 
-	i40evf_reset_vf(hw);
+	i40evf_reset_vf(dev);
 	i40e_shutdown_adminq(hw);
 	i40evf_disable_irq0(hw);
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.504963458 +0000
+++ 0044-net-i40e-clear-VF-reset-flags-after-reset.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,14 +1,15 @@
-From 0eaa1f8c75311b96d269a0195b80e80d6c27e83c Mon Sep 17 00:00:00 2001
+From 49719bdfde3834834b2f72bccea2d467159e9747 Mon Sep 17 00:00:00 2001
 From: Zhirun Yan <zhirun.yan@intel.com>
 Date: Thu, 13 Dec 2018 15:46:45 +0000
 Subject: [PATCH] net/i40e: clear VF reset flags after reset
 
+[ upstream commit 0eaa1f8c75311b96d269a0195b80e80d6c27e83c ]
+
 The reset flags vf->vf_reset and vf->pend_msg are set when VF received
 VIRTCHNL_EVENT_RESET_IMPENDING. So after resetting done, these flags
 should be cleared.
 
 Fixes: 8cacf78469a7 ("net/i40e: fix VF initialization error")
-Cc: stable@dpdk.org
 
 Signed-off-by: Zhirun Yan <zhirun.yan@intel.com>
 Signed-off-by: Haiyue Wang <haiyue.wang@intel.com>

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

* [dpdk-stable] patch 'net/i40e: fix statistics inconsistency' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (42 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/i40e: clear VF reset flags after reset' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/netvsc: fix transmit descriptor pool cleanup' " Kevin Traynor
                   ` (27 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Xiaoyun Li; +Cc: Qi Zhang, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 75a79eb359047c0e571c5e9ed248160c885abe3f Mon Sep 17 00:00:00 2001
From: Xiaoyun Li <xiaoyun.li@intel.com>
Date: Thu, 6 Dec 2018 14:03:42 +0800
Subject: [PATCH] net/i40e: fix statistics inconsistency

[ upstream commit 63056c192005336d7c9d2639efe317639dd3baaa ]

While calculating the input packet count per port, discarded packets
should be reduced, right now only PF VSI discarded packets are reduced.
But while calculating the input byte count per port, Rx byte count is
used, which should take all discarded packets into account, including
VF VSI ones.
This will cause inconsistency in stat counters in some cases.

This patch would take all VSI stats as packet and byte count to address
the issue.

Fixes: 763de290cbd1 ("net/i40e: fix packet count for PF")

Signed-off-by: Xiaoyun Li <xiaoyun.li@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
---
 drivers/net/i40e/i40e_ethdev.c | 25 ++++++++++++++++++++-----
 1 file changed, 20 insertions(+), 5 deletions(-)

diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index 501c30cc3..8dc1a4af8 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -3175,4 +3175,5 @@ i40e_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
 	struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private);
 	struct i40e_hw_port_stats *ns = &pf->stats; /* new stats */
+	struct i40e_vsi *vsi;
 	unsigned i;
 
@@ -3180,13 +3181,12 @@ i40e_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
 	i40e_read_stats_registers(pf, hw);
 
-	stats->ipackets = ns->eth.rx_unicast +
-			ns->eth.rx_multicast +
-			ns->eth.rx_broadcast -
-			ns->eth.rx_discards -
+	stats->ipackets = pf->main_vsi->eth_stats.rx_unicast +
+			pf->main_vsi->eth_stats.rx_multicast +
+			pf->main_vsi->eth_stats.rx_broadcast -
 			pf->main_vsi->eth_stats.rx_discards;
 	stats->opackets = ns->eth.tx_unicast +
 			ns->eth.tx_multicast +
 			ns->eth.tx_broadcast;
-	stats->ibytes   = ns->eth.rx_bytes;
+	stats->ibytes   = pf->main_vsi->eth_stats.rx_bytes;
 	stats->obytes   = ns->eth.tx_bytes;
 	stats->oerrors  = ns->eth.tx_errors +
@@ -3200,4 +3200,19 @@ i40e_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
 			ns->rx_oversize + ns->rx_fragments + ns->rx_jabber;
 
+	if (pf->vfs) {
+		for (i = 0; i < pf->vf_num; i++) {
+			vsi = pf->vfs[i].vsi;
+			i40e_update_vsi_stats(vsi);
+
+			stats->ipackets += (vsi->eth_stats.rx_unicast +
+					vsi->eth_stats.rx_multicast +
+					vsi->eth_stats.rx_broadcast -
+					vsi->eth_stats.rx_discards);
+			stats->ibytes   += vsi->eth_stats.rx_bytes;
+			stats->oerrors  += vsi->eth_stats.tx_errors;
+			stats->imissed  += vsi->eth_stats.rx_discards;
+		}
+	}
+
 	PMD_DRV_LOG(DEBUG, "***************** PF stats start *******************");
 	PMD_DRV_LOG(DEBUG, "rx_bytes:            %"PRIu64"", ns->eth.rx_bytes);
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.531690458 +0000
+++ 0045-net-i40e-fix-statistics-inconsistency.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,8 +1,10 @@
-From 63056c192005336d7c9d2639efe317639dd3baaa Mon Sep 17 00:00:00 2001
+From 75a79eb359047c0e571c5e9ed248160c885abe3f Mon Sep 17 00:00:00 2001
 From: Xiaoyun Li <xiaoyun.li@intel.com>
 Date: Thu, 6 Dec 2018 14:03:42 +0800
 Subject: [PATCH] net/i40e: fix statistics inconsistency
 
+[ upstream commit 63056c192005336d7c9d2639efe317639dd3baaa ]
+
 While calculating the input packet count per port, discarded packets
 should be reduced, right now only PF VSI discarded packets are reduced.
 But while calculating the input byte count per port, Rx byte count is
@@ -14,7 +16,6 @@
 the issue.
 
 Fixes: 763de290cbd1 ("net/i40e: fix packet count for PF")
-Cc: stable@dpdk.org
 
 Signed-off-by: Xiaoyun Li <xiaoyun.li@intel.com>
 Acked-by: Qi Zhang <qi.z.zhang@intel.com>

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

* [dpdk-stable] patch 'net/netvsc: fix transmit descriptor pool cleanup' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (43 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/i40e: fix statistics inconsistency' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/netvsc: fix probe when VF not found' " Kevin Traynor
                   ` (26 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: Stephen Hemminger, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From bec18d888958006b5b0ec2926c70545b54c9d857 Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Thu, 13 Dec 2018 17:26:20 -0800
Subject: [PATCH] net/netvsc: fix transmit descriptor pool cleanup

[ upstream commit c578d8507b4325747bbdb3993774e59fbad45d84 ]

On device close or startup errors, the transmit descriptor pool
was being left behind.

Fixes: 4e9c73e96e83 ("net/netvsc: add Hyper-V network device")

Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
---
 drivers/net/netvsc/hn_ethdev.c |  2 ++
 drivers/net/netvsc/hn_rxtx.c   | 11 +++++++++++
 drivers/net/netvsc/hn_var.h    |  1 +
 3 files changed, 14 insertions(+)

diff --git a/drivers/net/netvsc/hn_ethdev.c b/drivers/net/netvsc/hn_ethdev.c
index 1256fa399..8c7fc6719 100644
--- a/drivers/net/netvsc/hn_ethdev.c
+++ b/drivers/net/netvsc/hn_ethdev.c
@@ -800,4 +800,5 @@ failed:
 	PMD_INIT_LOG(NOTICE, "device init failed");
 
+	hn_tx_pool_uninit(eth_dev);
 	hn_detach(hv);
 	return err;
@@ -822,4 +823,5 @@ eth_hn_dev_uninit(struct rte_eth_dev *eth_dev)
 
 	hn_detach(hv);
+	hn_tx_pool_uninit(eth_dev);
 	rte_vmbus_chan_close(hv->primary->chan);
 	rte_free(hv->primary);
diff --git a/drivers/net/netvsc/hn_rxtx.c b/drivers/net/netvsc/hn_rxtx.c
index f4a36641b..487f76466 100644
--- a/drivers/net/netvsc/hn_rxtx.c
+++ b/drivers/net/netvsc/hn_rxtx.c
@@ -200,4 +200,15 @@ hn_tx_pool_init(struct rte_eth_dev *dev)
 }
 
+void
+hn_tx_pool_uninit(struct rte_eth_dev *dev)
+{
+	struct hn_data *hv = dev->data->dev_private;
+
+	if (hv->tx_pool) {
+		rte_mempool_free(hv->tx_pool);
+		hv->tx_pool = NULL;
+	}
+}
+
 static void hn_reset_txagg(struct hn_tx_queue *txq)
 {
diff --git a/drivers/net/netvsc/hn_var.h b/drivers/net/netvsc/hn_var.h
index e1072c7cf..a6516c1e6 100644
--- a/drivers/net/netvsc/hn_var.h
+++ b/drivers/net/netvsc/hn_var.h
@@ -150,4 +150,5 @@ uint16_t hn_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
 
 int	hn_tx_pool_init(struct rte_eth_dev *dev);
+void	hn_tx_pool_uninit(struct rte_eth_dev *dev);
 int	hn_dev_link_update(struct rte_eth_dev *dev, int wait);
 int	hn_dev_tx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.567799537 +0000
+++ 0046-net-netvsc-fix-transmit-descriptor-pool-cleanup.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,13 +1,14 @@
-From c578d8507b4325747bbdb3993774e59fbad45d84 Mon Sep 17 00:00:00 2001
+From bec18d888958006b5b0ec2926c70545b54c9d857 Mon Sep 17 00:00:00 2001
 From: Stephen Hemminger <stephen@networkplumber.org>
 Date: Thu, 13 Dec 2018 17:26:20 -0800
 Subject: [PATCH] net/netvsc: fix transmit descriptor pool cleanup
 
+[ upstream commit c578d8507b4325747bbdb3993774e59fbad45d84 ]
+
 On device close or startup errors, the transmit descriptor pool
 was being left behind.
 
 Fixes: 4e9c73e96e83 ("net/netvsc: add Hyper-V network device")
-Cc: stable@dpdk.org
 
 Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
 ---
@@ -17,23 +18,23 @@
  3 files changed, 14 insertions(+)
 
 diff --git a/drivers/net/netvsc/hn_ethdev.c b/drivers/net/netvsc/hn_ethdev.c
-index 22561471a..6c40ac78d 100644
+index 1256fa399..8c7fc6719 100644
 --- a/drivers/net/netvsc/hn_ethdev.c
 +++ b/drivers/net/netvsc/hn_ethdev.c
-@@ -802,4 +802,5 @@ failed:
+@@ -800,4 +800,5 @@ failed:
  	PMD_INIT_LOG(NOTICE, "device init failed");
  
 +	hn_tx_pool_uninit(eth_dev);
  	hn_detach(hv);
  	return err;
-@@ -824,4 +825,5 @@ eth_hn_dev_uninit(struct rte_eth_dev *eth_dev)
+@@ -822,4 +823,5 @@ eth_hn_dev_uninit(struct rte_eth_dev *eth_dev)
  
  	hn_detach(hv);
 +	hn_tx_pool_uninit(eth_dev);
  	rte_vmbus_chan_close(hv->primary->chan);
  	rte_free(hv->primary);
 diff --git a/drivers/net/netvsc/hn_rxtx.c b/drivers/net/netvsc/hn_rxtx.c
-index 622a83983..6197118b0 100644
+index f4a36641b..487f76466 100644
 --- a/drivers/net/netvsc/hn_rxtx.c
 +++ b/drivers/net/netvsc/hn_rxtx.c
 @@ -200,4 +200,15 @@ hn_tx_pool_init(struct rte_eth_dev *dev)
@@ -53,10 +54,10 @@
  static void hn_reset_txagg(struct hn_tx_queue *txq)
  {
 diff --git a/drivers/net/netvsc/hn_var.h b/drivers/net/netvsc/hn_var.h
-index cd173f6af..7f3266c45 100644
+index e1072c7cf..a6516c1e6 100644
 --- a/drivers/net/netvsc/hn_var.h
 +++ b/drivers/net/netvsc/hn_var.h
-@@ -151,4 +151,5 @@ uint16_t hn_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
+@@ -150,4 +150,5 @@ uint16_t hn_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
  
  int	hn_tx_pool_init(struct rte_eth_dev *dev);
 +void	hn_tx_pool_uninit(struct rte_eth_dev *dev);

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

* [dpdk-stable] patch 'net/netvsc: fix probe when VF not found' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (44 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/netvsc: fix transmit descriptor pool cleanup' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'vhost: fix race condition when adding fd in the fdset' " Kevin Traynor
                   ` (25 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: Stephen Hemminger, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 34a4bf9093e1aec7f243aeb65a924dd04531bf48 Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Thu, 13 Dec 2018 17:26:21 -0800
Subject: [PATCH] net/netvsc: fix probe when VF not found

[ upstream commit f2b76d22f85694864bbcd0f88267de9ef02d75c0 ]

It is possible that the VF device exists but DPDK doesn't know
about it. This could happen if device was blacklisted or more
likely the necessary device (Mellanox) was not part of the DPDK
configuration.

In either case, the right thing to do is just keep working
but only with the slower para-virtual device.

Fixes: dc7680e8597c ("net/netvsc: support integrated VF")

Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
---
 drivers/net/netvsc/hn_ethdev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/netvsc/hn_ethdev.c b/drivers/net/netvsc/hn_ethdev.c
index 8c7fc6719..da76b0db6 100644
--- a/drivers/net/netvsc/hn_ethdev.c
+++ b/drivers/net/netvsc/hn_ethdev.c
@@ -792,5 +792,5 @@ eth_hn_dev_init(struct rte_eth_dev *eth_dev)
 		err = hn_vf_add(eth_dev, hv);
 		if (err)
-			goto failed;
+			hv->vf_present = 0;
 	}
 
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.592146347 +0000
+++ 0047-net-netvsc-fix-probe-when-VF-not-found.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,8 +1,10 @@
-From f2b76d22f85694864bbcd0f88267de9ef02d75c0 Mon Sep 17 00:00:00 2001
+From 34a4bf9093e1aec7f243aeb65a924dd04531bf48 Mon Sep 17 00:00:00 2001
 From: Stephen Hemminger <stephen@networkplumber.org>
 Date: Thu, 13 Dec 2018 17:26:21 -0800
 Subject: [PATCH] net/netvsc: fix probe when VF not found
 
+[ upstream commit f2b76d22f85694864bbcd0f88267de9ef02d75c0 ]
+
 It is possible that the VF device exists but DPDK doesn't know
 about it. This could happen if device was blacklisted or more
 likely the necessary device (Mellanox) was not part of the DPDK
@@ -12,7 +14,6 @@
 but only with the slower para-virtual device.
 
 Fixes: dc7680e8597c ("net/netvsc: support integrated VF")
-Cc: stable@dpdk.org
 
 Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
 ---
@@ -20,10 +21,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/drivers/net/netvsc/hn_ethdev.c b/drivers/net/netvsc/hn_ethdev.c
-index 6c40ac78d..49b7ca7b2 100644
+index 8c7fc6719..da76b0db6 100644
 --- a/drivers/net/netvsc/hn_ethdev.c
 +++ b/drivers/net/netvsc/hn_ethdev.c
-@@ -794,5 +794,5 @@ eth_hn_dev_init(struct rte_eth_dev *eth_dev)
+@@ -792,5 +792,5 @@ eth_hn_dev_init(struct rte_eth_dev *eth_dev)
  		err = hn_vf_add(eth_dev, hv);
  		if (err)
 -			goto failed;

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

* [dpdk-stable] patch 'vhost: fix race condition when adding fd in the fdset' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (45 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/netvsc: fix probe when VF not found' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/ifc: store only registered device instance' " Kevin Traynor
                   ` (24 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Matthias Gatto; +Cc: Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 80a1d99db3eb06e3786223d5422bf37697ddf726 Mon Sep 17 00:00:00 2001
From: Matthias Gatto <matthias.gatto@outscale.com>
Date: Thu, 6 Dec 2018 16:00:07 +0000
Subject: [PATCH] vhost: fix race condition when adding fd in the fdset

[ upstream commit 276d63505be94bb8d5fdf754af0105707ea433c1 ]

fdset_add can call fdset_shrink_nolock which call fdset_move
concurrently to poll that is call in fdset_event_dispatch.

This patch add a mutex to protect poll from been call at the same time
fdset_add call fdset_shrink_nolock.

Fixes: 1b815b89599c ("vhost: try to shrink pfdset when fdset_add fails")

Signed-off-by: Matthias Gatto <matthias.gatto@outscale.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 lib/librte_vhost/fd_man.c | 4 ++++
 lib/librte_vhost/fd_man.h | 1 +
 lib/librte_vhost/socket.c | 1 +
 3 files changed, 6 insertions(+)

diff --git a/lib/librte_vhost/fd_man.c b/lib/librte_vhost/fd_man.c
index 38347ab1d..55d4856f9 100644
--- a/lib/librte_vhost/fd_man.c
+++ b/lib/librte_vhost/fd_man.c
@@ -130,5 +130,7 @@ fdset_add(struct fdset *pfdset, int fd, fd_cb rcb, fd_cb wcb, void *dat)
 	i = pfdset->num < MAX_FDS ? pfdset->num++ : -1;
 	if (i == -1) {
+		pthread_mutex_lock(&pfdset->fd_pooling_mutex);
 		fdset_shrink_nolock(pfdset);
+		pthread_mutex_unlock(&pfdset->fd_pooling_mutex);
 		i = pfdset->num < MAX_FDS ? pfdset->num++ : -1;
 		if (i == -1) {
@@ -247,5 +249,7 @@ fdset_event_dispatch(void *arg)
 		pthread_mutex_unlock(&pfdset->fd_mutex);
 
+		pthread_mutex_lock(&pfdset->fd_pooling_mutex);
 		val = poll(pfdset->rwfds, numfds, 1000 /* millisecs */);
+		pthread_mutex_unlock(&pfdset->fd_pooling_mutex);
 		if (val < 0)
 			continue;
diff --git a/lib/librte_vhost/fd_man.h b/lib/librte_vhost/fd_man.h
index 3331bcd97..3ab5cfdd6 100644
--- a/lib/librte_vhost/fd_man.h
+++ b/lib/librte_vhost/fd_man.h
@@ -25,4 +25,5 @@ struct fdset {
 	struct fdentry fd[MAX_FDS];
 	pthread_mutex_t fd_mutex;
+	pthread_mutex_t fd_pooling_mutex;
 	int num;	/* current fd number of this fdset */
 
diff --git a/lib/librte_vhost/socket.c b/lib/librte_vhost/socket.c
index 01b60ff9e..9cf34ad17 100644
--- a/lib/librte_vhost/socket.c
+++ b/lib/librte_vhost/socket.c
@@ -91,4 +91,5 @@ static struct vhost_user vhost_user = {
 		.fd = { [0 ... MAX_FDS - 1] = {-1, NULL, NULL, NULL, 0} },
 		.fd_mutex = PTHREAD_MUTEX_INITIALIZER,
+		.fd_pooling_mutex = PTHREAD_MUTEX_INITIALIZER,
 		.num = 0
 	},
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.614777750 +0000
+++ 0048-vhost-fix-race-condition-when-adding-fd-in-the-fdset.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,8 +1,10 @@
-From 276d63505be94bb8d5fdf754af0105707ea433c1 Mon Sep 17 00:00:00 2001
+From 80a1d99db3eb06e3786223d5422bf37697ddf726 Mon Sep 17 00:00:00 2001
 From: Matthias Gatto <matthias.gatto@outscale.com>
 Date: Thu, 6 Dec 2018 16:00:07 +0000
 Subject: [PATCH] vhost: fix race condition when adding fd in the fdset
 
+[ upstream commit 276d63505be94bb8d5fdf754af0105707ea433c1 ]
+
 fdset_add can call fdset_shrink_nolock which call fdset_move
 concurrently to poll that is call in fdset_event_dispatch.
 
@@ -10,7 +12,6 @@
 fdset_add call fdset_shrink_nolock.
 
 Fixes: 1b815b89599c ("vhost: try to shrink pfdset when fdset_add fails")
-Cc: stable@dpdk.org
 
 Signed-off-by: Matthias Gatto <matthias.gatto@outscale.com>
 Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>

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

* [dpdk-stable] patch 'net/ifc: store only registered device instance' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (46 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'vhost: fix race condition when adding fd in the fdset' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/ena: add reset reason in Rx error' " Kevin Traynor
                   ` (23 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Xiao Wang; +Cc: Maxime Coquelin, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From b0b814782f0fd9092b6b3b575c2f555b76c9f037 Mon Sep 17 00:00:00 2001
From: Xiao Wang <xiao.w.wang@intel.com>
Date: Tue, 18 Dec 2018 16:02:02 +0800
Subject: [PATCH] net/ifc: store only registered device instance

[ upstream commit 7b47ea59f2f6da6cbeb84f203eaac0a4812036cd ]

If driver fails to register ifc VF device into vhost lib, then this
device should not be stored.

Fixes: a3f8150eac6d ("net/ifcvf: add ifcvf vDPA driver")

Signed-off-by: Xiao Wang <xiao.w.wang@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 drivers/net/ifc/ifcvf_vdpa.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ifc/ifcvf_vdpa.c b/drivers/net/ifc/ifcvf_vdpa.c
index 97a57f182..698d14f88 100644
--- a/drivers/net/ifc/ifcvf_vdpa.c
+++ b/drivers/net/ifc/ifcvf_vdpa.c
@@ -774,8 +774,4 @@ ifcvf_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 	list->internal = internal;
 
-	pthread_mutex_lock(&internal_list_lock);
-	TAILQ_INSERT_TAIL(&internal_list, list, next);
-	pthread_mutex_unlock(&internal_list_lock);
-
 	internal->did = rte_vdpa_register_device(&internal->dev_addr,
 				&ifcvf_ops);
@@ -783,4 +779,8 @@ ifcvf_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
 		goto error;
 
+	pthread_mutex_lock(&internal_list_lock);
+	TAILQ_INSERT_TAIL(&internal_list, list, next);
+	pthread_mutex_unlock(&internal_list_lock);
+
 	rte_atomic32_set(&internal->started, 1);
 	update_datapath(internal);
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.638702012 +0000
+++ 0049-net-ifc-store-only-registered-device-instance.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,13 +1,14 @@
-From 7b47ea59f2f6da6cbeb84f203eaac0a4812036cd Mon Sep 17 00:00:00 2001
+From b0b814782f0fd9092b6b3b575c2f555b76c9f037 Mon Sep 17 00:00:00 2001
 From: Xiao Wang <xiao.w.wang@intel.com>
 Date: Tue, 18 Dec 2018 16:02:02 +0800
 Subject: [PATCH] net/ifc: store only registered device instance
 
+[ upstream commit 7b47ea59f2f6da6cbeb84f203eaac0a4812036cd ]
+
 If driver fails to register ifc VF device into vhost lib, then this
 device should not be stored.
 
 Fixes: a3f8150eac6d ("net/ifcvf: add ifcvf vDPA driver")
-Cc: stable@dpdk.org
 
 Signed-off-by: Xiao Wang <xiao.w.wang@intel.com>
 Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
@@ -16,10 +17,10 @@
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 diff --git a/drivers/net/ifc/ifcvf_vdpa.c b/drivers/net/ifc/ifcvf_vdpa.c
-index aacd5f9bf..6fcd50b73 100644
+index 97a57f182..698d14f88 100644
 --- a/drivers/net/ifc/ifcvf_vdpa.c
 +++ b/drivers/net/ifc/ifcvf_vdpa.c
-@@ -782,8 +782,4 @@ ifcvf_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
+@@ -774,8 +774,4 @@ ifcvf_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
  	list->internal = internal;
  
 -	pthread_mutex_lock(&internal_list_lock);
@@ -28,8 +29,8 @@
 -
  	internal->did = rte_vdpa_register_device(&internal->dev_addr,
  				&ifcvf_ops);
-@@ -793,4 +789,8 @@ ifcvf_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
- 	}
+@@ -783,4 +779,8 @@ ifcvf_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
+ 		goto error;
  
 +	pthread_mutex_lock(&internal_list_lock);
 +	TAILQ_INSERT_TAIL(&internal_list, list, next);

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

* [dpdk-stable] patch 'net/ena: add reset reason in Rx error' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (47 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/ifc: store only registered device instance' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/ena: skip packet with wrong request id' " Kevin Traynor
                   ` (22 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Rafal Kozik; +Cc: Michal Krawczyk, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From d6b85eb3081aac3c681464969c6fcc76d896dd83 Mon Sep 17 00:00:00 2001
From: Rafal Kozik <rk@semihalf.com>
Date: Fri, 14 Dec 2018 14:18:29 +0100
Subject: [PATCH] net/ena: add reset reason in Rx error

[ upstream commit 9b260dbf7412819f9a5fc544872b1447d6938afe ]

Whenever the driver will receive too many descriptors from the device,
it should trigger the device reset with reset reason set to
ENA_REGS_RESET_TOO_MANY_RX_DESCS.

Fixes: 241da076b1f7 ("net/ena: adjust error checking and cleaning")

Signed-off-by: Rafal Kozik <rk@semihalf.com>
Acked-by: Michal Krawczyk <mk@semihalf.com>
---
 drivers/net/ena/ena_ethdev.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
index 709ad2edb..76e8d499d 100644
--- a/drivers/net/ena/ena_ethdev.c
+++ b/drivers/net/ena/ena_ethdev.c
@@ -1910,4 +1910,6 @@ static uint16_t eth_ena_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
 		if (unlikely(rc)) {
 			RTE_LOG(ERR, PMD, "ena_com_rx_pkt error %d\n", rc);
+			rx_ring->adapter->reset_reason =
+				ENA_REGS_RESET_TOO_MANY_RX_DESCS;
 			rx_ring->adapter->trigger_reset = true;
 			return 0;
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.661472816 +0000
+++ 0050-net-ena-add-reset-reason-in-Rx-error.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,14 +1,15 @@
-From 9b260dbf7412819f9a5fc544872b1447d6938afe Mon Sep 17 00:00:00 2001
+From d6b85eb3081aac3c681464969c6fcc76d896dd83 Mon Sep 17 00:00:00 2001
 From: Rafal Kozik <rk@semihalf.com>
 Date: Fri, 14 Dec 2018 14:18:29 +0100
 Subject: [PATCH] net/ena: add reset reason in Rx error
 
+[ upstream commit 9b260dbf7412819f9a5fc544872b1447d6938afe ]
+
 Whenever the driver will receive too many descriptors from the device,
 it should trigger the device reset with reset reason set to
 ENA_REGS_RESET_TOO_MANY_RX_DESCS.
 
 Fixes: 241da076b1f7 ("net/ena: adjust error checking and cleaning")
-Cc: stable@dpdk.org
 
 Signed-off-by: Rafal Kozik <rk@semihalf.com>
 Acked-by: Michal Krawczyk <mk@semihalf.com>
@@ -17,10 +18,10 @@
  1 file changed, 2 insertions(+)
 
 diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
-index 5e9666f74..a47f5f7fa 100644
+index 709ad2edb..76e8d499d 100644
 --- a/drivers/net/ena/ena_ethdev.c
 +++ b/drivers/net/ena/ena_ethdev.c
-@@ -1911,4 +1911,6 @@ static uint16_t eth_ena_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
+@@ -1910,4 +1910,6 @@ static uint16_t eth_ena_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
  		if (unlikely(rc)) {
  			RTE_LOG(ERR, PMD, "ena_com_rx_pkt error %d\n", rc);
 +			rx_ring->adapter->reset_reason =

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

* [dpdk-stable] patch 'net/ena: skip packet with wrong request id' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (48 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/ena: add reset reason in Rx error' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/ena: destroy queues if start failed' " Kevin Traynor
                   ` (21 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Rafal Kozik; +Cc: Michal Krawczyk, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 5c54c8b11262543258e8c05ba91e358c5b2db197 Mon Sep 17 00:00:00 2001
From: Rafal Kozik <rk@semihalf.com>
Date: Fri, 14 Dec 2018 14:18:31 +0100
Subject: [PATCH] net/ena: skip packet with wrong request id

[ upstream commit f00930d929151fc09914e6d61b827f9f81645324 ]

When invalid req_id is received, the reset should be handled by the
application, as it is indicating invalid rings state, so further Rx
is not making any sense.

Fixes: c2034976673d ("net/ena: add Rx out of order completion")

Signed-off-by: Rafal Kozik <rk@semihalf.com>
Acked-by: Michal Krawczyk <mk@semihalf.com>
---
 drivers/net/ena/ena_ethdev.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
index 76e8d499d..e7b462859 100644
--- a/drivers/net/ena/ena_ethdev.c
+++ b/drivers/net/ena/ena_ethdev.c
@@ -1947,4 +1947,6 @@ static uint16_t eth_ena_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
 			next_to_clean++;
 		}
+		if (unlikely(rc))
+			break;
 
 		/* fill mbuf attributes if any */
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.686581421 +0000
+++ 0051-net-ena-skip-packet-with-wrong-request-id.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,14 +1,15 @@
-From f00930d929151fc09914e6d61b827f9f81645324 Mon Sep 17 00:00:00 2001
+From 5c54c8b11262543258e8c05ba91e358c5b2db197 Mon Sep 17 00:00:00 2001
 From: Rafal Kozik <rk@semihalf.com>
 Date: Fri, 14 Dec 2018 14:18:31 +0100
 Subject: [PATCH] net/ena: skip packet with wrong request id
 
+[ upstream commit f00930d929151fc09914e6d61b827f9f81645324 ]
+
 When invalid req_id is received, the reset should be handled by the
 application, as it is indicating invalid rings state, so further Rx
 is not making any sense.
 
 Fixes: c2034976673d ("net/ena: add Rx out of order completion")
-Cc: stable@dpdk.org
 
 Signed-off-by: Rafal Kozik <rk@semihalf.com>
 Acked-by: Michal Krawczyk <mk@semihalf.com>
@@ -17,10 +18,10 @@
  1 file changed, 2 insertions(+)
 
 diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
-index 617f85f02..505d9bf30 100644
+index 76e8d499d..e7b462859 100644
 --- a/drivers/net/ena/ena_ethdev.c
 +++ b/drivers/net/ena/ena_ethdev.c
-@@ -1989,4 +1989,6 @@ static uint16_t eth_ena_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
+@@ -1947,4 +1947,6 @@ static uint16_t eth_ena_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
  			next_to_clean++;
  		}
 +		if (unlikely(rc))

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

* [dpdk-stable] patch 'net/ena: destroy queues if start failed' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (49 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/ena: skip packet with wrong request id' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/ena: do not reconfigure queues on reset' " Kevin Traynor
                   ` (20 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Rafal Kozik; +Cc: Michal Krawczyk, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From d1c1d3023e98a2719fb147c8207801611483cb6b Mon Sep 17 00:00:00 2001
From: Rafal Kozik <rk@semihalf.com>
Date: Fri, 14 Dec 2018 14:18:35 +0100
Subject: [PATCH] net/ena: destroy queues if start failed

[ upstream commit 26e5543dc85b3be23879ba90ddb00e3456179805 ]

If start function fails, previously created queues have to be removed.

ena_queue_restart_all() and ena_queue_restart() are renamed to
ena_queue_start_all() and ena_queue_start().

ena_free_io_queues_all() is renamed to ena_queue_stop_all().

Fixes: df238f84c0a2 ("net/ena: recreate HW IO rings on start and stop")

Signed-off-by: Rafal Kozik <rk@semihalf.com>
Acked-by: Michal Krawczyk <mk@semihalf.com>
---
 drivers/net/ena/ena_ethdev.c | 95 +++++++++++++++++++++++-------------
 1 file changed, 60 insertions(+), 35 deletions(-)

diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
index e7b462859..86ee7942c 100644
--- a/drivers/net/ena/ena_ethdev.c
+++ b/drivers/net/ena/ena_ethdev.c
@@ -243,8 +243,10 @@ static int ena_link_update(struct rte_eth_dev *dev,
 			   int wait_to_complete);
 static int ena_create_io_queue(struct ena_ring *ring);
-static void ena_free_io_queues_all(struct ena_adapter *adapter);
-static int ena_queue_restart(struct ena_ring *ring);
-static int ena_queue_restart_all(struct rte_eth_dev *dev,
-				 enum ena_ring_type ring_type);
+static void ena_queue_stop(struct ena_ring *ring);
+static void ena_queue_stop_all(struct rte_eth_dev *dev,
+			      enum ena_ring_type ring_type);
+static int ena_queue_start(struct ena_ring *ring);
+static int ena_queue_start_all(struct rte_eth_dev *dev,
+			       enum ena_ring_type ring_type);
 static void ena_stats_restart(struct rte_eth_dev *dev);
 static void ena_infos_get(struct rte_eth_dev *dev,
@@ -802,7 +804,4 @@ static void ena_tx_queue_release(void *queue)
 		       "API violation");
 
-	/* Free all bufs */
-	ena_tx_queue_release_bufs(ring);
-
 	/* Free ring resources */
 	if (ring->tx_buffer_info)
@@ -865,6 +864,6 @@ static int ena_link_update(struct rte_eth_dev *dev,
 }
 
-static int ena_queue_restart_all(struct rte_eth_dev *dev,
-				 enum ena_ring_type ring_type)
+static int ena_queue_start_all(struct rte_eth_dev *dev,
+			       enum ena_ring_type ring_type)
 {
 	struct ena_adapter *adapter =
@@ -894,11 +893,11 @@ static int ena_queue_restart_all(struct rte_eth_dev *dev,
 			}
 
-			rc = ena_queue_restart(&queues[i]);
+			rc = ena_queue_start(&queues[i]);
 
 			if (rc) {
 				PMD_INIT_LOG(ERR,
-					     "failed to restart queue %d type(%d)",
+					     "failed to start queue %d type(%d)",
 					     i, ring_type);
-				return rc;
+				goto err;
 			}
 		}
@@ -906,4 +905,11 @@ static int ena_queue_restart_all(struct rte_eth_dev *dev,
 
 	return 0;
+
+err:
+	while (i--)
+		if (queues[i].configured)
+			ena_queue_stop(&queues[i]);
+
+	return rc;
 }
 
@@ -1054,11 +1060,11 @@ static int ena_start(struct rte_eth_dev *dev)
 		return rc;
 
-	rc = ena_queue_restart_all(dev, ENA_RING_TYPE_RX);
+	rc = ena_queue_start_all(dev, ENA_RING_TYPE_RX);
 	if (rc)
 		return rc;
 
-	rc = ena_queue_restart_all(dev, ENA_RING_TYPE_TX);
+	rc = ena_queue_start_all(dev, ENA_RING_TYPE_TX);
 	if (rc)
-		return rc;
+		goto err_start_tx;
 
 	if (adapter->rte_dev->data->dev_conf.rxmode.mq_mode &
@@ -1066,5 +1072,5 @@ static int ena_start(struct rte_eth_dev *dev)
 		rc = ena_rss_init_default(adapter);
 		if (rc)
-			return rc;
+			goto err_rss_init;
 	}
 
@@ -1081,4 +1087,10 @@ static int ena_start(struct rte_eth_dev *dev)
 
 	return 0;
+
+err_rss_init:
+	ena_queue_stop_all(dev, ENA_RING_TYPE_TX);
+err_start_tx:
+	ena_queue_stop_all(dev, ENA_RING_TYPE_RX);
+	return rc;
 }
 
@@ -1089,5 +1101,6 @@ static void ena_stop(struct rte_eth_dev *dev)
 
 	rte_timer_stop_sync(&adapter->timer_wd);
-	ena_free_io_queues_all(adapter);
+	ena_queue_stop_all(dev, ENA_RING_TYPE_TX);
+	ena_queue_stop_all(dev, ENA_RING_TYPE_RX);
 
 	adapter->state = ENA_ADAPTER_STATE_STOPPED;
@@ -1152,34 +1165,44 @@ static int ena_create_io_queue(struct ena_ring *ring)
 }
 
-static void ena_free_io_queues_all(struct ena_adapter *adapter)
+static void ena_queue_stop(struct ena_ring *ring)
 {
-	struct rte_eth_dev *eth_dev = adapter->rte_dev;
-	struct ena_com_dev *ena_dev = &adapter->ena_dev;
-	int i;
-	uint16_t ena_qid;
-	uint16_t nb_rxq = eth_dev->data->nb_rx_queues;
-	uint16_t nb_txq = eth_dev->data->nb_tx_queues;
+	struct ena_com_dev *ena_dev = &ring->adapter->ena_dev;
 
-	for (i = 0; i < nb_txq; ++i) {
-		ena_qid = ENA_IO_TXQ_IDX(i);
-		ena_com_destroy_io_queue(ena_dev, ena_qid);
-
-		ena_tx_queue_release_bufs(&adapter->tx_ring[i]);
+	if (ring->type == ENA_RING_TYPE_RX) {
+		ena_com_destroy_io_queue(ena_dev, ENA_IO_RXQ_IDX(ring->id));
+		ena_rx_queue_release_bufs(ring);
+	} else {
+		ena_com_destroy_io_queue(ena_dev, ENA_IO_TXQ_IDX(ring->id));
+		ena_tx_queue_release_bufs(ring);
 	}
+}
 
-	for (i = 0; i < nb_rxq; ++i) {
-		ena_qid = ENA_IO_RXQ_IDX(i);
-		ena_com_destroy_io_queue(ena_dev, ena_qid);
+static void ena_queue_stop_all(struct rte_eth_dev *dev,
+			      enum ena_ring_type ring_type)
+{
+	struct ena_adapter *adapter =
+		(struct ena_adapter *)(dev->data->dev_private);
+	struct ena_ring *queues = NULL;
+	uint16_t nb_queues, i;
 
-		ena_rx_queue_release_bufs(&adapter->rx_ring[i]);
+	if (ring_type == ENA_RING_TYPE_RX) {
+		queues = adapter->rx_ring;
+		nb_queues = dev->data->nb_rx_queues;
+	} else {
+		queues = adapter->tx_ring;
+		nb_queues = dev->data->nb_tx_queues;
 	}
+
+	for (i = 0; i < nb_queues; ++i)
+		if (queues[i].configured)
+			ena_queue_stop(&queues[i]);
 }
 
-static int ena_queue_restart(struct ena_ring *ring)
+static int ena_queue_start(struct ena_ring *ring)
 {
 	int rc, bufs_num;
 
 	ena_assert_msg(ring->configured == 1,
-		       "Trying to restart unconfigured queue\n");
+		       "Trying to start unconfigured queue\n");
 
 	rc = ena_create_io_queue(ring);
@@ -1198,4 +1221,6 @@ static int ena_queue_restart(struct ena_ring *ring)
 	rc = ena_populate_rx_queue(ring, bufs_num);
 	if (rc != bufs_num) {
+		ena_com_destroy_io_queue(&ring->adapter->ena_dev,
+					 ENA_IO_RXQ_IDX(ring->id));
 		PMD_INIT_LOG(ERR, "Failed to populate rx ring !");
 		return ENA_COM_FAULT;
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.711272851 +0000
+++ 0052-net-ena-destroy-queues-if-start-failed.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,8 +1,10 @@
-From 26e5543dc85b3be23879ba90ddb00e3456179805 Mon Sep 17 00:00:00 2001
+From d1c1d3023e98a2719fb147c8207801611483cb6b Mon Sep 17 00:00:00 2001
 From: Rafal Kozik <rk@semihalf.com>
 Date: Fri, 14 Dec 2018 14:18:35 +0100
 Subject: [PATCH] net/ena: destroy queues if start failed
 
+[ upstream commit 26e5543dc85b3be23879ba90ddb00e3456179805 ]
+
 If start function fails, previously created queues have to be removed.
 
 ena_queue_restart_all() and ena_queue_restart() are renamed to
@@ -11,7 +13,6 @@
 ena_free_io_queues_all() is renamed to ena_queue_stop_all().
 
 Fixes: df238f84c0a2 ("net/ena: recreate HW IO rings on start and stop")
-Cc: stable@dpdk.org
 
 Signed-off-by: Rafal Kozik <rk@semihalf.com>
 Acked-by: Michal Krawczyk <mk@semihalf.com>
@@ -20,10 +21,10 @@
  1 file changed, 60 insertions(+), 35 deletions(-)
 
 diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
-index 5f7dec086..deb97151d 100644
+index e7b462859..86ee7942c 100644
 --- a/drivers/net/ena/ena_ethdev.c
 +++ b/drivers/net/ena/ena_ethdev.c
-@@ -245,8 +245,10 @@ static int ena_link_update(struct rte_eth_dev *dev,
+@@ -243,8 +243,10 @@ static int ena_link_update(struct rte_eth_dev *dev,
  			   int wait_to_complete);
  static int ena_create_io_queue(struct ena_ring *ring);
 -static void ena_free_io_queues_all(struct ena_adapter *adapter);
@@ -38,15 +39,15 @@
 +			       enum ena_ring_type ring_type);
  static void ena_stats_restart(struct rte_eth_dev *dev);
  static void ena_infos_get(struct rte_eth_dev *dev,
-@@ -806,7 +808,4 @@ static void ena_tx_queue_release(void *queue)
+@@ -802,7 +804,4 @@ static void ena_tx_queue_release(void *queue)
  		       "API violation");
  
 -	/* Free all bufs */
 -	ena_tx_queue_release_bufs(ring);
 -
  	/* Free ring resources */
- 	if (ring->push_buf_intermediate_buf)
-@@ -873,6 +872,6 @@ static int ena_link_update(struct rte_eth_dev *dev,
+ 	if (ring->tx_buffer_info)
+@@ -865,6 +864,6 @@ static int ena_link_update(struct rte_eth_dev *dev,
  }
  
 -static int ena_queue_restart_all(struct rte_eth_dev *dev,
@@ -55,7 +56,7 @@
 +			       enum ena_ring_type ring_type)
  {
  	struct ena_adapter *adapter =
-@@ -902,11 +901,11 @@ static int ena_queue_restart_all(struct rte_eth_dev *dev,
+@@ -894,11 +893,11 @@ static int ena_queue_restart_all(struct rte_eth_dev *dev,
  			}
  
 -			rc = ena_queue_restart(&queues[i]);
@@ -70,7 +71,7 @@
 +				goto err;
  			}
  		}
-@@ -914,4 +913,11 @@ static int ena_queue_restart_all(struct rte_eth_dev *dev,
+@@ -906,4 +905,11 @@ static int ena_queue_restart_all(struct rte_eth_dev *dev,
  
  	return 0;
 +
@@ -82,7 +83,7 @@
 +	return rc;
  }
  
-@@ -1102,11 +1108,11 @@ static int ena_start(struct rte_eth_dev *dev)
+@@ -1054,11 +1060,11 @@ static int ena_start(struct rte_eth_dev *dev)
  		return rc;
  
 -	rc = ena_queue_restart_all(dev, ENA_RING_TYPE_RX);
@@ -97,14 +98,14 @@
 +		goto err_start_tx;
  
  	if (adapter->rte_dev->data->dev_conf.rxmode.mq_mode &
-@@ -1114,5 +1120,5 @@ static int ena_start(struct rte_eth_dev *dev)
+@@ -1066,5 +1072,5 @@ static int ena_start(struct rte_eth_dev *dev)
  		rc = ena_rss_init_default(adapter);
  		if (rc)
 -			return rc;
 +			goto err_rss_init;
  	}
  
-@@ -1129,4 +1135,10 @@ static int ena_start(struct rte_eth_dev *dev)
+@@ -1081,4 +1087,10 @@ static int ena_start(struct rte_eth_dev *dev)
  
  	return 0;
 +
@@ -115,7 +116,7 @@
 +	return rc;
  }
  
-@@ -1137,5 +1149,6 @@ static void ena_stop(struct rte_eth_dev *dev)
+@@ -1089,5 +1101,6 @@ static void ena_stop(struct rte_eth_dev *dev)
  
  	rte_timer_stop_sync(&adapter->timer_wd);
 -	ena_free_io_queues_all(adapter);
@@ -123,7 +124,7 @@
 +	ena_queue_stop_all(dev, ENA_RING_TYPE_RX);
  
  	adapter->state = ENA_ADAPTER_STATE_STOPPED;
-@@ -1200,34 +1213,44 @@ static int ena_create_io_queue(struct ena_ring *ring)
+@@ -1152,34 +1165,44 @@ static int ena_create_io_queue(struct ena_ring *ring)
  }
  
 -static void ena_free_io_queues_all(struct ena_adapter *adapter)
@@ -186,7 +187,7 @@
 +		       "Trying to start unconfigured queue\n");
  
  	rc = ena_create_io_queue(ring);
-@@ -1246,4 +1269,6 @@ static int ena_queue_restart(struct ena_ring *ring)
+@@ -1198,4 +1221,6 @@ static int ena_queue_restart(struct ena_ring *ring)
  	rc = ena_populate_rx_queue(ring, bufs_num);
  	if (rc != bufs_num) {
 +		ena_com_destroy_io_queue(&ring->adapter->ena_dev,

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

* [dpdk-stable] patch 'net/ena: do not reconfigure queues on reset' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (50 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/ena: destroy queues if start failed' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/ena: add supported RSS offloads types' " Kevin Traynor
                   ` (19 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Rafal Kozik; +Cc: Michal Krawczyk, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 25322f4868adec75fed18b587975d9598017f563 Mon Sep 17 00:00:00 2001
From: Rafal Kozik <rk@semihalf.com>
Date: Fri, 14 Dec 2018 14:18:36 +0100
Subject: [PATCH] net/ena: do not reconfigure queues on reset

[ upstream commit e457bc70e5d6d589b1c3e1e93979aa42a64fbc06 ]

Reset function should return the port to initial state, in which no Tx
and Rx queues are setup. Then application should reconfigure the queues.

According to DPDK documentation the rte_eth_dev_reset() itself is a
generic function which only does some hardware reset operations through
calling dev_unint() and dev_init().

ena_com_dev_reset which perform NIC registers reset should be called
during stop.

Fixes: 2081d5e2e92d ("net/ena: add reset routine")

Signed-off-by: Rafal Kozik <rk@semihalf.com>
Acked-by: Michal Krawczyk <mk@semihalf.com>
---
 drivers/net/ena/ena_ethdev.c | 107 +++++++++++++----------------------
 1 file changed, 38 insertions(+), 69 deletions(-)

diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
index 86ee7942c..80d90b301 100644
--- a/drivers/net/ena/ena_ethdev.c
+++ b/drivers/net/ena/ena_ethdev.c
@@ -261,4 +261,6 @@ static int ena_get_sset_count(struct rte_eth_dev *dev, int sset);
 static void ena_interrupt_handler_rte(void *cb_arg);
 static void ena_timer_wd_callback(struct rte_timer *timer, void *arg);
+static void ena_destroy_device(struct rte_eth_dev *eth_dev);
+static int eth_ena_dev_init(struct rte_eth_dev *eth_dev);
 
 static const struct eth_dev_ops ena_dev_ops = {
@@ -544,62 +546,12 @@ static int
 ena_dev_reset(struct rte_eth_dev *dev)
 {
-	struct rte_mempool *mb_pool_rx[ENA_MAX_NUM_QUEUES];
-	struct rte_eth_dev *eth_dev;
-	struct rte_pci_device *pci_dev;
-	struct rte_intr_handle *intr_handle;
-	struct ena_com_dev *ena_dev;
-	struct ena_com_dev_get_features_ctx get_feat_ctx;
-	struct ena_adapter *adapter;
-	int nb_queues;
-	int rc, i;
-	bool wd_state;
+	int rc = 0;
 
-	adapter = (struct ena_adapter *)(dev->data->dev_private);
-	ena_dev = &adapter->ena_dev;
-	eth_dev = adapter->rte_dev;
-	pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev);
-	intr_handle = &pci_dev->intr_handle;
-	nb_queues = eth_dev->data->nb_rx_queues;
-
-	ena_com_set_admin_running_state(ena_dev, false);
-
-	rc = ena_com_dev_reset(ena_dev, adapter->reset_reason);
+	ena_destroy_device(dev);
+	rc = eth_ena_dev_init(dev);
 	if (rc)
-		RTE_LOG(ERR, PMD, "Device reset failed\n");
-
-	for (i = 0; i < nb_queues; i++)
-		mb_pool_rx[i] = adapter->rx_ring[i].mb_pool;
-
-	ena_rx_queue_release_all(eth_dev);
-	ena_tx_queue_release_all(eth_dev);
-
-	rte_intr_disable(intr_handle);
-
-	ena_com_abort_admin_commands(ena_dev);
-	ena_com_wait_for_abort_completion(ena_dev);
-	ena_com_admin_destroy(ena_dev);
-	ena_com_mmio_reg_read_request_destroy(ena_dev);
-
-	rc = ena_device_init(ena_dev, &get_feat_ctx, &wd_state);
-	if (rc) {
 		PMD_INIT_LOG(CRIT, "Cannot initialize device\n");
-		return rc;
-	}
-	adapter->wd_state = wd_state;
 
-	rte_intr_enable(intr_handle);
-	ena_com_set_admin_polling_mode(ena_dev, false);
-	ena_com_admin_aenq_enable(ena_dev);
-
-	for (i = 0; i < nb_queues; ++i)
-		ena_rx_queue_setup(eth_dev, i, adapter->rx_ring_size, 0, NULL,
-			mb_pool_rx[i]);
-
-	for (i = 0; i < nb_queues; ++i)
-		ena_tx_queue_setup(eth_dev, i, adapter->tx_ring_size, 0, NULL);
-
-	adapter->trigger_reset = false;
-
-	return 0;
+	return rc;
 }
 
@@ -771,9 +723,4 @@ static void ena_rx_queue_release(void *queue)
 	struct ena_ring *ring = (struct ena_ring *)queue;
 
-	ena_assert_msg(ring->configured,
-		       "API violation - releasing not configured queue");
-	ena_assert_msg(ring->adapter->state != ENA_ADAPTER_STATE_RUNNING,
-		       "API violation");
-
 	/* Free ring resources */
 	if (ring->rx_buffer_info)
@@ -799,9 +746,4 @@ static void ena_tx_queue_release(void *queue)
 	struct ena_ring *ring = (struct ena_ring *)queue;
 
-	ena_assert_msg(ring->configured,
-		       "API violation. Releasing not configured queue");
-	ena_assert_msg(ring->adapter->state != ENA_ADAPTER_STATE_RUNNING,
-		       "API violation");
-
 	/* Free ring resources */
 	if (ring->tx_buffer_info)
@@ -1099,4 +1041,6 @@ static void ena_stop(struct rte_eth_dev *dev)
 	struct ena_adapter *adapter =
 		(struct ena_adapter *)(dev->data->dev_private);
+	struct ena_com_dev *ena_dev = &adapter->ena_dev;
+	int rc;
 
 	rte_timer_stop_sync(&adapter->timer_wd);
@@ -1104,4 +1048,10 @@ static void ena_stop(struct rte_eth_dev *dev)
 	ena_queue_stop_all(dev, ENA_RING_TYPE_RX);
 
+	if (adapter->trigger_reset) {
+		rc = ena_com_dev_reset(ena_dev, adapter->reset_reason);
+		if (rc)
+			RTE_LOG(ERR, PMD, "Device reset failed rc=%d\n", rc);
+	}
+
 	adapter->state = ENA_ADAPTER_STATE_STOPPED;
 }
@@ -1754,15 +1704,36 @@ err:
 }
 
-static int eth_ena_dev_uninit(struct rte_eth_dev *eth_dev)
+static void ena_destroy_device(struct rte_eth_dev *eth_dev)
 {
 	struct ena_adapter *adapter =
 		(struct ena_adapter *)(eth_dev->data->dev_private);
+	struct ena_com_dev *ena_dev = &adapter->ena_dev;
 
-	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
-		return 0;
+	if (adapter->state == ENA_ADAPTER_STATE_FREE)
+		return;
+
+	ena_com_set_admin_running_state(ena_dev, false);
 
 	if (adapter->state != ENA_ADAPTER_STATE_CLOSED)
 		ena_close(eth_dev);
 
+	ena_com_delete_debug_area(ena_dev);
+	ena_com_delete_host_info(ena_dev);
+
+	ena_com_abort_admin_commands(ena_dev);
+	ena_com_wait_for_abort_completion(ena_dev);
+	ena_com_admin_destroy(ena_dev);
+	ena_com_mmio_reg_read_request_destroy(ena_dev);
+
+	adapter->state = ENA_ADAPTER_STATE_FREE;
+}
+
+static int eth_ena_dev_uninit(struct rte_eth_dev *eth_dev)
+{
+	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+		return 0;
+
+	ena_destroy_device(eth_dev);
+
 	eth_dev->dev_ops = NULL;
 	eth_dev->rx_pkt_burst = NULL;
@@ -1770,6 +1741,4 @@ static int eth_ena_dev_uninit(struct rte_eth_dev *eth_dev)
 	eth_dev->tx_pkt_prepare = NULL;
 
-	adapter->state = ENA_ADAPTER_STATE_FREE;
-
 	return 0;
 }
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.737670599 +0000
+++ 0053-net-ena-do-not-reconfigure-queues-on-reset.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,8 +1,10 @@
-From e457bc70e5d6d589b1c3e1e93979aa42a64fbc06 Mon Sep 17 00:00:00 2001
+From 25322f4868adec75fed18b587975d9598017f563 Mon Sep 17 00:00:00 2001
 From: Rafal Kozik <rk@semihalf.com>
 Date: Fri, 14 Dec 2018 14:18:36 +0100
 Subject: [PATCH] net/ena: do not reconfigure queues on reset
 
+[ upstream commit e457bc70e5d6d589b1c3e1e93979aa42a64fbc06 ]
+
 Reset function should return the port to initial state, in which no Tx
 and Rx queues are setup. Then application should reconfigure the queues.
 
@@ -14,26 +16,25 @@
 during stop.
 
 Fixes: 2081d5e2e92d ("net/ena: add reset routine")
-Cc: stable@dpdk.org
 
 Signed-off-by: Rafal Kozik <rk@semihalf.com>
 Acked-by: Michal Krawczyk <mk@semihalf.com>
 ---
- drivers/net/ena/ena_ethdev.c | 108 ++++++++++++-----------------------
- 1 file changed, 38 insertions(+), 70 deletions(-)
+ drivers/net/ena/ena_ethdev.c | 107 +++++++++++++----------------------
+ 1 file changed, 38 insertions(+), 69 deletions(-)
 
 diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
-index deb97151d..3715619a7 100644
+index 86ee7942c..80d90b301 100644
 --- a/drivers/net/ena/ena_ethdev.c
 +++ b/drivers/net/ena/ena_ethdev.c
-@@ -263,4 +263,6 @@ static int ena_get_sset_count(struct rte_eth_dev *dev, int sset);
+@@ -261,4 +261,6 @@ static int ena_get_sset_count(struct rte_eth_dev *dev, int sset);
  static void ena_interrupt_handler_rte(void *cb_arg);
  static void ena_timer_wd_callback(struct rte_timer *timer, void *arg);
 +static void ena_destroy_device(struct rte_eth_dev *eth_dev);
 +static int eth_ena_dev_init(struct rte_eth_dev *eth_dev);
  
  static const struct eth_dev_ops ena_dev_ops = {
-@@ -547,63 +549,12 @@ static int
+@@ -544,62 +546,12 @@ static int
  ena_dev_reset(struct rte_eth_dev *dev)
  {
 -	struct rte_mempool *mb_pool_rx[ENA_MAX_NUM_QUEUES];
@@ -88,12 +89,11 @@
 -	ena_com_admin_aenq_enable(ena_dev);
 -
 -	for (i = 0; i < nb_queues; ++i)
--		ena_rx_queue_setup(eth_dev, i, adapter->rx_ring[i].ring_size, 0,
--			NULL, mb_pool_rx[i]);
+-		ena_rx_queue_setup(eth_dev, i, adapter->rx_ring_size, 0, NULL,
+-			mb_pool_rx[i]);
 -
 -	for (i = 0; i < nb_queues; ++i)
--		ena_tx_queue_setup(eth_dev, i, adapter->tx_ring[i].ring_size, 0,
--			NULL);
+-		ena_tx_queue_setup(eth_dev, i, adapter->tx_ring_size, 0, NULL);
 -
 -	adapter->trigger_reset = false;
 -
@@ -101,7 +101,7 @@
 +	return rc;
  }
  
-@@ -775,9 +726,4 @@ static void ena_rx_queue_release(void *queue)
+@@ -771,9 +723,4 @@ static void ena_rx_queue_release(void *queue)
  	struct ena_ring *ring = (struct ena_ring *)queue;
  
 -	ena_assert_msg(ring->configured,
@@ -111,7 +111,7 @@
 -
  	/* Free ring resources */
  	if (ring->rx_buffer_info)
-@@ -803,9 +749,4 @@ static void ena_tx_queue_release(void *queue)
+@@ -799,9 +746,4 @@ static void ena_tx_queue_release(void *queue)
  	struct ena_ring *ring = (struct ena_ring *)queue;
  
 -	ena_assert_msg(ring->configured,
@@ -120,15 +120,15 @@
 -		       "API violation");
 -
  	/* Free ring resources */
- 	if (ring->push_buf_intermediate_buf)
-@@ -1147,4 +1088,6 @@ static void ena_stop(struct rte_eth_dev *dev)
+ 	if (ring->tx_buffer_info)
+@@ -1099,4 +1041,6 @@ static void ena_stop(struct rte_eth_dev *dev)
  	struct ena_adapter *adapter =
  		(struct ena_adapter *)(dev->data->dev_private);
 +	struct ena_com_dev *ena_dev = &adapter->ena_dev;
 +	int rc;
  
  	rte_timer_stop_sync(&adapter->timer_wd);
-@@ -1152,4 +1095,10 @@ static void ena_stop(struct rte_eth_dev *dev)
+@@ -1104,4 +1048,10 @@ static void ena_stop(struct rte_eth_dev *dev)
  	ena_queue_stop_all(dev, ENA_RING_TYPE_RX);
  
 +	if (adapter->trigger_reset) {
@@ -139,7 +139,7 @@
 +
  	adapter->state = ENA_ADAPTER_STATE_STOPPED;
  }
-@@ -1909,15 +1858,36 @@ err:
+@@ -1754,15 +1704,36 @@ err:
  }
  
 -static int eth_ena_dev_uninit(struct rte_eth_dev *eth_dev)
@@ -179,7 +179,7 @@
 +
  	eth_dev->dev_ops = NULL;
  	eth_dev->rx_pkt_burst = NULL;
-@@ -1925,6 +1895,4 @@ static int eth_ena_dev_uninit(struct rte_eth_dev *eth_dev)
+@@ -1770,6 +1741,4 @@ static int eth_ena_dev_uninit(struct rte_eth_dev *eth_dev)
  	eth_dev->tx_pkt_prepare = NULL;
  
 -	adapter->state = ENA_ADAPTER_STATE_FREE;

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

* [dpdk-stable] patch 'net/ena: add supported RSS offloads types' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (51 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/ena: do not reconfigure queues on reset' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/ena: fix invalid reference to variable in union' " Kevin Traynor
                   ` (18 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Rafal Kozik; +Cc: Michal Krawczyk, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From acd76b175a05ebad635360e3bb8b379642f684c1 Mon Sep 17 00:00:00 2001
From: Rafal Kozik <rk@semihalf.com>
Date: Fri, 14 Dec 2018 14:18:38 +0100
Subject: [PATCH] net/ena: add supported RSS offloads types

[ upstream commit b01ead202beb45346d7daeb2f2b1a608006af644 ]

The PMD was not passing RSS offloads values although it was supporting
the RSS. To allow application to probe the PMD for RSS support, the
missing information was added.

Fixes: 1173fca25af9 ("ena: add polling-mode driver")

Signed-off-by: Rafal Kozik <rk@semihalf.com>
Acked-by: Michal Krawczyk <mk@semihalf.com>
---
 drivers/net/ena/ena_ethdev.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
index 80d90b301..4a9b1eebf 100644
--- a/drivers/net/ena/ena_ethdev.c
+++ b/drivers/net/ena/ena_ethdev.c
@@ -1840,4 +1840,7 @@ static void ena_infos_get(struct rte_eth_dev *dev,
 	dev_info->tx_queue_offload_capa = tx_feat;
 
+	dev_info->flow_type_rss_offloads = ETH_RSS_IP | ETH_RSS_TCP |
+					   ETH_RSS_UDP;
+
 	dev_info->min_rx_bufsize = ENA_MIN_FRAME_LEN;
 	dev_info->max_rx_pktlen  = adapter->max_mtu;
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.762466219 +0000
+++ 0054-net-ena-add-supported-RSS-offloads-types.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,14 +1,15 @@
-From b01ead202beb45346d7daeb2f2b1a608006af644 Mon Sep 17 00:00:00 2001
+From acd76b175a05ebad635360e3bb8b379642f684c1 Mon Sep 17 00:00:00 2001
 From: Rafal Kozik <rk@semihalf.com>
 Date: Fri, 14 Dec 2018 14:18:38 +0100
 Subject: [PATCH] net/ena: add supported RSS offloads types
 
+[ upstream commit b01ead202beb45346d7daeb2f2b1a608006af644 ]
+
 The PMD was not passing RSS offloads values although it was supporting
 the RSS. To allow application to probe the PMD for RSS support, the
 missing information was added.
 
 Fixes: 1173fca25af9 ("ena: add polling-mode driver")
-Cc: stable@dpdk.org
 
 Signed-off-by: Rafal Kozik <rk@semihalf.com>
 Acked-by: Michal Krawczyk <mk@semihalf.com>
@@ -17,10 +18,10 @@
  1 file changed, 3 insertions(+)
 
 diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
-index 5adc87355..3aa32a3bf 100644
+index 80d90b301..4a9b1eebf 100644
 --- a/drivers/net/ena/ena_ethdev.c
 +++ b/drivers/net/ena/ena_ethdev.c
-@@ -1995,4 +1995,7 @@ static void ena_infos_get(struct rte_eth_dev *dev,
+@@ -1840,4 +1840,7 @@ static void ena_infos_get(struct rte_eth_dev *dev,
  	dev_info->tx_queue_offload_capa = tx_feat;
  
 +	dev_info->flow_type_rss_offloads = ETH_RSS_IP | ETH_RSS_TCP |

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

* [dpdk-stable] patch 'net/ena: fix invalid reference to variable in union' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (52 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/ena: add supported RSS offloads types' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/ena: fix cleanup for out of order packets' " Kevin Traynor
                   ` (17 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Rafal Kozik; +Cc: Michal Krawczyk, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From ce4014623d0df375dec16bc490090e77574263d8 Mon Sep 17 00:00:00 2001
From: Rafal Kozik <rk@semihalf.com>
Date: Fri, 14 Dec 2018 14:18:39 +0100
Subject: [PATCH] net/ena: fix invalid reference to variable in union

[ upstream commit eccbe2ffdc755a9e759c6ba480f6c15ccb1163c7 ]

Use empty_rx_reqs instead of empty_tx_reqs.
As those two variables are part of union this not cause
any failure, but for consistency should be changed.

Fixes: c2034976673d ("net/ena: add Rx out of order completion")

Signed-off-by: Rafal Kozik <rk@semihalf.com>
Acked-by: Michal Krawczyk <mk@semihalf.com>
---
 drivers/net/ena/ena_ethdev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
index 4a9b1eebf..e8db81a38 100644
--- a/drivers/net/ena/ena_ethdev.c
+++ b/drivers/net/ena/ena_ethdev.c
@@ -1324,5 +1324,5 @@ static int ena_rx_queue_setup(struct rte_eth_dev *dev,
 
 	for (i = 0; i < nb_desc; i++)
-		rxq->empty_tx_reqs[i] = i;
+		rxq->empty_rx_reqs[i] = i;
 
 	/* Store pointer to this queue in upper layer */
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.787078059 +0000
+++ 0055-net-ena-fix-invalid-reference-to-variable-in-union.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,14 +1,15 @@
-From eccbe2ffdc755a9e759c6ba480f6c15ccb1163c7 Mon Sep 17 00:00:00 2001
+From ce4014623d0df375dec16bc490090e77574263d8 Mon Sep 17 00:00:00 2001
 From: Rafal Kozik <rk@semihalf.com>
 Date: Fri, 14 Dec 2018 14:18:39 +0100
 Subject: [PATCH] net/ena: fix invalid reference to variable in union
 
+[ upstream commit eccbe2ffdc755a9e759c6ba480f6c15ccb1163c7 ]
+
 Use empty_rx_reqs instead of empty_tx_reqs.
 As those two variables are part of union this not cause
 any failure, but for consistency should be changed.
 
 Fixes: c2034976673d ("net/ena: add Rx out of order completion")
-Cc: stable@dpdk.org
 
 Signed-off-by: Rafal Kozik <rk@semihalf.com>
 Acked-by: Michal Krawczyk <mk@semihalf.com>
@@ -17,10 +18,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
-index 3aa32a3bf..14165561e 100644
+index 4a9b1eebf..e8db81a38 100644
 --- a/drivers/net/ena/ena_ethdev.c
 +++ b/drivers/net/ena/ena_ethdev.c
-@@ -1388,5 +1388,5 @@ static int ena_rx_queue_setup(struct rte_eth_dev *dev,
+@@ -1324,5 +1324,5 @@ static int ena_rx_queue_setup(struct rte_eth_dev *dev,
  
  	for (i = 0; i < nb_desc; i++)
 -		rxq->empty_tx_reqs[i] = i;

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

* [dpdk-stable] patch 'net/ena: fix cleanup for out of order packets' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (53 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/ena: fix invalid reference to variable in union' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/ena: update completion queue after cleanup' " Kevin Traynor
                   ` (16 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Rafal Kozik; +Cc: Michal Krawczyk, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 50ba5ab886aebf6b5fbf0a53108e69c46d68f997 Mon Sep 17 00:00:00 2001
From: Rafal Kozik <rk@semihalf.com>
Date: Mon, 17 Dec 2018 12:06:18 +0100
Subject: [PATCH] net/ena: fix cleanup for out of order packets

[ upstream commit 709b1dcb73adebb3fc1a838b57d72028feb97e47 ]

When wrong req_id is detected some previous mbufs could be used for
receiving different segments of received packets. In such cases chained
mbufs will be twice returned to pool.

To prevent it chained mbuf is now freed just after error detection.

To simplify cleaning, pointers taken for Rx ring are set to NULL.

As after ena_rx_queue_release_bufs and ena_tx_queue_release_bufs queues
are not used updating of next_to_clean pointer is not necessary.

Fixes: c2034976673d ("net/ena: add Rx out of order completion")

Signed-off-by: Rafal Kozik <rk@semihalf.com>
Acked-by: Michal Krawczyk <mk@semihalf.com>
---
 drivers/net/ena/ena_ethdev.c | 24 +++++++++++-------------
 1 file changed, 11 insertions(+), 13 deletions(-)

diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
index e8db81a38..281addb4b 100644
--- a/drivers/net/ena/ena_ethdev.c
+++ b/drivers/net/ena/ena_ethdev.c
@@ -764,15 +764,11 @@ static void ena_tx_queue_release(void *queue)
 static void ena_rx_queue_release_bufs(struct ena_ring *ring)
 {
-	unsigned int ring_mask = ring->ring_size - 1;
+	unsigned int i;
 
-	while (ring->next_to_clean != ring->next_to_use) {
-		struct rte_mbuf *m =
-			ring->rx_buffer_info[ring->next_to_clean & ring_mask];
-
-		if (m)
-			rte_mbuf_raw_free(m);
-
-		ring->next_to_clean++;
-	}
+	for (i = 0; i < ring->ring_size; ++i)
+		if (ring->rx_buffer_info[i]) {
+			rte_mbuf_raw_free(ring->rx_buffer_info[i]);
+			ring->rx_buffer_info[i] = NULL;
+		}
 }
 
@@ -786,6 +782,4 @@ static void ena_tx_queue_release_bufs(struct ena_ring *ring)
 		if (tx_buf->mbuf)
 			rte_pktmbuf_free(tx_buf->mbuf);
-
-		ring->next_to_clean++;
 	}
 }
@@ -1919,8 +1913,12 @@ static uint16_t eth_ena_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
 			req_id = ena_rx_ctx.ena_bufs[segments].req_id;
 			rc = validate_rx_req_id(rx_ring, req_id);
-			if (unlikely(rc))
+			if (unlikely(rc)) {
+				if (segments != 0)
+					rte_mbuf_raw_free(mbuf_head);
 				break;
+			}
 
 			mbuf = rx_buff_info[req_id];
+			rx_buff_info[req_id] = NULL;
 			mbuf->data_len = ena_rx_ctx.ena_bufs[segments].len;
 			mbuf->data_off = RTE_PKTMBUF_HEADROOM;
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.811469385 +0000
+++ 0056-net-ena-fix-cleanup-for-out-of-order-packets.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,8 +1,10 @@
-From 709b1dcb73adebb3fc1a838b57d72028feb97e47 Mon Sep 17 00:00:00 2001
+From 50ba5ab886aebf6b5fbf0a53108e69c46d68f997 Mon Sep 17 00:00:00 2001
 From: Rafal Kozik <rk@semihalf.com>
 Date: Mon, 17 Dec 2018 12:06:18 +0100
 Subject: [PATCH] net/ena: fix cleanup for out of order packets
 
+[ upstream commit 709b1dcb73adebb3fc1a838b57d72028feb97e47 ]
+
 When wrong req_id is detected some previous mbufs could be used for
 receiving different segments of received packets. In such cases chained
 mbufs will be twice returned to pool.
@@ -15,7 +17,6 @@
 are not used updating of next_to_clean pointer is not necessary.
 
 Fixes: c2034976673d ("net/ena: add Rx out of order completion")
-Cc: stable@dpdk.org
 
 Signed-off-by: Rafal Kozik <rk@semihalf.com>
 Acked-by: Michal Krawczyk <mk@semihalf.com>
@@ -24,10 +25,10 @@
  1 file changed, 11 insertions(+), 13 deletions(-)
 
 diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
-index 14165561e..364778840 100644
+index e8db81a38..281addb4b 100644
 --- a/drivers/net/ena/ena_ethdev.c
 +++ b/drivers/net/ena/ena_ethdev.c
-@@ -771,15 +771,11 @@ static void ena_tx_queue_release(void *queue)
+@@ -764,15 +764,11 @@ static void ena_tx_queue_release(void *queue)
  static void ena_rx_queue_release_bufs(struct ena_ring *ring)
  {
 -	unsigned int ring_mask = ring->ring_size - 1;
@@ -49,14 +50,14 @@
 +		}
  }
  
-@@ -793,6 +789,4 @@ static void ena_tx_queue_release_bufs(struct ena_ring *ring)
+@@ -786,6 +782,4 @@ static void ena_tx_queue_release_bufs(struct ena_ring *ring)
  		if (tx_buf->mbuf)
  			rte_pktmbuf_free(tx_buf->mbuf);
 -
 -		ring->next_to_clean++;
  	}
  }
-@@ -2078,8 +2072,12 @@ static uint16_t eth_ena_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
+@@ -1919,8 +1913,12 @@ static uint16_t eth_ena_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
  			req_id = ena_rx_ctx.ena_bufs[segments].req_id;
  			rc = validate_rx_req_id(rx_ring, req_id);
 -			if (unlikely(rc))

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

* [dpdk-stable] patch 'net/ena: update completion queue after cleanup' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (54 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/ena: fix cleanup for out of order packets' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/cxgbe: fix overlapping regions in TID table' " Kevin Traynor
                   ` (15 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Rafal Kozik; +Cc: Michal Krawczyk, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 0ec66dbb578b3993dd4178d1416f72117b50b764 Mon Sep 17 00:00:00 2001
From: Rafal Kozik <rk@semihalf.com>
Date: Fri, 14 Dec 2018 14:18:44 +0100
Subject: [PATCH] net/ena: update completion queue after cleanup

[ upstream commit a45462c507e98b49cb5c2302e0be3c72d2e20a1a ]

After Rx or Tx cleanup update completion queue head by calling
ena_com_update_dev_comp_head().

Fixes: 1daff5260ff8 ("net/ena: use unmasked head and tail")

Signed-off-by: Rafal Kozik <rk@semihalf.com>
Acked-by: Michal Krawczyk <mk@semihalf.com>
---
 drivers/net/ena/ena_ethdev.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
index 281addb4b..333615700 100644
--- a/drivers/net/ena/ena_ethdev.c
+++ b/drivers/net/ena/ena_ethdev.c
@@ -1958,6 +1958,8 @@ static uint16_t eth_ena_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
 	desc_in_use = desc_in_use - completed + 1;
 	/* Burst refill to save doorbells, memory barriers, const interval */
-	if (ring_size - desc_in_use > ENA_RING_DESCS_RATIO(ring_size))
+	if (ring_size - desc_in_use > ENA_RING_DESCS_RATIO(ring_size)) {
+		ena_com_update_dev_comp_head(rx_ring->ena_com_io_cq);
 		ena_populate_rx_queue(rx_ring, ring_size - desc_in_use);
+	}
 
 	return recv_idx;
@@ -2209,6 +2211,7 @@ static uint16_t eth_ena_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
 	if (total_tx_descs > 0) {
 		/* acknowledge completion of sent packets */
-		ena_com_comp_ack(tx_ring->ena_com_io_sq, total_tx_descs);
 		tx_ring->next_to_clean = next_to_clean;
+		ena_com_comp_ack(tx_ring->ena_com_io_sq, total_tx_descs);
+		ena_com_update_dev_comp_head(tx_ring->ena_com_io_cq);
 	}
 
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.836206501 +0000
+++ 0057-net-ena-update-completion-queue-after-cleanup.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,13 +1,14 @@
-From a45462c507e98b49cb5c2302e0be3c72d2e20a1a Mon Sep 17 00:00:00 2001
+From 0ec66dbb578b3993dd4178d1416f72117b50b764 Mon Sep 17 00:00:00 2001
 From: Rafal Kozik <rk@semihalf.com>
 Date: Fri, 14 Dec 2018 14:18:44 +0100
 Subject: [PATCH] net/ena: update completion queue after cleanup
 
+[ upstream commit a45462c507e98b49cb5c2302e0be3c72d2e20a1a ]
+
 After Rx or Tx cleanup update completion queue head by calling
 ena_com_update_dev_comp_head().
 
 Fixes: 1daff5260ff8 ("net/ena: use unmasked head and tail")
-Cc: stable@dpdk.org
 
 Signed-off-by: Rafal Kozik <rk@semihalf.com>
 Acked-by: Michal Krawczyk <mk@semihalf.com>
@@ -16,10 +17,10 @@
  1 file changed, 5 insertions(+), 2 deletions(-)
 
 diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
-index 0aeb85ff8..a2c8f1e4a 100644
+index 281addb4b..333615700 100644
 --- a/drivers/net/ena/ena_ethdev.c
 +++ b/drivers/net/ena/ena_ethdev.c
-@@ -2129,6 +2129,8 @@ static uint16_t eth_ena_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
+@@ -1958,6 +1958,8 @@ static uint16_t eth_ena_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
  	desc_in_use = desc_in_use - completed + 1;
  	/* Burst refill to save doorbells, memory barriers, const interval */
 -	if (ring_size - desc_in_use > ENA_RING_DESCS_RATIO(ring_size))
@@ -29,7 +30,7 @@
 +	}
  
  	return recv_idx;
-@@ -2441,6 +2443,7 @@ static uint16_t eth_ena_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
+@@ -2209,6 +2211,7 @@ static uint16_t eth_ena_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
  	if (total_tx_descs > 0) {
  		/* acknowledge completion of sent packets */
 -		ena_com_comp_ack(tx_ring->ena_com_io_sq, total_tx_descs);

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

* [dpdk-stable] patch 'net/cxgbe: fix overlapping regions in TID table' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (55 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/ena: update completion queue after cleanup' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/cxgbe: skip parsing match items with no spec' " Kevin Traynor
                   ` (14 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Rahul Lakkireddy; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 9031db1570e5e1bf80a9b17c2a5b2cfdbcfcc26a Mon Sep 17 00:00:00 2001
From: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
Date: Sat, 15 Dec 2018 00:31:53 +0530
Subject: [PATCH] net/cxgbe: fix overlapping regions in TID table

[ upstream commit 27288219c944481ad4f2358be0a2eb8ead4a4e21 ]

Location of filter TID table should be after active TID table memory,
and not from the beginning of TID table memory. This fixes memory
corruption due to overlapping regions.

Fixes: 3a381a4116ed ("net/cxgbe: query firmware for HASH filter resources")

Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
---
 drivers/net/cxgbe/cxgbe_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/cxgbe/cxgbe_main.c b/drivers/net/cxgbe/cxgbe_main.c
index 0368db509..5fa6cdd05 100644
--- a/drivers/net/cxgbe/cxgbe_main.c
+++ b/drivers/net/cxgbe/cxgbe_main.c
@@ -416,5 +416,5 @@ static int tid_init(struct tid_info *t)
 
 	t->atid_tab = (union aopen_entry *)&t->tid_tab[t->ntids];
-	t->ftid_tab = (struct filter_entry *)&t->tid_tab[t->natids];
+	t->ftid_tab = (struct filter_entry *)&t->atid_tab[t->natids];
 	t->ftid_bmap_array = t4_os_alloc(ftid_bmap_size);
 	if (!t->ftid_bmap_array) {
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.861381215 +0000
+++ 0058-net-cxgbe-fix-overlapping-regions-in-TID-table.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,14 +1,15 @@
-From 27288219c944481ad4f2358be0a2eb8ead4a4e21 Mon Sep 17 00:00:00 2001
+From 9031db1570e5e1bf80a9b17c2a5b2cfdbcfcc26a Mon Sep 17 00:00:00 2001
 From: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
 Date: Sat, 15 Dec 2018 00:31:53 +0530
 Subject: [PATCH] net/cxgbe: fix overlapping regions in TID table
 
+[ upstream commit 27288219c944481ad4f2358be0a2eb8ead4a4e21 ]
+
 Location of filter TID table should be after active TID table memory,
 and not from the beginning of TID table memory. This fixes memory
 corruption due to overlapping regions.
 
 Fixes: 3a381a4116ed ("net/cxgbe: query firmware for HASH filter resources")
-Cc: stable@dpdk.org
 
 Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
 ---

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

* [dpdk-stable] patch 'net/cxgbe: skip parsing match items with no spec' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (56 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/cxgbe: fix overlapping regions in TID table' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/i40e: fix config name in comment' " Kevin Traynor
                   ` (13 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Rahul Lakkireddy; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From ca5a94bbe74fc98ff897fd71f5311f3363774bef Mon Sep 17 00:00:00 2001
From: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
Date: Sat, 15 Dec 2018 00:31:54 +0530
Subject: [PATCH] net/cxgbe: skip parsing match items with no spec

[ upstream commit cadce5ee8aec5236d06474a94db0ba0ec6a48321 ]

Skip parsing pattern match items that have no spec. This fixes NULL
dereference when accessing their non-existent spec.

Fixes: ee61f5113b17 ("net/cxgbe: parse and validate flows")

Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
---
 drivers/net/cxgbe/cxgbe_flow.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/net/cxgbe/cxgbe_flow.c b/drivers/net/cxgbe/cxgbe_flow.c
index 4deaff8f2..7b87bdf58 100644
--- a/drivers/net/cxgbe/cxgbe_flow.c
+++ b/drivers/net/cxgbe/cxgbe_flow.c
@@ -733,4 +733,8 @@ cxgbe_rtef_parse_items(struct rte_flow *flow,
 			repeat[i->type] = 1;
 
+			/* No spec found for this pattern item. Skip it */
+			if (!i->spec)
+				break;
+
 			/* validate the item */
 			ret = cxgbe_validate_item(i, e);
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.886072478 +0000
+++ 0059-net-cxgbe-skip-parsing-match-items-with-no-spec.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,13 +1,14 @@
-From cadce5ee8aec5236d06474a94db0ba0ec6a48321 Mon Sep 17 00:00:00 2001
+From ca5a94bbe74fc98ff897fd71f5311f3363774bef Mon Sep 17 00:00:00 2001
 From: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
 Date: Sat, 15 Dec 2018 00:31:54 +0530
 Subject: [PATCH] net/cxgbe: skip parsing match items with no spec
 
+[ upstream commit cadce5ee8aec5236d06474a94db0ba0ec6a48321 ]
+
 Skip parsing pattern match items that have no spec. This fixes NULL
 dereference when accessing their non-existent spec.
 
 Fixes: ee61f5113b17 ("net/cxgbe: parse and validate flows")
-Cc: stable@dpdk.org
 
 Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
 ---

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

* [dpdk-stable] patch 'net/i40e: fix config name in comment' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (57 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/cxgbe: skip parsing match items with no spec' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/mlx5: fix Multi-Packet RQ mempool free' " Kevin Traynor
                   ` (12 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Rami Rosen; +Cc: Qi Zhang, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From e2c626934bc3dce03b018a509cc08fc296d2f772 Mon Sep 17 00:00:00 2001
From: Rami Rosen <ramirose@gmail.com>
Date: Wed, 19 Dec 2018 13:22:03 +0200
Subject: [PATCH] net/i40e: fix config name in comment

[ upstream commit 3fcde631cba0560541ffc6c25b9c2fbe45dcf789 ]

This patch fixes I40E RxTx module to use the proper config setting,
CONFIG_RTE_LIBRTE_I40E_INC_VECTOR.

Fixes: 9ed94e5bb04e ("i40e: add vector Rx")

Signed-off-by: Rami Rosen <ramirose@gmail.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
---
 drivers/net/i40e/i40e_rxtx.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c
index 82a170929..8f727fae6 100644
--- a/drivers/net/i40e/i40e_rxtx.c
+++ b/drivers/net/i40e/i40e_rxtx.c
@@ -3183,5 +3183,5 @@ i40e_set_default_pctype_table(struct rte_eth_dev *dev)
 }
 
-/* Stubs needed for linkage when CONFIG_RTE_I40E_INC_VECTOR is set to 'n' */
+/* Stubs needed for linkage when CONFIG_RTE_LIBRTE_I40E_INC_VECTOR is set to 'n' */
 __rte_weak int
 i40e_rx_vec_dev_conf_condition_check(struct rte_eth_dev __rte_unused *dev)
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.908190179 +0000
+++ 0060-net-i40e-fix-config-name-in-comment.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,13 +1,14 @@
-From 3fcde631cba0560541ffc6c25b9c2fbe45dcf789 Mon Sep 17 00:00:00 2001
+From e2c626934bc3dce03b018a509cc08fc296d2f772 Mon Sep 17 00:00:00 2001
 From: Rami Rosen <ramirose@gmail.com>
 Date: Wed, 19 Dec 2018 13:22:03 +0200
 Subject: [PATCH] net/i40e: fix config name in comment
 
+[ upstream commit 3fcde631cba0560541ffc6c25b9c2fbe45dcf789 ]
+
 This patch fixes I40E RxTx module to use the proper config setting,
 CONFIG_RTE_LIBRTE_I40E_INC_VECTOR.
 
 Fixes: 9ed94e5bb04e ("i40e: add vector Rx")
-Cc: stable@dpdk.org
 
 Signed-off-by: Rami Rosen <ramirose@gmail.com>
 Acked-by: Qi Zhang <qi.z.zhang@intel.com>

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

* [dpdk-stable] patch 'net/mlx5: fix Multi-Packet RQ mempool free' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (58 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/i40e: fix config name in comment' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'net: fix underflow for checksum of invalid IPv4 packets' " Kevin Traynor
                   ` (11 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Yongseok Koh; +Cc: Shahaf Shuler, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 396d296b37d837c2a2dd983652dc9e1ef83819e1 Mon Sep 17 00:00:00 2001
From: Yongseok Koh <yskoh@mellanox.com>
Date: Wed, 12 Dec 2018 03:11:32 -0800
Subject: [PATCH] net/mlx5: fix Multi-Packet RQ mempool free

[ upstream commit 39e98c21be6cb84becbeeedd20428c32242249f5 ]

When MPRQ mempool is freed, the pointer stored in priv structure must be
reset to null. Otherwise, the mempool can be freed again if the port is
restarted.

Fixes: 7d6bf6b866b8 ("net/mlx5: add Multi-Packet Rx support")

Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
---
 drivers/net/mlx5/mlx5_rxq.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c
index 183da0e28..34c833872 100644
--- a/drivers/net/mlx5/mlx5_rxq.c
+++ b/drivers/net/mlx5/mlx5_rxq.c
@@ -1180,4 +1180,5 @@ mlx5_mprq_free_mp(struct rte_eth_dev *dev)
 		rxq->mprq_mp = NULL;
 	}
+	priv->mprq_mp = NULL;
 	return 0;
 }
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.934359179 +0000
+++ 0061-net-mlx5-fix-Multi-Packet-RQ-mempool-free.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,14 +1,15 @@
-From 39e98c21be6cb84becbeeedd20428c32242249f5 Mon Sep 17 00:00:00 2001
+From 396d296b37d837c2a2dd983652dc9e1ef83819e1 Mon Sep 17 00:00:00 2001
 From: Yongseok Koh <yskoh@mellanox.com>
 Date: Wed, 12 Dec 2018 03:11:32 -0800
 Subject: [PATCH] net/mlx5: fix Multi-Packet RQ mempool free
 
+[ upstream commit 39e98c21be6cb84becbeeedd20428c32242249f5 ]
+
 When MPRQ mempool is freed, the pointer stored in priv structure must be
 reset to null. Otherwise, the mempool can be freed again if the port is
 restarted.
 
 Fixes: 7d6bf6b866b8 ("net/mlx5: add Multi-Packet Rx support")
-Cc: stable@dpdk.org
 
 Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
 Acked-by: Shahaf Shuler <shahafs@mellanox.com>

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

* [dpdk-stable] patch 'net: fix underflow for checksum of invalid IPv4 packets' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (59 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/mlx5: fix Multi-Packet RQ mempool free' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/tap: add buffer overflow checks before checksum' " Kevin Traynor
                   ` (10 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Bruce Richardson; +Cc: Hemant Agrawal, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From d9d904fabe373e75ac360c4450bbcdf0bd41c365 Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Mon, 17 Dec 2018 15:50:04 +0000
Subject: [PATCH] net: fix underflow for checksum of invalid IPv4 packets

[ upstream commit 8743d499a59c3d6a7c743861fd3baf06ed5fe763 ]

If we receive a packet with an invalid IP header, where the total packet
length is reported as less than the IP header length, we would end up
getting an underflow in the length subtraction.

This could cause us to checksum e.g. 4GB of data in the case where the
result of the subtraction was -1.

We fix this by having the function return 0 - an invalid sum - when
the length is less than the header length.

Fixes: af75078fece3 ("first public release")
Fixes: 6006818cfb26 ("net: new checksum functions")

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
 lib/librte_net/rte_ip.h | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/lib/librte_net/rte_ip.h b/lib/librte_net/rte_ip.h
index f2a8904a2..f9b909090 100644
--- a/lib/librte_net/rte_ip.h
+++ b/lib/librte_net/rte_ip.h
@@ -311,5 +311,6 @@ rte_ipv4_phdr_cksum(const struct ipv4_hdr *ipv4_hdr, uint64_t ol_flags)
  *   The pointer to the beginning of the L4 header.
  * @return
- *   The complemented checksum to set in the IP packet.
+ *   The complemented checksum to set in the IP packet
+ *   or 0 on error
  */
 static inline uint16_t
@@ -317,8 +318,11 @@ rte_ipv4_udptcp_cksum(const struct ipv4_hdr *ipv4_hdr, const void *l4_hdr)
 {
 	uint32_t cksum;
-	uint32_t l4_len;
+	uint32_t l3_len, l4_len;
 
-	l4_len = (uint32_t)(rte_be_to_cpu_16(ipv4_hdr->total_length) -
-		sizeof(struct ipv4_hdr));
+	l3_len = rte_be_to_cpu_16(ipv4_hdr->total_length);
+	if (l3_len < sizeof(struct ipv4_hdr))
+		return 0;
+
+	l4_len = l3_len - sizeof(struct ipv4_hdr);
 
 	cksum = rte_raw_cksum(l4_hdr, l4_len);
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.958542188 +0000
+++ 0062-net-fix-underflow-for-checksum-of-invalid-IPv4-packe.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,8 +1,10 @@
-From 8743d499a59c3d6a7c743861fd3baf06ed5fe763 Mon Sep 17 00:00:00 2001
+From d9d904fabe373e75ac360c4450bbcdf0bd41c365 Mon Sep 17 00:00:00 2001
 From: Bruce Richardson <bruce.richardson@intel.com>
 Date: Mon, 17 Dec 2018 15:50:04 +0000
 Subject: [PATCH] net: fix underflow for checksum of invalid IPv4 packets
 
+[ upstream commit 8743d499a59c3d6a7c743861fd3baf06ed5fe763 ]
+
 If we receive a packet with an invalid IP header, where the total packet
 length is reported as less than the IP header length, we would end up
 getting an underflow in the length subtraction.
@@ -15,7 +17,6 @@
 
 Fixes: af75078fece3 ("first public release")
 Fixes: 6006818cfb26 ("net: new checksum functions")
-Cc: stable@dpdk.org
 
 Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
 Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>

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

* [dpdk-stable] patch 'net/tap: add buffer overflow checks before checksum' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (60 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'net: fix underflow for checksum of invalid IPv4 packets' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/vhost: fix double free of MAC address' " Kevin Traynor
                   ` (9 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Bruce Richardson; +Cc: Ferruh Yigit, Keith Wiles, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 8bfda00f4cc63d61cbb36dfc4fb30d3374821c6b Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Mon, 17 Dec 2018 15:50:05 +0000
Subject: [PATCH] net/tap: add buffer overflow checks before checksum

[ upstream commit 1168a4fd193c3bf981c4889cba150a7bb4c1d169 ]

The checksum calculation APIs take only the packet headers pointers as
parameters, so they assume that the lengths reported in those headers
are correct. However, a malicious packet could claim to be far larger
than it is, so we need to check the header lengths in the driver before
calling the checksum API.

A better fix would be to allow the lengths to be passed into the API
function, but that would be an API break, so fixing in TAP driver for
now.

Fixes: 8ae3023387e9 ("net/tap: add Rx/Tx checksum offload support")

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Keith Wiles <keith.wiles@intel.com>
---
 drivers/net/tap/rte_eth_tap.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c
index 49afd38dd..0ec030bef 100644
--- a/drivers/net/tap/rte_eth_tap.c
+++ b/drivers/net/tap/rte_eth_tap.c
@@ -282,4 +282,10 @@ tap_verify_csum(struct rte_mbuf *mbuf)
 		if (unlikely(l2_len + l3_len > rte_pktmbuf_data_len(mbuf)))
 			return;
+		/* check that the total length reported by header is not
+		 * greater than the total received size
+		 */
+		if (l2_len + rte_be_to_cpu_16(iph->total_length) >
+				rte_pktmbuf_data_len(mbuf))
+			return;
 
 		cksum = ~rte_raw_cksum(iph, l3_len);
@@ -288,5 +294,13 @@ tap_verify_csum(struct rte_mbuf *mbuf)
 			PKT_RX_IP_CKSUM_GOOD;
 	} else if (l3 == RTE_PTYPE_L3_IPV6) {
+		struct ipv6_hdr *iph = l3_hdr;
+
 		l3_len = sizeof(struct ipv6_hdr);
+		/* check that the total length reported by header is not
+		 * greater than the total received size
+		 */
+		if (l2_len + l3_len + rte_be_to_cpu_16(iph->payload_len) >
+				rte_pktmbuf_data_len(mbuf))
+			return;
 	} else {
 		/* IPv6 extensions are not supported */
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:08.980683763 +0000
+++ 0063-net-tap-add-buffer-overflow-checks-before-checksum.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,8 +1,10 @@
-From 1168a4fd193c3bf981c4889cba150a7bb4c1d169 Mon Sep 17 00:00:00 2001
+From 8bfda00f4cc63d61cbb36dfc4fb30d3374821c6b Mon Sep 17 00:00:00 2001
 From: Bruce Richardson <bruce.richardson@intel.com>
 Date: Mon, 17 Dec 2018 15:50:05 +0000
 Subject: [PATCH] net/tap: add buffer overflow checks before checksum
 
+[ upstream commit 1168a4fd193c3bf981c4889cba150a7bb4c1d169 ]
+
 The checksum calculation APIs take only the packet headers pointers as
 parameters, so they assume that the lengths reported in those headers
 are correct. However, a malicious packet could claim to be far larger
@@ -14,7 +16,6 @@
 now.
 
 Fixes: 8ae3023387e9 ("net/tap: add Rx/Tx checksum offload support")
-Cc: stable@dpdk.org
 
 Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
 Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>

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

* [dpdk-stable] patch 'net/vhost: fix double free of MAC address' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (61 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/tap: add buffer overflow checks before checksum' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-07  0:04   ` Hideyuki Yamashita
  2019-01-04 13:24 ` [dpdk-stable] patch 'vhost: enforce avail index and desc read ordering' " Kevin Traynor
                   ` (8 subsequent siblings)
  71 siblings, 1 reply; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Hideyuki Yamashita; +Cc: Yasufumi Ogawa, Tiwei Bie, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 00ffa031bda23be8e1d558d8ed981389628bc543 Mon Sep 17 00:00:00 2001
From: Hideyuki Yamashita <yamashita.hideyuki@po.ntt-tx.co.jp>
Date: Wed, 19 Dec 2018 13:37:18 +0900
Subject: [PATCH] net/vhost: fix double free of MAC address

[ upstream commit 6e3339ca07734e59cd0c24594e3014ab49a0ffc0 ]

The common data freeing has been moved to rte_eth_dev_release_port(),
so freeing mac_addrs like this in eth_dev_close() is unnecessary and
will cause double free.

Fixes: e16adf08e54d ("ethdev: free all common data when releasing port")

Signed-off-by: Hideyuki Yamashita <yamashita.hideyuki@po.ntt-tx.co.jp>
Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>
---
 drivers/net/vhost/rte_eth_vhost.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/net/vhost/rte_eth_vhost.c b/drivers/net/vhost/rte_eth_vhost.c
index 42bdfcbd5..b2cda0483 100644
--- a/drivers/net/vhost/rte_eth_vhost.c
+++ b/drivers/net/vhost/rte_eth_vhost.c
@@ -1001,5 +1001,4 @@ eth_dev_close(struct rte_eth_dev *dev)
 			rte_free(dev->data->tx_queues[i]);
 
-	rte_free(dev->data->mac_addrs);
 	free(internal->dev_name);
 	free(internal->iface_name);
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:09.004712018 +0000
+++ 0064-net-vhost-fix-double-free-of-MAC-address.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,14 +1,15 @@
-From 6e3339ca07734e59cd0c24594e3014ab49a0ffc0 Mon Sep 17 00:00:00 2001
+From 00ffa031bda23be8e1d558d8ed981389628bc543 Mon Sep 17 00:00:00 2001
 From: Hideyuki Yamashita <yamashita.hideyuki@po.ntt-tx.co.jp>
 Date: Wed, 19 Dec 2018 13:37:18 +0900
 Subject: [PATCH] net/vhost: fix double free of MAC address
 
+[ upstream commit 6e3339ca07734e59cd0c24594e3014ab49a0ffc0 ]
+
 The common data freeing has been moved to rte_eth_dev_release_port(),
 so freeing mac_addrs like this in eth_dev_close() is unnecessary and
 will cause double free.
 
 Fixes: e16adf08e54d ("ethdev: free all common data when releasing port")
-Cc: stable@dpdk.org
 
 Signed-off-by: Hideyuki Yamashita <yamashita.hideyuki@po.ntt-tx.co.jp>
 Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>

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

* [dpdk-stable] patch 'vhost: enforce avail index and desc read ordering' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (62 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/vhost: fix double free of MAC address' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'vhost: enforce desc flags and content " Kevin Traynor
                   ` (7 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Maxime Coquelin
  Cc: Jason Wang, Ilya Maximets, Michael S . Tsirkin, Tiwei Bie, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From a6efdbe836abe20ce0cc425fe5683fbd34d62d8c Mon Sep 17 00:00:00 2001
From: Maxime Coquelin <maxime.coquelin@redhat.com>
Date: Wed, 19 Dec 2018 09:21:10 +0100
Subject: [PATCH] vhost: enforce avail index and desc read ordering

[ upstream commit d4ff2135ebb6c7f55af783846fa8e7ea4379c71b ]

A read barrier is required to ensure the ordering between
available index and the descriptor reads is enforced.

1. read avail_head = avail->idx
2. read cur_idx = last_avail_idx
if (cur_idx != avail_head) {
    3. read idx = avail->ring[cur_idx]
    4. read desc[idx]
}

There is a control dependency between step 1 and steps 3 & 4,
3 could be speculatively executed before 1, which could result
in 'idx' to not being updated yet.

Fixes: 4796ad63ba1f ("examples/vhost: import userspace vhost application")

Reported-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Ilya Maximets <i.maximets@samsung.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Tiwei Bie <tiwei.bie@intel.com>
---
 lib/librte_vhost/virtio_net.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/lib/librte_vhost/virtio_net.c b/lib/librte_vhost/virtio_net.c
index 5e1a1a727..f11ebb54f 100644
--- a/lib/librte_vhost/virtio_net.c
+++ b/lib/librte_vhost/virtio_net.c
@@ -792,4 +792,10 @@ virtio_dev_rx_split(struct virtio_net *dev, struct vhost_virtqueue *vq,
 	avail_head = *((volatile uint16_t *)&vq->avail->idx);
 
+	/*
+	 * The ordering between avail index and
+	 * desc reads needs to be enforced.
+	 */
+	rte_smp_rmb();
+
 	for (pkt_idx = 0; pkt_idx < count; pkt_idx++) {
 		uint32_t pkt_len = pkts[pkt_idx]->pkt_len + dev->vhost_hlen;
@@ -1374,4 +1380,10 @@ virtio_dev_tx_split(struct virtio_net *dev, struct vhost_virtqueue *vq,
 		return 0;
 
+	/*
+	 * The ordering between avail index and
+	 * desc reads needs to be enforced.
+	 */
+	rte_smp_rmb();
+
 	VHOST_LOG_DEBUG(VHOST_DATA, "(%d) %s\n", dev->vid, __func__);
 
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:09.030258468 +0000
+++ 0065-vhost-enforce-avail-index-and-desc-read-ordering.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,8 +1,10 @@
-From d4ff2135ebb6c7f55af783846fa8e7ea4379c71b Mon Sep 17 00:00:00 2001
+From a6efdbe836abe20ce0cc425fe5683fbd34d62d8c Mon Sep 17 00:00:00 2001
 From: Maxime Coquelin <maxime.coquelin@redhat.com>
 Date: Wed, 19 Dec 2018 09:21:10 +0100
 Subject: [PATCH] vhost: enforce avail index and desc read ordering
 
+[ upstream commit d4ff2135ebb6c7f55af783846fa8e7ea4379c71b ]
+
 A read barrier is required to ensure the ordering between
 available index and the descriptor reads is enforced.
 
@@ -18,7 +20,6 @@
 in 'idx' to not being updated yet.
 
 Fixes: 4796ad63ba1f ("examples/vhost: import userspace vhost application")
-Cc: stable@dpdk.org
 
 Reported-by: Jason Wang <jasowang@redhat.com>
 Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
@@ -30,10 +31,10 @@
  1 file changed, 12 insertions(+)
 
 diff --git a/lib/librte_vhost/virtio_net.c b/lib/librte_vhost/virtio_net.c
-index 8c657a101..7f37bbbed 100644
+index 5e1a1a727..f11ebb54f 100644
 --- a/lib/librte_vhost/virtio_net.c
 +++ b/lib/librte_vhost/virtio_net.c
-@@ -753,4 +753,10 @@ virtio_dev_rx_split(struct virtio_net *dev, struct vhost_virtqueue *vq,
+@@ -792,4 +792,10 @@ virtio_dev_rx_split(struct virtio_net *dev, struct vhost_virtqueue *vq,
  	avail_head = *((volatile uint16_t *)&vq->avail->idx);
  
 +	/*
@@ -44,7 +45,7 @@
 +
  	for (pkt_idx = 0; pkt_idx < count; pkt_idx++) {
  		uint32_t pkt_len = pkts[pkt_idx]->pkt_len + dev->vhost_hlen;
-@@ -1335,4 +1341,10 @@ virtio_dev_tx_split(struct virtio_net *dev, struct vhost_virtqueue *vq,
+@@ -1374,4 +1380,10 @@ virtio_dev_tx_split(struct virtio_net *dev, struct vhost_virtqueue *vq,
  		return 0;
  
 +	/*

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

* [dpdk-stable] patch 'vhost: enforce desc flags and content read ordering' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (63 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'vhost: enforce avail index and desc read ordering' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/af_packet: fix setting MTU decrements sockaddr twice' " Kevin Traynor
                   ` (6 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Maxime Coquelin
  Cc: Jason Wang, Ilya Maximets, Michael S . Tsirkin, Tiwei Bie, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 2c4f729dc4f13640432e61a28a94f2ac053fed8e Mon Sep 17 00:00:00 2001
From: Maxime Coquelin <maxime.coquelin@redhat.com>
Date: Wed, 19 Dec 2018 09:21:11 +0100
Subject: [PATCH] vhost: enforce desc flags and content read ordering

[ upstream commit 33e12d63d156b99aed2733e6aae97d53931e8e43 ]

A read barrier is required to ensure that the ordering between
descriptor's flags and content reads is enforced.

1. read flags = desc->flags
if (flags & AVAIL_BIT)
2.   read desc->id

There is a control dependency between steps 1 and step 2.
2 could be speculatively executed before 1, which could result
in 'id' to not be updated yet.

Fixes: 2f3225a7d69b ("vhost: add vector filling support for packed ring")

Reported-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Ilya Maximets <i.maximets@samsung.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Tiwei Bie <tiwei.bie@intel.com>
---
 lib/librte_vhost/virtio_net.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/lib/librte_vhost/virtio_net.c b/lib/librte_vhost/virtio_net.c
index f11ebb54f..68b72e7a5 100644
--- a/lib/librte_vhost/virtio_net.c
+++ b/lib/librte_vhost/virtio_net.c
@@ -521,4 +521,10 @@ fill_vec_buf_packed(struct virtio_net *dev, struct vhost_virtqueue *vq,
 		return -1;
 
+	/*
+	 * The ordering between desc flags and desc
+	 * content reads need to be enforced.
+	 */
+	rte_smp_rmb();
+
 	*desc_count = 0;
 	*len = 0;
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:09.053967513 +0000
+++ 0066-vhost-enforce-desc-flags-and-content-read-ordering.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,8 +1,10 @@
-From 33e12d63d156b99aed2733e6aae97d53931e8e43 Mon Sep 17 00:00:00 2001
+From 2c4f729dc4f13640432e61a28a94f2ac053fed8e Mon Sep 17 00:00:00 2001
 From: Maxime Coquelin <maxime.coquelin@redhat.com>
 Date: Wed, 19 Dec 2018 09:21:11 +0100
 Subject: [PATCH] vhost: enforce desc flags and content read ordering
 
+[ upstream commit 33e12d63d156b99aed2733e6aae97d53931e8e43 ]
+
 A read barrier is required to ensure that the ordering between
 descriptor's flags and content reads is enforced.
 
@@ -15,7 +17,6 @@
 in 'id' to not be updated yet.
 
 Fixes: 2f3225a7d69b ("vhost: add vector filling support for packed ring")
-Cc: stable@dpdk.org
 
 Reported-by: Jason Wang <jasowang@redhat.com>
 Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
@@ -27,10 +28,10 @@
  1 file changed, 6 insertions(+)
 
 diff --git a/lib/librte_vhost/virtio_net.c b/lib/librte_vhost/virtio_net.c
-index 7f37bbbed..a9b1bc55f 100644
+index f11ebb54f..68b72e7a5 100644
 --- a/lib/librte_vhost/virtio_net.c
 +++ b/lib/librte_vhost/virtio_net.c
-@@ -482,4 +482,10 @@ fill_vec_buf_packed(struct virtio_net *dev, struct vhost_virtqueue *vq,
+@@ -521,4 +521,10 @@ fill_vec_buf_packed(struct virtio_net *dev, struct vhost_virtqueue *vq,
  		return -1;
  
 +	/*

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

* [dpdk-stable] patch 'net/af_packet: fix setting MTU decrements sockaddr twice' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (64 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'vhost: enforce desc flags and content " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/tap: fix possible uninitialized variable access' " Kevin Traynor
                   ` (5 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Tiago Lam; +Cc: Ferruh Yigit, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From b64072ad7772b0de8017bca111dfe23bdb23dd65 Mon Sep 17 00:00:00 2001
From: Tiago Lam <tiago.lam@intel.com>
Date: Tue, 20 Nov 2018 10:26:29 +0000
Subject: [PATCH] net/af_packet: fix setting MTU decrements sockaddr twice

[ upstream commit 8020573894a8504da3146af1854c8aca762539fd ]

When setting the MTU, eth_dev_mtu_set() is called to validate the
provided MTU. As part of that, it calculates the useful area to store
data and compares it against the MTU, to guarantee that there's enough
space to store the data. It calculates that as:
    "tp_frame_size - TPACKET2_HDRLEN - sizeof(struct sockaddr_ll)"

However, the TPACKET2_HDRLEN macro already increments sizeof(struct
sockaddr_ll) internally, meaning the useuful area of data above will
have sizeof(struct sockaddr_ll) decremented twice.

Instead, the useful area of data should be calculated as:
    "tp_frame_size - TPACKET2_HDRLEN"

This makes sure that there's enough useful area to fit the provided MTU
after excluding tpacket2_hdr and sockaddr_ll.

Fixes: cc68ac4847bc ("net/af_packet: support MTU change")

Signed-off-by: Tiago Lam <tiago.lam@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 drivers/net/af_packet/rte_eth_af_packet.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c
index 95a98c6b8..264cfc08f 100644
--- a/drivers/net/af_packet/rte_eth_af_packet.c
+++ b/drivers/net/af_packet/rte_eth_af_packet.c
@@ -434,6 +434,5 @@ eth_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
 	int s;
 	unsigned int data_size = internals->req.tp_frame_size -
-				 TPACKET2_HDRLEN -
-				 sizeof(struct sockaddr_ll);
+				 TPACKET2_HDRLEN;
 
 	if (mtu > data_size)
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:09.077430016 +0000
+++ 0067-net-af_packet-fix-setting-MTU-decrements-sockaddr-tw.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,8 +1,10 @@
-From 8020573894a8504da3146af1854c8aca762539fd Mon Sep 17 00:00:00 2001
+From b64072ad7772b0de8017bca111dfe23bdb23dd65 Mon Sep 17 00:00:00 2001
 From: Tiago Lam <tiago.lam@intel.com>
 Date: Tue, 20 Nov 2018 10:26:29 +0000
 Subject: [PATCH] net/af_packet: fix setting MTU decrements sockaddr twice
 
+[ upstream commit 8020573894a8504da3146af1854c8aca762539fd ]
+
 When setting the MTU, eth_dev_mtu_set() is called to validate the
 provided MTU. As part of that, it calculates the useful area to store
 data and compares it against the MTU, to guarantee that there's enough
@@ -20,7 +22,6 @@
 after excluding tpacket2_hdr and sockaddr_ll.
 
 Fixes: cc68ac4847bc ("net/af_packet: support MTU change")
-Cc: stable@dpdk.org
 
 Signed-off-by: Tiago Lam <tiago.lam@intel.com>
 Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>

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

* [dpdk-stable] patch 'net/tap: fix possible uninitialized variable access' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (65 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/af_packet: fix setting MTU decrements sockaddr twice' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/avf/base: fix comment referencing internal data' " Kevin Traynor
                   ` (4 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Ferruh Yigit; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 96efbb2439c3c42e24a658aa6e147feab88eba7d Mon Sep 17 00:00:00 2001
From: Ferruh Yigit <ferruh.yigit@intel.com>
Date: Mon, 5 Nov 2018 15:31:21 +0000
Subject: [PATCH] net/tap: fix possible uninitialized variable access

[ upstream commit 04d3f6bc97066d355291b56ccdb3e9b11e864852 ]

Fixes: 7c25284e30c2 ("net/tap: add netlink back-end for flow API")

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 drivers/net/tap/tap_tcmsgs.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/tap/tap_tcmsgs.c b/drivers/net/tap/tap_tcmsgs.c
index 3c9d03667..b478b5951 100644
--- a/drivers/net/tap/tap_tcmsgs.c
+++ b/drivers/net/tap/tap_tcmsgs.c
@@ -117,5 +117,5 @@ int
 qdisc_add_multiq(int nlsk_fd, uint16_t ifindex)
 {
-	struct tc_multiq_qopt opt;
+	struct tc_multiq_qopt opt = {0};
 	struct nlmsg msg;
 
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:09.101928780 +0000
+++ 0068-net-tap-fix-possible-uninitialized-variable-access.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,10 +1,11 @@
-From 04d3f6bc97066d355291b56ccdb3e9b11e864852 Mon Sep 17 00:00:00 2001
+From 96efbb2439c3c42e24a658aa6e147feab88eba7d Mon Sep 17 00:00:00 2001
 From: Ferruh Yigit <ferruh.yigit@intel.com>
 Date: Mon, 5 Nov 2018 15:31:21 +0000
 Subject: [PATCH] net/tap: fix possible uninitialized variable access
 
+[ upstream commit 04d3f6bc97066d355291b56ccdb3e9b11e864852 ]
+
 Fixes: 7c25284e30c2 ("net/tap: add netlink back-end for flow API")
-Cc: stable@dpdk.org
 
 Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
 ---

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

* [dpdk-stable] patch 'net/avf/base: fix comment referencing internal data' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (66 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/tap: fix possible uninitialized variable access' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/sfc: pass HW Tx queue index on creation' " Kevin Traynor
                   ` (3 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Rami Rosen; +Cc: Ferruh Yigit, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 219accaa41c485aa08a30def6da87d31ed007b0b Mon Sep 17 00:00:00 2001
From: Rami Rosen <ramirose@gmail.com>
Date: Fri, 21 Dec 2018 14:16:59 +0200
Subject: [PATCH] net/avf/base: fix comment referencing internal data

[ upstream commit 97cb8042ad808ee48b94c3729258a4097e042e29 ]

DCR is Intel internal information, no need to be in public code.
Related commit:
1a0833efde70 ("net/i40e/base: fix comment referencing internal data")

Fixes: e5b2a9e957e7 ("net/avf/base: add base code for avf PMD")

Signed-off-by: Rami Rosen <ramirose@gmail.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 drivers/net/avf/base/avf_adminq_cmd.h | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/net/avf/base/avf_adminq_cmd.h b/drivers/net/avf/base/avf_adminq_cmd.h
index 1709f317e..795491187 100644
--- a/drivers/net/avf/base/avf_adminq_cmd.h
+++ b/drivers/net/avf/base/avf_adminq_cmd.h
@@ -1436,6 +1436,5 @@ struct avf_aqc_add_remove_cloud_filters_element_data {
 
 /* avf_aqc_add_rm_cloud_filt_elem_ext is used when
- * AVF_AQC_ADD_REM_CLOUD_CMD_BIG_BUFFER flag is set. refer to
- * DCR288
+ * AVF_AQC_ADD_REM_CLOUD_CMD_BIG_BUFFER flag is set.
  */
 struct avf_aqc_add_rm_cloud_filt_elem_ext {
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:09.123128912 +0000
+++ 0069-net-avf-base-fix-comment-referencing-internal-data.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,14 +1,15 @@
-From 97cb8042ad808ee48b94c3729258a4097e042e29 Mon Sep 17 00:00:00 2001
+From 219accaa41c485aa08a30def6da87d31ed007b0b Mon Sep 17 00:00:00 2001
 From: Rami Rosen <ramirose@gmail.com>
 Date: Fri, 21 Dec 2018 14:16:59 +0200
 Subject: [PATCH] net/avf/base: fix comment referencing internal data
 
+[ upstream commit 97cb8042ad808ee48b94c3729258a4097e042e29 ]
+
 DCR is Intel internal information, no need to be in public code.
 Related commit:
 1a0833efde70 ("net/i40e/base: fix comment referencing internal data")
 
 Fixes: e5b2a9e957e7 ("net/avf/base: add base code for avf PMD")
-Cc: stable@dpdk.org
 
 Signed-off-by: Rami Rosen <ramirose@gmail.com>
 Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>

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

* [dpdk-stable] patch 'net/sfc: pass HW Tx queue index on creation' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (67 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/avf/base: fix comment referencing internal data' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'telemetry: fix using ports of different types' " Kevin Traynor
                   ` (2 subsequent siblings)
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Andrew Rybchenko; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 01ca937f62efa36b4247578f76092ebcb3633e1b Mon Sep 17 00:00:00 2001
From: Andrew Rybchenko <arybchenko@solarflare.com>
Date: Fri, 21 Dec 2018 12:15:39 +0000
Subject: [PATCH] net/sfc: pass HW Tx queue index on creation

[ upstream commit 7928b0fdf8f790b6178ad91cf41ee2f9df10e707 ]

Software indexes are PMD internal and should not be passed outside.
Right now SW and HW indexes of the Tx queue match, so it is just
a cosmetic fix.

Fixes: dbdc82416b72 ("net/sfc: factor out libefx-based Tx datapath")

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
---
 drivers/net/sfc/sfc_tx.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/sfc/sfc_tx.c b/drivers/net/sfc/sfc_tx.c
index 147f93365..cce823954 100644
--- a/drivers/net/sfc/sfc_tx.c
+++ b/drivers/net/sfc/sfc_tx.c
@@ -452,5 +452,5 @@ sfc_tx_qstart(struct sfc_adapter *sa, unsigned int sw_index)
 		flags |= EFX_TXQ_FATSOV2;
 
-	rc = efx_tx_qcreate(sa->nic, sw_index, 0, &txq->mem,
+	rc = efx_tx_qcreate(sa->nic, txq->hw_index, 0, &txq->mem,
 			    txq_info->entries, 0 /* not used on EF10 */,
 			    flags, evq->common,
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:09.149948313 +0000
+++ 0070-net-sfc-pass-HW-Tx-queue-index-on-creation.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,14 +1,15 @@
-From 7928b0fdf8f790b6178ad91cf41ee2f9df10e707 Mon Sep 17 00:00:00 2001
+From 01ca937f62efa36b4247578f76092ebcb3633e1b Mon Sep 17 00:00:00 2001
 From: Andrew Rybchenko <arybchenko@solarflare.com>
 Date: Fri, 21 Dec 2018 12:15:39 +0000
 Subject: [PATCH] net/sfc: pass HW Tx queue index on creation
 
+[ upstream commit 7928b0fdf8f790b6178ad91cf41ee2f9df10e707 ]
+
 Software indexes are PMD internal and should not be passed outside.
 Right now SW and HW indexes of the Tx queue match, so it is just
 a cosmetic fix.
 
 Fixes: dbdc82416b72 ("net/sfc: factor out libefx-based Tx datapath")
-Cc: stable@dpdk.org
 
 Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
 ---

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

* [dpdk-stable] patch 'telemetry: fix using ports of different types' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (68 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/sfc: pass HW Tx queue index on creation' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'sched: fix memory leak on init failure' " Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'app/testpmd: expand RED queue thresholds to 64 bits' " Kevin Traynor
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Bruce Richardson; +Cc: Kevin Laatz, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 36cbc96d2a5c667884e98af79a531eeb128398f7 Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson@intel.com>
Date: Wed, 19 Dec 2018 11:59:50 +0000
Subject: [PATCH] telemetry: fix using ports of different types

[ upstream commit fff6df7bf58e8907c710832738a26d8d67c8256c ]

Different NIC ports can have different numbers of xstats on them, which
means that we can't just use the xstats list from the first port registered
in the telemetry library. Instead, we need to check the type of each port -
by checking its ops structure pointer - and register each port type once
with the metrics lib.

Fixes: fdbdb3f9ce46 ("telemetry: add initial connection socket")

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Kevin Laatz <kevin.laatz@intel.com>
---
 lib/librte_telemetry/rte_telemetry.c          | 40 ++++++++++++++-----
 lib/librte_telemetry/rte_telemetry_internal.h |  2 +-
 2 files changed, 32 insertions(+), 10 deletions(-)

diff --git a/lib/librte_telemetry/rte_telemetry.c b/lib/librte_telemetry/rte_telemetry.c
index 016431f12..7fb247eaa 100644
--- a/lib/librte_telemetry/rte_telemetry.c
+++ b/lib/librte_telemetry/rte_telemetry.c
@@ -559,5 +559,5 @@ rte_telemetry_send_ports_stats_values(uint32_t *metric_ids, int num_metric_ids,
 
 		ret = rte_telemetry_update_metrics_ethdev(telemetry,
-				port_ids[i], telemetry->reg_index);
+				port_ids[i], telemetry->reg_index[i]);
 		if (ret < 0) {
 			TELEMETRY_LOG_ERR("Failed to update ethdev metrics");
@@ -659,4 +659,9 @@ static int32_t
 rte_telemetry_initial_accept(struct telemetry_impl *telemetry)
 {
+	struct driver_index {
+		const void *dev_ops;
+		int reg_index;
+	} drv_idx[RTE_MAX_ETHPORTS];
+	int nb_drv_idx = 0;
 	uint16_t pid;
 	int ret;
@@ -664,16 +669,33 @@ rte_telemetry_initial_accept(struct telemetry_impl *telemetry)
 
 	RTE_ETH_FOREACH_DEV(pid) {
-		telemetry->reg_index = rte_telemetry_reg_ethdev_to_metrics(pid);
-		break;
-	}
+		int i;
+		/* Different device types have different numbers of stats, so
+		 * first check if the stats for this type of device have
+		 * already been registered
+		 */
+		for (i = 0; i < nb_drv_idx; i++) {
+			if (rte_eth_devices[pid].dev_ops == drv_idx[i].dev_ops) {
+				telemetry->reg_index[pid] = drv_idx[i].reg_index;
+				break;
+			}
+		}
+		if (i < nb_drv_idx)
+			continue; /* we found a match, go to next port */
 
-	if (telemetry->reg_index < 0) {
-		TELEMETRY_LOG_ERR("Failed to register ethdev metrics");
-		return -1;
+		/* No match, register a new set of xstats for this port */
+		ret = rte_telemetry_reg_ethdev_to_metrics(pid);
+		if (ret < 0) {
+			TELEMETRY_LOG_ERR("Failed to register ethdev metrics");
+			return -1;
+		}
+		telemetry->reg_index[pid] = ret;
+		drv_idx[nb_drv_idx].dev_ops = rte_eth_devices[pid].dev_ops;
+		drv_idx[nb_drv_idx].reg_index = ret;
+		nb_drv_idx++;
 	}
 
 	telemetry->metrics_register_done = 1;
 	if (selftest) {
-		ret = rte_telemetry_socket_messaging_testing(telemetry->reg_index,
+		ret = rte_telemetry_socket_messaging_testing(telemetry->reg_index[0],
 				telemetry->server_fd);
 		if (ret < 0)
@@ -1300,5 +1322,5 @@ rte_telemetry_socket_messaging_testing(int index, int socket)
 
 	telemetry->server_fd = socket;
-	telemetry->reg_index = index;
+	telemetry->reg_index[0] = index;
 	TELEMETRY_LOG_INFO("Beginning Telemetry socket message Selftest");
 	rte_telemetry_socket_test_setup(telemetry, &send_fd, &recv_fd);
diff --git a/lib/librte_telemetry/rte_telemetry_internal.h b/lib/librte_telemetry/rte_telemetry_internal.h
index de7afda30..c298c3919 100644
--- a/lib/librte_telemetry/rte_telemetry_internal.h
+++ b/lib/librte_telemetry/rte_telemetry_internal.h
@@ -37,5 +37,5 @@ typedef struct telemetry_impl {
 	int thread_status;
 	uint32_t socket_id;
-	int reg_index;
+	int reg_index[RTE_MAX_ETHPORTS];
 	int metrics_register_done;
 	TAILQ_HEAD(, telemetry_client) client_list_head;
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:09.173298225 +0000
+++ 0071-telemetry-fix-using-ports-of-different-types.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,8 +1,10 @@
-From fff6df7bf58e8907c710832738a26d8d67c8256c Mon Sep 17 00:00:00 2001
+From 36cbc96d2a5c667884e98af79a531eeb128398f7 Mon Sep 17 00:00:00 2001
 From: Bruce Richardson <bruce.richardson@intel.com>
 Date: Wed, 19 Dec 2018 11:59:50 +0000
 Subject: [PATCH] telemetry: fix using ports of different types
 
+[ upstream commit fff6df7bf58e8907c710832738a26d8d67c8256c ]
+
 Different NIC ports can have different numbers of xstats on them, which
 means that we can't just use the xstats list from the first port registered
 in the telemetry library. Instead, we need to check the type of each port -
@@ -10,7 +12,6 @@
 with the metrics lib.
 
 Fixes: fdbdb3f9ce46 ("telemetry: add initial connection socket")
-Cc: stable@dpdk.org
 
 Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
 Acked-by: Kevin Laatz <kevin.laatz@intel.com>

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

* [dpdk-stable] patch 'sched: fix memory leak on init failure' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (69 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'telemetry: fix using ports of different types' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  2019-01-04 13:24 ` [dpdk-stable] patch 'app/testpmd: expand RED queue thresholds to 64 bits' " Kevin Traynor
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Tonghao Zhang; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From b6cd764c39521574e7914aa72fba774dc7c6ea32 Mon Sep 17 00:00:00 2001
From: Tonghao Zhang <xiangxia.m.yue@gmail.com>
Date: Wed, 28 Nov 2018 05:55:55 -0800
Subject: [PATCH] sched: fix memory leak on init failure

[ upstream commit 03b7fd7e545f453f1d7c13d11bf8a0b7cd59a943 ]

In some case, we may create sched port dynamically,
if err when creating so memory will leak.

Fixes: de3cfa2c9823 ("sched: initial import")

Signed-off-by: Tonghao Zhang <xiangxia.m.yue@gmail.com>
---
 lib/librte_sched/rte_sched.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/lib/librte_sched/rte_sched.c b/lib/librte_sched/rte_sched.c
index 587d5e602..89c3d1e7f 100644
--- a/lib/librte_sched/rte_sched.c
+++ b/lib/librte_sched/rte_sched.c
@@ -668,4 +668,5 @@ rte_sched_port_config(struct rte_sched_port_params *params)
 				params->red_params[i][j].max_th,
 				params->red_params[i][j].maxp_inv) != 0) {
+				rte_free(port);
 				return NULL;
 			}
@@ -727,4 +728,5 @@ rte_sched_port_config(struct rte_sched_port_params *params)
 	if (port->bmp == NULL) {
 		RTE_LOG(ERR, SCHED, "Bitmap init error\n");
+		rte_free(port);
 		return NULL;
 	}
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:09.197144153 +0000
+++ 0072-sched-fix-memory-leak-on-init-failure.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,13 +1,14 @@
-From 03b7fd7e545f453f1d7c13d11bf8a0b7cd59a943 Mon Sep 17 00:00:00 2001
+From b6cd764c39521574e7914aa72fba774dc7c6ea32 Mon Sep 17 00:00:00 2001
 From: Tonghao Zhang <xiangxia.m.yue@gmail.com>
 Date: Wed, 28 Nov 2018 05:55:55 -0800
 Subject: [PATCH] sched: fix memory leak on init failure
 
+[ upstream commit 03b7fd7e545f453f1d7c13d11bf8a0b7cd59a943 ]
+
 In some case, we may create sched port dynamically,
 if err when creating so memory will leak.
 
 Fixes: de3cfa2c9823 ("sched: initial import")
-Cc: stable@dpdk.org
 
 Signed-off-by: Tonghao Zhang <xiangxia.m.yue@gmail.com>
 ---
@@ -15,16 +16,16 @@
  1 file changed, 2 insertions(+)
 
 diff --git a/lib/librte_sched/rte_sched.c b/lib/librte_sched/rte_sched.c
-index dd7739172..77aed9fb2 100644
+index 587d5e602..89c3d1e7f 100644
 --- a/lib/librte_sched/rte_sched.c
 +++ b/lib/librte_sched/rte_sched.c
-@@ -655,4 +655,5 @@ rte_sched_port_config(struct rte_sched_port_params *params)
+@@ -668,4 +668,5 @@ rte_sched_port_config(struct rte_sched_port_params *params)
  				params->red_params[i][j].max_th,
  				params->red_params[i][j].maxp_inv) != 0) {
 +				rte_free(port);
  				return NULL;
  			}
-@@ -714,4 +715,5 @@ rte_sched_port_config(struct rte_sched_port_params *params)
+@@ -727,4 +728,5 @@ rte_sched_port_config(struct rte_sched_port_params *params)
  	if (port->bmp == NULL) {
  		RTE_LOG(ERR, SCHED, "Bitmap init error\n");
 +		rte_free(port);

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

* [dpdk-stable] patch 'app/testpmd: expand RED queue thresholds to 64 bits' has been queued to LTS release 18.11.1
  2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
                   ` (70 preceding siblings ...)
  2019-01-04 13:24 ` [dpdk-stable] patch 'sched: fix memory leak on init failure' " Kevin Traynor
@ 2019-01-04 13:24 ` Kevin Traynor
  71 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-04 13:24 UTC (permalink / raw)
  To: Rosen Xu; +Cc: Jasvinder Singh, dpdk stable

Hi,

FYI, your patch has been queued to LTS release 18.11.1

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

Thanks.

Kevin Traynor

---
>From 14b927e5db321b92b30c5d78bdb8709c0200468f Mon Sep 17 00:00:00 2001
From: Rosen Xu <rosen.xu@intel.com>
Date: Mon, 26 Nov 2018 16:35:57 +0800
Subject: [PATCH] app/testpmd: expand RED queue thresholds to 64 bits

[ upstream commit cb43e0b3a94c997a225a4c06f336902922b0cd04 ]

There's very commonly that more than 4G DDR memory in NIC for HQoS,
so right now the queue threshold size of RED needs to expand to
uint64_t. For struct rte_tm_red_params, it has been fixed, but for
test-pmd TM configuration, it hasn't been fixed. This patch fixes it.

Fixes: bddc2f40b594 ("app/testpmd: add commands for shaper and wred profiles")

Signed-off-by: Rosen Xu <rosen.xu@intel.com>
Reviewed-by: Jasvinder Singh <jasvinder.singh@intel.com>
---
 app/test-pmd/cmdline_tm.c | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/app/test-pmd/cmdline_tm.c b/app/test-pmd/cmdline_tm.c
index 4c763482a..101208474 100644
--- a/app/test-pmd/cmdline_tm.c
+++ b/app/test-pmd/cmdline_tm.c
@@ -1157,16 +1157,16 @@ struct cmd_add_port_tm_node_wred_profile_result {
 	uint32_t wred_profile_id;
 	cmdline_fixed_string_t color_g;
-	uint16_t min_th_g;
-	uint16_t max_th_g;
+	uint64_t min_th_g;
+	uint64_t max_th_g;
 	uint16_t maxp_inv_g;
 	uint16_t wq_log2_g;
 	cmdline_fixed_string_t color_y;
-	uint16_t min_th_y;
-	uint16_t max_th_y;
+	uint64_t min_th_y;
+	uint64_t max_th_y;
 	uint16_t maxp_inv_y;
 	uint16_t wq_log2_y;
 	cmdline_fixed_string_t color_r;
-	uint16_t min_th_r;
-	uint16_t max_th_r;
+	uint64_t min_th_r;
+	uint64_t max_th_r;
 	uint16_t maxp_inv_r;
 	uint16_t wq_log2_r;
@@ -1207,9 +1207,9 @@ cmdline_parse_token_num_t cmd_add_port_tm_node_wred_profile_min_th_g =
 	TOKEN_NUM_INITIALIZER(
 		struct cmd_add_port_tm_node_wred_profile_result,
-			min_th_g, UINT16);
+			min_th_g, UINT64);
 cmdline_parse_token_num_t cmd_add_port_tm_node_wred_profile_max_th_g =
 	TOKEN_NUM_INITIALIZER(
 		struct cmd_add_port_tm_node_wred_profile_result,
-			max_th_g, UINT16);
+			max_th_g, UINT64);
 cmdline_parse_token_num_t cmd_add_port_tm_node_wred_profile_maxp_inv_g =
 	TOKEN_NUM_INITIALIZER(
@@ -1227,9 +1227,9 @@ cmdline_parse_token_num_t cmd_add_port_tm_node_wred_profile_min_th_y =
 	TOKEN_NUM_INITIALIZER(
 		struct cmd_add_port_tm_node_wred_profile_result,
-			min_th_y, UINT16);
+			min_th_y, UINT64);
 cmdline_parse_token_num_t cmd_add_port_tm_node_wred_profile_max_th_y =
 	TOKEN_NUM_INITIALIZER(
 		struct cmd_add_port_tm_node_wred_profile_result,
-			max_th_y, UINT16);
+			max_th_y, UINT64);
 cmdline_parse_token_num_t cmd_add_port_tm_node_wred_profile_maxp_inv_y =
 	TOKEN_NUM_INITIALIZER(
@@ -1247,9 +1247,9 @@ cmdline_parse_token_num_t cmd_add_port_tm_node_wred_profile_min_th_r =
 	TOKEN_NUM_INITIALIZER(
 		struct cmd_add_port_tm_node_wred_profile_result,
-			min_th_r, UINT16);
+			min_th_r, UINT64);
 cmdline_parse_token_num_t cmd_add_port_tm_node_wred_profile_max_th_r =
 	TOKEN_NUM_INITIALIZER(
 		struct cmd_add_port_tm_node_wred_profile_result,
-			max_th_r, UINT16);
+			max_th_r, UINT64);
 cmdline_parse_token_num_t cmd_add_port_tm_node_wred_profile_maxp_inv_r =
 	TOKEN_NUM_INITIALIZER(
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-01-04 13:23:09.220636129 +0000
+++ 0073-app-testpmd-expand-RED-queue-thresholds-to-64-bits.patch	2019-01-04 13:23:07.000000000 +0000
@@ -1,15 +1,16 @@
-From cb43e0b3a94c997a225a4c06f336902922b0cd04 Mon Sep 17 00:00:00 2001
+From 14b927e5db321b92b30c5d78bdb8709c0200468f Mon Sep 17 00:00:00 2001
 From: Rosen Xu <rosen.xu@intel.com>
 Date: Mon, 26 Nov 2018 16:35:57 +0800
 Subject: [PATCH] app/testpmd: expand RED queue thresholds to 64 bits
 
+[ upstream commit cb43e0b3a94c997a225a4c06f336902922b0cd04 ]
+
 There's very commonly that more than 4G DDR memory in NIC for HQoS,
 so right now the queue threshold size of RED needs to expand to
 uint64_t. For struct rte_tm_red_params, it has been fixed, but for
 test-pmd TM configuration, it hasn't been fixed. This patch fixes it.
 
 Fixes: bddc2f40b594 ("app/testpmd: add commands for shaper and wred profiles")
-Cc: stable@dpdk.org
 
 Signed-off-by: Rosen Xu <rosen.xu@intel.com>
 Reviewed-by: Jasvinder Singh <jasvinder.singh@intel.com>

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

* Re: [dpdk-stable] patch 'net/vhost: fix double free of MAC address' has been queued to LTS release 18.11.1
  2019-01-04 13:24 ` [dpdk-stable] patch 'net/vhost: fix double free of MAC address' " Kevin Traynor
@ 2019-01-07  0:04   ` Hideyuki Yamashita
  2019-01-07 10:23     ` Kevin Traynor
  0 siblings, 1 reply; 82+ messages in thread
From: Hideyuki Yamashita @ 2019-01-07  0:04 UTC (permalink / raw)
  To: Kevin Traynor; +Cc: Yasufumi Ogawa, Tiwei Bie, dpdk stable

Hello Kevin,

Thanks for your answering me.

I understand that now my patch is queued to LTS 18.11.1.

I would like to ask general rules which kind of patch is queued
to LTS and which is not.
(If I CCed stable@dpdk.org when I submmit patch, it is automatically 
queued? If that is true then how (or where) can I watch the status
of my patch?)

The reason why I ask this is that from user perspective
I want as much patches be queued to LTS so that we can 
use LTS as stable one.

Thanks!

BR,
Hideyuki Yamashita
NTT TechnoCross

> Hi,
> 
> FYI, your patch has been queued to LTS release 18.11.1
> 
> Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
> It will be pushed if I get no objections before 01/11/19. 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.
> 
> Thanks.
> 
> Kevin Traynor
> 
> ---
> From 00ffa031bda23be8e1d558d8ed981389628bc543 Mon Sep 17 00:00:00 2001
> From: Hideyuki Yamashita <yamashita.hideyuki@po.ntt-tx.co.jp>
> Date: Wed, 19 Dec 2018 13:37:18 +0900
> Subject: [PATCH] net/vhost: fix double free of MAC address
> 
> [ upstream commit 6e3339ca07734e59cd0c24594e3014ab49a0ffc0 ]
> 
> The common data freeing has been moved to rte_eth_dev_release_port(),
> so freeing mac_addrs like this in eth_dev_close() is unnecessary and
> will cause double free.
> 
> Fixes: e16adf08e54d ("ethdev: free all common data when releasing port")
> 
> Signed-off-by: Hideyuki Yamashita <yamashita.hideyuki@po.ntt-tx.co.jp>
> Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
> Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>
> ---
>  drivers/net/vhost/rte_eth_vhost.c | 1 -
>  1 file changed, 1 deletion(-)
> 
> diff --git a/drivers/net/vhost/rte_eth_vhost.c b/drivers/net/vhost/rte_eth_vhost.c
> index 42bdfcbd5..b2cda0483 100644
> --- a/drivers/net/vhost/rte_eth_vhost.c
> +++ b/drivers/net/vhost/rte_eth_vhost.c
> @@ -1001,5 +1001,4 @@ eth_dev_close(struct rte_eth_dev *dev)
>  			rte_free(dev->data->tx_queues[i]);
>  
> -	rte_free(dev->data->mac_addrs);
>  	free(internal->dev_name);
>  	free(internal->iface_name);
> -- 
> 2.19.0
> 
> ---
>   Diff of the applied patch vs upstream commit (please double-check if non-empty:
> ---
> --- -	2019-01-04 13:23:09.004712018 +0000
> +++ 0064-net-vhost-fix-double-free-of-MAC-address.patch	2019-01-04 13:23:07.000000000 +0000
> @@ -1,14 +1,15 @@
> -From 6e3339ca07734e59cd0c24594e3014ab49a0ffc0 Mon Sep 17 00:00:00 2001
> +From 00ffa031bda23be8e1d558d8ed981389628bc543 Mon Sep 17 00:00:00 2001
>  From: Hideyuki Yamashita <yamashita.hideyuki@po.ntt-tx.co.jp>
>  Date: Wed, 19 Dec 2018 13:37:18 +0900
>  Subject: [PATCH] net/vhost: fix double free of MAC address
>  
> +[ upstream commit 6e3339ca07734e59cd0c24594e3014ab49a0ffc0 ]
> +
>  The common data freeing has been moved to rte_eth_dev_release_port(),
>  so freeing mac_addrs like this in eth_dev_close() is unnecessary and
>  will cause double free.
>  
>  Fixes: e16adf08e54d ("ethdev: free all common data when releasing port")
> -Cc: stable@dpdk.org
>  
>  Signed-off-by: Hideyuki Yamashita <yamashita.hideyuki@po.ntt-tx.co.jp>
>  Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>

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

* Re: [dpdk-stable] patch 'net/vhost: fix double free of MAC address' has been queued to LTS release 18.11.1
  2019-01-07  0:04   ` Hideyuki Yamashita
@ 2019-01-07 10:23     ` Kevin Traynor
  2019-01-09  7:39       ` Hideyuki Yamashita
  0 siblings, 1 reply; 82+ messages in thread
From: Kevin Traynor @ 2019-01-07 10:23 UTC (permalink / raw)
  To: Hideyuki Yamashita; +Cc: Yasufumi Ogawa, Tiwei Bie, dpdk stable

On 01/07/2019 12:04 AM, Hideyuki Yamashita wrote:
> Hello Kevin,
> 

Hi Hideyuki,

> Thanks for your answering me.
> 
> I understand that now my patch is queued to LTS 18.11.1.
> 
> I would like to ask general rules which kind of patch is queued
> to LTS and which is not.
> (If I CCed stable@dpdk.org when I submmit patch, it is automatically 
> queued? If that is true then how (or where) can I watch the status
> of my patch?)
> 

In short yes with 'Cc: stable@dpdk.org' tag, and a relevant 'Fixes:..'
tag. See fuller answer here:
http://doc.dpdk.org/guides/contributing/stable.html#what-changes-should-be-backported

Status is through emails like this one, and a summary email before
release. e.g for 18.08
https://mails.dpdk.org/archives/stable/2018-December/011828.html

Kevin.

> The reason why I ask this is that from user perspective
> I want as much patches be queued to LTS so that we can 
> use LTS as stable one.
> 

Yes, I agree :-)

> Thanks!
> 
> BR,
> Hideyuki Yamashita
> NTT TechnoCross
> 
>> Hi,
>>
>> FYI, your patch has been queued to LTS release 18.11.1
>>
>> Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
>> It will be pushed if I get no objections before 01/11/19. 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.
>>
>> Thanks.
>>
>> Kevin Traynor
>>
>> ---
>> From 00ffa031bda23be8e1d558d8ed981389628bc543 Mon Sep 17 00:00:00 2001
>> From: Hideyuki Yamashita <yamashita.hideyuki@po.ntt-tx.co.jp>
>> Date: Wed, 19 Dec 2018 13:37:18 +0900
>> Subject: [PATCH] net/vhost: fix double free of MAC address
>>
>> [ upstream commit 6e3339ca07734e59cd0c24594e3014ab49a0ffc0 ]
>>
>> The common data freeing has been moved to rte_eth_dev_release_port(),
>> so freeing mac_addrs like this in eth_dev_close() is unnecessary and
>> will cause double free.
>>
>> Fixes: e16adf08e54d ("ethdev: free all common data when releasing port")
>>
>> Signed-off-by: Hideyuki Yamashita <yamashita.hideyuki@po.ntt-tx.co.jp>
>> Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
>> Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>
>> ---
>>  drivers/net/vhost/rte_eth_vhost.c | 1 -
>>  1 file changed, 1 deletion(-)
>>
>> diff --git a/drivers/net/vhost/rte_eth_vhost.c b/drivers/net/vhost/rte_eth_vhost.c
>> index 42bdfcbd5..b2cda0483 100644
>> --- a/drivers/net/vhost/rte_eth_vhost.c
>> +++ b/drivers/net/vhost/rte_eth_vhost.c
>> @@ -1001,5 +1001,4 @@ eth_dev_close(struct rte_eth_dev *dev)
>>  			rte_free(dev->data->tx_queues[i]);
>>  
>> -	rte_free(dev->data->mac_addrs);
>>  	free(internal->dev_name);
>>  	free(internal->iface_name);
>> -- 
>> 2.19.0
>>
>> ---
>>   Diff of the applied patch vs upstream commit (please double-check if non-empty:
>> ---
>> --- -	2019-01-04 13:23:09.004712018 <sip:09004712018> +0000
>> +++ 0064-net-vhost-fix-double-free-of-MAC-address.patch	2019-01-04 13:23:07.000000000 <sip:07000000000> +0000
>> @@ -1,14 +1,15 @@
>> -From 6e3339ca07734e59cd0c24594e3014ab49a0ffc0 Mon Sep 17 00:00:00 2001
>> +From 00ffa031bda23be8e1d558d8ed981389628bc543 Mon Sep 17 00:00:00 2001
>>  From: Hideyuki Yamashita <yamashita.hideyuki@po.ntt-tx.co.jp>
>>  Date: Wed, 19 Dec 2018 13:37:18 +0900
>>  Subject: [PATCH] net/vhost: fix double free of MAC address
>>  
>> +[ upstream commit 6e3339ca07734e59cd0c24594e3014ab49a0ffc0 ]
>> +
>>  The common data freeing has been moved to rte_eth_dev_release_port(),
>>  so freeing mac_addrs like this in eth_dev_close() is unnecessary and
>>  will cause double free.
>>  
>>  Fixes: e16adf08e54d ("ethdev: free all common data when releasing port")
>> -Cc: stable@dpdk.org
>>  
>>  Signed-off-by: Hideyuki Yamashita <yamashita.hideyuki@po.ntt-tx.co.jp>
>>  Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
> 
> 

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

* Re: [dpdk-stable] patch 'eal: clean up unused files on initialization' has been queued to LTS release 18.11.1
  2019-01-04 13:23 ` [dpdk-stable] patch 'eal: clean up unused files on initialization' " Kevin Traynor
@ 2019-01-08 16:53   ` Burakov, Anatoly
  2019-01-08 18:09     ` Kevin Traynor
  0 siblings, 1 reply; 82+ messages in thread
From: Burakov, Anatoly @ 2019-01-08 16:53 UTC (permalink / raw)
  To: Kevin Traynor; +Cc: Varghese, Vipin, dpdk stable

FYI,

There's an issue with this patch on FreeBSD that I'm still investigating. I'm hoping to have a fix by tomorrow EOD.

Thanks,
Anatoly


> -----Original Message-----
> From: Kevin Traynor [mailto:ktraynor@redhat.com]
> Sent: Friday, January 4, 2019 1:24 PM
> To: Burakov, Anatoly <anatoly.burakov@intel.com>
> Cc: Varghese, Vipin <vipin.varghese@intel.com>; dpdk stable
> <stable@dpdk.org>
> Subject: patch 'eal: clean up unused files on initialization' has been queued to
> LTS release 18.11.1
> 
> Hi,
> 
> FYI, your patch has been queued to LTS release 18.11.1
> 
> Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
> It will be pushed if I get no objections before 01/11/19. 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.
> 
> Thanks.
> 
> Kevin Traynor
> 
> ---
> From 8c95205c36c6872e2a96a70bd0044d91cbe1792a Mon Sep 17 00:00:00
> 2001
> From: Anatoly Burakov <anatoly.burakov@intel.com>
> Date: Tue, 13 Nov 2018 15:54:44 +0000
> Subject: [PATCH] eal: clean up unused files on initialization
> 
> [ upstream commit 0a529578f162df8b16e4eb7423e55570f3d13c97 ]
> 
> When creating process data structures, EAL will create many files in EAL
> runtime directory. Because we allow multiple secondary processes to run,
> each secondary process gets their own unique file. With many secondary
> processes running and exiting on the system, runtime directory will, over
> time, create enormous amounts of sockets, fbarray files and other stuff that
> just sits there unused because the process that allocated it has died a long
> time ago. This may lead to exhaustion of disk (or RAM) space in the runtime
> directory.
> 
> Fix this by removing every unlocked file at initialization that matches either
> socket or fbarray naming convention. We cannot be sure of any other files,
> so we'll leave them alone. Also, remove similar code from mp socket code.
> 
> We do it at the end of init, rather than at the beginning, because secondary
> process will use primary process' data structures even if the primary itself has
> died, and we don't want to remove those before we lock them.
> 
> Bugzilla ID: 106
> 
> Reported-by: Vipin Varghese <vipin.varghese@intel.com>
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> ---
>  lib/librte_eal/bsdapp/eal/eal.c         | 100 ++++++++++++++++++++++++
>  lib/librte_eal/common/eal_common_proc.c |  30 -------
>  lib/librte_eal/common/eal_filesystem.h  |   3 +
>  lib/librte_eal/linuxapp/eal/eal.c       |  99 +++++++++++++++++++++++
>  4 files changed, 202 insertions(+), 30 deletions(-)
> 
> diff --git a/lib/librte_eal/bsdapp/eal/eal.c b/lib/librte_eal/bsdapp/eal/eal.c
> index b8152a75c..41ddb5a22 100644
> --- a/lib/librte_eal/bsdapp/eal/eal.c
> +++ b/lib/librte_eal/bsdapp/eal/eal.c
> @@ -4,4 +4,6 @@
>   */
> 
> +#include <dirent.h>
> +#include <fnmatch.h>
>  #include <stdio.h>
>  #include <stdlib.h>
> @@ -142,4 +144,90 @@ eal_create_runtime_dir(void)  }
> 
> +int
> +eal_clean_runtime_dir(void)
> +{
> +	DIR *dir;
> +	struct dirent *dirent;
> +	int dir_fd, fd, lck_result;
> +	static const char * const filters[] = {
> +		"fbarray_*",
> +		"mp_socket_*"
> +	};
> +
> +	/* open directory */
> +	dir = opendir(runtime_dir);
> +	if (!dir) {
> +		RTE_LOG(ERR, EAL, "Unable to open runtime directory
> %s\n",
> +				runtime_dir);
> +		goto error;
> +	}
> +	dir_fd = dirfd(dir);
> +
> +	/* lock the directory before doing anything, to avoid races */
> +	if (flock(dir_fd, LOCK_EX) < 0) {
> +		RTE_LOG(ERR, EAL, "Unable to lock runtime directory %s\n",
> +			runtime_dir);
> +		goto error;
> +	}
> +
> +	dirent = readdir(dir);
> +	if (!dirent) {
> +		RTE_LOG(ERR, EAL, "Unable to read runtime directory %s\n",
> +				runtime_dir);
> +		goto error;
> +	}
> +
> +	while (dirent != NULL) {
> +		unsigned int f_idx;
> +		bool skip = true;
> +
> +		/* skip files that don't match the patterns */
> +		for (f_idx = 0; f_idx < RTE_DIM(filters); f_idx++) {
> +			const char *filter = filters[f_idx];
> +
> +			if (fnmatch(filter, dirent->d_name, 0) == 0) {
> +				skip = false;
> +				break;
> +			}
> +		}
> +		if (skip) {
> +			dirent = readdir(dir);
> +			continue;
> +		}
> +
> +		/* try and lock the file */
> +		fd = openat(dir_fd, dirent->d_name, O_RDONLY);
> +
> +		/* skip to next file */
> +		if (fd == -1) {
> +			dirent = readdir(dir);
> +			continue;
> +		}
> +
> +		/* non-blocking lock */
> +		lck_result = flock(fd, LOCK_EX | LOCK_NB);
> +
> +		/* if lock succeeds, remove the file */
> +		if (lck_result != -1)
> +			unlinkat(dir_fd, dirent->d_name, 0);
> +		close(fd);
> +		dirent = readdir(dir);
> +	}
> +
> +	/* closedir closes dir_fd and drops the lock */
> +	closedir(dir);
> +	return 0;
> +
> +error:
> +	if (dir)
> +		closedir(dir);
> +
> +	RTE_LOG(ERR, EAL, "Error while clearing runtime dir: %s\n",
> +		strerror(errno));
> +
> +	return -1;
> +}
> +
> +
>  const char *
>  rte_eal_get_runtime_dir(void)
> @@ -808,4 +896,16 @@ rte_eal_init(int argc, char **argv)
>  	}
> 
> +	/*
> +	 * Clean up unused files in runtime directory. We do this at the end of
> +	 * init and not at the beginning because we want to clean stuff up
> +	 * whether we are primary or secondary process, but we cannot
> remove
> +	 * primary process' files because secondary should be able to run
> even
> +	 * if primary process is dead.
> +	 */
> +	if (eal_clean_runtime_dir() < 0) {
> +		rte_eal_init_alert("Cannot clear runtime directory\n");
> +		return -1;
> +	}
> +
>  	rte_eal_mcfg_complete();
> 
> diff --git a/lib/librte_eal/common/eal_common_proc.c
> b/lib/librte_eal/common/eal_common_proc.c
> index 1c3f09aad..6b876590a 100644
> --- a/lib/librte_eal/common/eal_common_proc.c
> +++ b/lib/librte_eal/common/eal_common_proc.c
> @@ -543,27 +543,4 @@ open_socket_fd(void)  }
> 
> -static int
> -unlink_sockets(const char *filter)
> -{
> -	int dir_fd;
> -	DIR *mp_dir;
> -	struct dirent *ent;
> -
> -	mp_dir = opendir(mp_dir_path);
> -	if (!mp_dir) {
> -		RTE_LOG(ERR, EAL, "Unable to open directory %s\n",
> mp_dir_path);
> -		return -1;
> -	}
> -	dir_fd = dirfd(mp_dir);
> -
> -	while ((ent = readdir(mp_dir))) {
> -		if (fnmatch(filter, ent->d_name, 0) == 0)
> -			unlinkat(dir_fd, ent->d_name, 0);
> -	}
> -
> -	closedir(mp_dir);
> -	return 0;
> -}
> -
>  int
>  rte_mp_channel_init(void)
> @@ -604,11 +581,4 @@ rte_mp_channel_init(void)
>  	}
> 
> -	if (rte_eal_process_type() == RTE_PROC_PRIMARY &&
> -			unlink_sockets(mp_filter)) {
> -		RTE_LOG(ERR, EAL, "failed to unlink mp sockets\n");
> -		close(dir_fd);
> -		return -1;
> -	}
> -
>  	if (open_socket_fd() < 0) {
>  		close(dir_fd);
> diff --git a/lib/librte_eal/common/eal_filesystem.h
> b/lib/librte_eal/common/eal_filesystem.h
> index 6e0331fdb..64a028db7 100644
> --- a/lib/librte_eal/common/eal_filesystem.h
> +++ b/lib/librte_eal/common/eal_filesystem.h
> @@ -26,4 +26,7 @@ int
>  eal_create_runtime_dir(void);
> 
> +int
> +eal_clean_runtime_dir(void);
> +
>  #define RUNTIME_CONFIG_FNAME "config"
>  static inline const char *
> diff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c
> index 361744d40..d252c8591 100644
> --- a/lib/librte_eal/linuxapp/eal/eal.c
> +++ b/lib/librte_eal/linuxapp/eal/eal.c
> @@ -14,5 +14,7 @@
>  #include <getopt.h>
>  #include <sys/file.h>
> +#include <dirent.h>
>  #include <fcntl.h>
> +#include <fnmatch.h>
>  #include <stddef.h>
>  #include <errno.h>
> @@ -150,4 +152,89 @@ eal_create_runtime_dir(void)  }
> 
> +int
> +eal_clean_runtime_dir(void)
> +{
> +	DIR *dir;
> +	struct dirent *dirent;
> +	int dir_fd, fd, lck_result;
> +	static const char * const filters[] = {
> +		"fbarray_*",
> +		"mp_socket_*"
> +	};
> +
> +	/* open directory */
> +	dir = opendir(runtime_dir);
> +	if (!dir) {
> +		RTE_LOG(ERR, EAL, "Unable to open runtime directory
> %s\n",
> +				runtime_dir);
> +		goto error;
> +	}
> +	dir_fd = dirfd(dir);
> +
> +	/* lock the directory before doing anything, to avoid races */
> +	if (flock(dir_fd, LOCK_EX) < 0) {
> +		RTE_LOG(ERR, EAL, "Unable to lock runtime directory %s\n",
> +			runtime_dir);
> +		goto error;
> +	}
> +
> +	dirent = readdir(dir);
> +	if (!dirent) {
> +		RTE_LOG(ERR, EAL, "Unable to read runtime directory %s\n",
> +				runtime_dir);
> +		goto error;
> +	}
> +
> +	while (dirent != NULL) {
> +		unsigned int f_idx;
> +		bool skip = true;
> +
> +		/* skip files that don't match the patterns */
> +		for (f_idx = 0; f_idx < RTE_DIM(filters); f_idx++) {
> +			const char *filter = filters[f_idx];
> +
> +			if (fnmatch(filter, dirent->d_name, 0) == 0) {
> +				skip = false;
> +				break;
> +			}
> +		}
> +		if (skip) {
> +			dirent = readdir(dir);
> +			continue;
> +		}
> +
> +		/* try and lock the file */
> +		fd = openat(dir_fd, dirent->d_name, O_RDONLY);
> +
> +		/* skip to next file */
> +		if (fd == -1) {
> +			dirent = readdir(dir);
> +			continue;
> +		}
> +
> +		/* non-blocking lock */
> +		lck_result = flock(fd, LOCK_EX | LOCK_NB);
> +
> +		/* if lock succeeds, remove the file */
> +		if (lck_result != -1)
> +			unlinkat(dir_fd, dirent->d_name, 0);
> +		close(fd);
> +		dirent = readdir(dir);
> +	}
> +
> +	/* closedir closes dir_fd and drops the lock */
> +	closedir(dir);
> +	return 0;
> +
> +error:
> +	if (dir)
> +		closedir(dir);
> +
> +	RTE_LOG(ERR, EAL, "Error while clearing runtime dir: %s\n",
> +		strerror(errno));
> +
> +	return -1;
> +}
> +
>  const char *
>  rte_eal_get_runtime_dir(void)
> @@ -1097,4 +1184,16 @@ rte_eal_init(int argc, char **argv)
>  	}
> 
> +	/*
> +	 * Clean up unused files in runtime directory. We do this at the end of
> +	 * init and not at the beginning because we want to clean stuff up
> +	 * whether we are primary or secondary process, but we cannot
> remove
> +	 * primary process' files because secondary should be able to run
> even
> +	 * if primary process is dead.
> +	 */
> +	if (eal_clean_runtime_dir() < 0) {
> +		rte_eal_init_alert("Cannot clear runtime directory\n");
> +		return -1;
> +	}
> +
>  	rte_eal_mcfg_complete();
> 
> --
> 2.19.0
> 
> ---
>   Diff of the applied patch vs upstream commit (please double-check if non-
> empty:
> ---
> --- -	2019-01-04 13:23:07.672255523 +0000
> +++ 0009-eal-clean-up-unused-files-on-initialization.patch	2019-01-04
> 13:23:07.000000000 +0000
> @@ -1,8 +1,10 @@
> -From 0a529578f162df8b16e4eb7423e55570f3d13c97 Mon Sep 17 00:00:00
> 2001
> +From 8c95205c36c6872e2a96a70bd0044d91cbe1792a Mon Sep 17 00:00:00
> 2001
>  From: Anatoly Burakov <anatoly.burakov@intel.com>
>  Date: Tue, 13 Nov 2018 15:54:44 +0000
>  Subject: [PATCH] eal: clean up unused files on initialization
> 
> +[ upstream commit 0a529578f162df8b16e4eb7423e55570f3d13c97 ]
> +
>  When creating process data structures, EAL will create many files  in EAL
> runtime directory. Because we allow multiple secondary  processes to run,
> each secondary process gets their own unique @@ -24,7 +26,6 @@  before
> we lock them.
> 
>  Bugzilla ID: 106
> -Cc: stable@dpdk.org
> 
>  Reported-by: Vipin Varghese <vipin.varghese@intel.com>
>  Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>

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

* Re: [dpdk-stable] patch 'eal: clean up unused files on initialization' has been queued to LTS release 18.11.1
  2019-01-08 16:53   ` Burakov, Anatoly
@ 2019-01-08 18:09     ` Kevin Traynor
  2019-01-10 11:38       ` Burakov, Anatoly
  0 siblings, 1 reply; 82+ messages in thread
From: Kevin Traynor @ 2019-01-08 18:09 UTC (permalink / raw)
  To: Burakov, Anatoly; +Cc: Varghese, Vipin, dpdk stable

On 01/08/2019 04:53 PM, Burakov, Anatoly wrote:
> FYI,
> 
> There's an issue with this patch on FreeBSD that I'm still investigating. I'm hoping to have a fix by tomorrow EOD.
> 

Thanks Anatoly. In that case, I'll hold off applying until the fix is
also ready for backport also.

Kevin.

> Thanks,
> Anatoly
> 
> 
>> -----Original Message-----
>> From: Kevin Traynor [mailto:ktraynor@redhat.com]
>> Sent: Friday, January 4, 2019 1:24 PM
>> To: Burakov, Anatoly <anatoly.burakov@intel.com>
>> Cc: Varghese, Vipin <vipin.varghese@intel.com>; dpdk stable
>> <stable@dpdk.org>
>> Subject: patch 'eal: clean up unused files on initialization' has been queued to
>> LTS release 18.11.1
>>
>> Hi,
>>
>> FYI, your patch has been queued to LTS release 18.11.1
>>
>> Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
>> It will be pushed if I get no objections before 01/11/19. 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.
>>
>> Thanks.
>>
>> Kevin Traynor
>>
>> ---
>> From 8c95205c36c6872e2a96a70bd0044d91cbe1792a Mon Sep 17 00:00:00
>> 2001
>> From: Anatoly Burakov <anatoly.burakov@intel.com>
>> Date: Tue, 13 Nov 2018 15:54:44 +0000
>> Subject: [PATCH] eal: clean up unused files on initialization
>>
>> [ upstream commit 0a529578f162df8b16e4eb7423e55570f3d13c97 ]
>>
>> When creating process data structures, EAL will create many files in EAL
>> runtime directory. Because we allow multiple secondary processes to run,
>> each secondary process gets their own unique file. With many secondary
>> processes running and exiting on the system, runtime directory will, over
>> time, create enormous amounts of sockets, fbarray files and other stuff that
>> just sits there unused because the process that allocated it has died a long
>> time ago. This may lead to exhaustion of disk (or RAM) space in the runtime
>> directory.
>>
>> Fix this by removing every unlocked file at initialization that matches either
>> socket or fbarray naming convention. We cannot be sure of any other files,
>> so we'll leave them alone. Also, remove similar code from mp socket code.
>>
>> We do it at the end of init, rather than at the beginning, because secondary
>> process will use primary process' data structures even if the primary itself has
>> died, and we don't want to remove those before we lock them.
>>
>> Bugzilla ID: 106
>>
>> Reported-by: Vipin Varghese <vipin.varghese@intel.com>
>> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
>> ---
>>  lib/librte_eal/bsdapp/eal/eal.c         | 100 ++++++++++++++++++++++++
>>  lib/librte_eal/common/eal_common_proc.c |  30 -------
>>  lib/librte_eal/common/eal_filesystem.h  |   3 +
>>  lib/librte_eal/linuxapp/eal/eal.c       |  99 +++++++++++++++++++++++
>>  4 files changed, 202 insertions(+), 30 deletions(-)
>>
>> diff --git a/lib/librte_eal/bsdapp/eal/eal.c b/lib/librte_eal/bsdapp/eal/eal.c
>> index b8152a75c..41ddb5a22 100644
>> --- a/lib/librte_eal/bsdapp/eal/eal.c
>> +++ b/lib/librte_eal/bsdapp/eal/eal.c
>> @@ -4,4 +4,6 @@
>>   */
>>
>> +#include <dirent.h>
>> +#include <fnmatch.h>
>>  #include <stdio.h>
>>  #include <stdlib.h>
>> @@ -142,4 +144,90 @@ eal_create_runtime_dir(void)  }
>>
>> +int
>> +eal_clean_runtime_dir(void)
>> +{
>> +	DIR *dir;
>> +	struct dirent *dirent;
>> +	int dir_fd, fd, lck_result;
>> +	static const char * const filters[] = {
>> +		"fbarray_*",
>> +		"mp_socket_*"
>> +	};
>> +
>> +	/* open directory */
>> +	dir = opendir(runtime_dir);
>> +	if (!dir) {
>> +		RTE_LOG(ERR, EAL, "Unable to open runtime directory
>> %s\n",
>> +				runtime_dir);
>> +		goto error;
>> +	}
>> +	dir_fd = dirfd(dir);
>> +
>> +	/* lock the directory before doing anything, to avoid races */
>> +	if (flock(dir_fd, LOCK_EX) < 0) {
>> +		RTE_LOG(ERR, EAL, "Unable to lock runtime directory %s\n",
>> +			runtime_dir);
>> +		goto error;
>> +	}
>> +
>> +	dirent = readdir(dir);
>> +	if (!dirent) {
>> +		RTE_LOG(ERR, EAL, "Unable to read runtime directory %s\n",
>> +				runtime_dir);
>> +		goto error;
>> +	}
>> +
>> +	while (dirent != NULL) {
>> +		unsigned int f_idx;
>> +		bool skip = true;
>> +
>> +		/* skip files that don't match the patterns */
>> +		for (f_idx = 0; f_idx < RTE_DIM(filters); f_idx++) {
>> +			const char *filter = filters[f_idx];
>> +
>> +			if (fnmatch(filter, dirent->d_name, 0) == 0) {
>> +				skip = false;
>> +				break;
>> +			}
>> +		}
>> +		if (skip) {
>> +			dirent = readdir(dir);
>> +			continue;
>> +		}
>> +
>> +		/* try and lock the file */
>> +		fd = openat(dir_fd, dirent->d_name, O_RDONLY);
>> +
>> +		/* skip to next file */
>> +		if (fd == -1) {
>> +			dirent = readdir(dir);
>> +			continue;
>> +		}
>> +
>> +		/* non-blocking lock */
>> +		lck_result = flock(fd, LOCK_EX | LOCK_NB);
>> +
>> +		/* if lock succeeds, remove the file */
>> +		if (lck_result != -1)
>> +			unlinkat(dir_fd, dirent->d_name, 0);
>> +		close(fd);
>> +		dirent = readdir(dir);
>> +	}
>> +
>> +	/* closedir closes dir_fd and drops the lock */
>> +	closedir(dir);
>> +	return 0;
>> +
>> +error:
>> +	if (dir)
>> +		closedir(dir);
>> +
>> +	RTE_LOG(ERR, EAL, "Error while clearing runtime dir: %s\n",
>> +		strerror(errno));
>> +
>> +	return -1;
>> +}
>> +
>> +
>>  const char *
>>  rte_eal_get_runtime_dir(void)
>> @@ -808,4 +896,16 @@ rte_eal_init(int argc, char **argv)
>>  	}
>>
>> +	/*
>> +	 * Clean up unused files in runtime directory. We do this at the end of
>> +	 * init and not at the beginning because we want to clean stuff up
>> +	 * whether we are primary or secondary process, but we cannot
>> remove
>> +	 * primary process' files because secondary should be able to run
>> even
>> +	 * if primary process is dead.
>> +	 */
>> +	if (eal_clean_runtime_dir() < 0) {
>> +		rte_eal_init_alert("Cannot clear runtime directory\n");
>> +		return -1;
>> +	}
>> +
>>  	rte_eal_mcfg_complete();
>>
>> diff --git a/lib/librte_eal/common/eal_common_proc.c
>> b/lib/librte_eal/common/eal_common_proc.c
>> index 1c3f09aad..6b876590a 100644
>> --- a/lib/librte_eal/common/eal_common_proc.c
>> +++ b/lib/librte_eal/common/eal_common_proc.c
>> @@ -543,27 +543,4 @@ open_socket_fd(void)  }
>>
>> -static int
>> -unlink_sockets(const char *filter)
>> -{
>> -	int dir_fd;
>> -	DIR *mp_dir;
>> -	struct dirent *ent;
>> -
>> -	mp_dir = opendir(mp_dir_path);
>> -	if (!mp_dir) {
>> -		RTE_LOG(ERR, EAL, "Unable to open directory %s\n",
>> mp_dir_path);
>> -		return -1;
>> -	}
>> -	dir_fd = dirfd(mp_dir);
>> -
>> -	while ((ent = readdir(mp_dir))) {
>> -		if (fnmatch(filter, ent->d_name, 0) == 0)
>> -			unlinkat(dir_fd, ent->d_name, 0);
>> -	}
>> -
>> -	closedir(mp_dir);
>> -	return 0;
>> -}
>> -
>>  int
>>  rte_mp_channel_init(void)
>> @@ -604,11 +581,4 @@ rte_mp_channel_init(void)
>>  	}
>>
>> -	if (rte_eal_process_type() == RTE_PROC_PRIMARY &&
>> -			unlink_sockets(mp_filter)) {
>> -		RTE_LOG(ERR, EAL, "failed to unlink mp sockets\n");
>> -		close(dir_fd);
>> -		return -1;
>> -	}
>> -
>>  	if (open_socket_fd() < 0) {
>>  		close(dir_fd);
>> diff --git a/lib/librte_eal/common/eal_filesystem.h
>> b/lib/librte_eal/common/eal_filesystem.h
>> index 6e0331fdb..64a028db7 100644
>> --- a/lib/librte_eal/common/eal_filesystem.h
>> +++ b/lib/librte_eal/common/eal_filesystem.h
>> @@ -26,4 +26,7 @@ int
>>  eal_create_runtime_dir(void);
>>
>> +int
>> +eal_clean_runtime_dir(void);
>> +
>>  #define RUNTIME_CONFIG_FNAME "config"
>>  static inline const char *
>> diff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c
>> index 361744d40..d252c8591 100644
>> --- a/lib/librte_eal/linuxapp/eal/eal.c
>> +++ b/lib/librte_eal/linuxapp/eal/eal.c
>> @@ -14,5 +14,7 @@
>>  #include <getopt.h>
>>  #include <sys/file.h>
>> +#include <dirent.h>
>>  #include <fcntl.h>
>> +#include <fnmatch.h>
>>  #include <stddef.h>
>>  #include <errno.h>
>> @@ -150,4 +152,89 @@ eal_create_runtime_dir(void)  }
>>
>> +int
>> +eal_clean_runtime_dir(void)
>> +{
>> +	DIR *dir;
>> +	struct dirent *dirent;
>> +	int dir_fd, fd, lck_result;
>> +	static const char * const filters[] = {
>> +		"fbarray_*",
>> +		"mp_socket_*"
>> +	};
>> +
>> +	/* open directory */
>> +	dir = opendir(runtime_dir);
>> +	if (!dir) {
>> +		RTE_LOG(ERR, EAL, "Unable to open runtime directory
>> %s\n",
>> +				runtime_dir);
>> +		goto error;
>> +	}
>> +	dir_fd = dirfd(dir);
>> +
>> +	/* lock the directory before doing anything, to avoid races */
>> +	if (flock(dir_fd, LOCK_EX) < 0) {
>> +		RTE_LOG(ERR, EAL, "Unable to lock runtime directory %s\n",
>> +			runtime_dir);
>> +		goto error;
>> +	}
>> +
>> +	dirent = readdir(dir);
>> +	if (!dirent) {
>> +		RTE_LOG(ERR, EAL, "Unable to read runtime directory %s\n",
>> +				runtime_dir);
>> +		goto error;
>> +	}
>> +
>> +	while (dirent != NULL) {
>> +		unsigned int f_idx;
>> +		bool skip = true;
>> +
>> +		/* skip files that don't match the patterns */
>> +		for (f_idx = 0; f_idx < RTE_DIM(filters); f_idx++) {
>> +			const char *filter = filters[f_idx];
>> +
>> +			if (fnmatch(filter, dirent->d_name, 0) == 0) {
>> +				skip = false;
>> +				break;
>> +			}
>> +		}
>> +		if (skip) {
>> +			dirent = readdir(dir);
>> +			continue;
>> +		}
>> +
>> +		/* try and lock the file */
>> +		fd = openat(dir_fd, dirent->d_name, O_RDONLY);
>> +
>> +		/* skip to next file */
>> +		if (fd == -1) {
>> +			dirent = readdir(dir);
>> +			continue;
>> +		}
>> +
>> +		/* non-blocking lock */
>> +		lck_result = flock(fd, LOCK_EX | LOCK_NB);
>> +
>> +		/* if lock succeeds, remove the file */
>> +		if (lck_result != -1)
>> +			unlinkat(dir_fd, dirent->d_name, 0);
>> +		close(fd);
>> +		dirent = readdir(dir);
>> +	}
>> +
>> +	/* closedir closes dir_fd and drops the lock */
>> +	closedir(dir);
>> +	return 0;
>> +
>> +error:
>> +	if (dir)
>> +		closedir(dir);
>> +
>> +	RTE_LOG(ERR, EAL, "Error while clearing runtime dir: %s\n",
>> +		strerror(errno));
>> +
>> +	return -1;
>> +}
>> +
>>  const char *
>>  rte_eal_get_runtime_dir(void)
>> @@ -1097,4 +1184,16 @@ rte_eal_init(int argc, char **argv)
>>  	}
>>
>> +	/*
>> +	 * Clean up unused files in runtime directory. We do this at the end of
>> +	 * init and not at the beginning because we want to clean stuff up
>> +	 * whether we are primary or secondary process, but we cannot
>> remove
>> +	 * primary process' files because secondary should be able to run
>> even
>> +	 * if primary process is dead.
>> +	 */
>> +	if (eal_clean_runtime_dir() < 0) {
>> +		rte_eal_init_alert("Cannot clear runtime directory\n");
>> +		return -1;
>> +	}
>> +
>>  	rte_eal_mcfg_complete();
>>
>> --
>> 2.19.0
>>
>> ---
>>   Diff of the applied patch vs upstream commit (please double-check if non-
>> empty:
>> ---
>> --- -	2019-01-04 13:23:07.672255523 <sip:07672255523> +0000
>> +++ 0009-eal-clean-up-unused-files-on-initialization.patch	2019-01-04
>> 13:23:07.000000000 <sip:07000000000> +0000
>> @@ -1,8 +1,10 @@
>> -From 0a529578f162df8b16e4eb7423e55570f3d13c97 Mon Sep 17 00:00:00
>> 2001
>> +From 8c95205c36c6872e2a96a70bd0044d91cbe1792a Mon Sep 17 00:00:00
>> 2001
>>  From: Anatoly Burakov <anatoly.burakov@intel.com>
>>  Date: Tue, 13 Nov 2018 15:54:44 +0000
>>  Subject: [PATCH] eal: clean up unused files on initialization
>>
>> +[ upstream commit 0a529578f162df8b16e4eb7423e55570f3d13c97 ]
>> +
>>  When creating process data structures, EAL will create many files  in EAL
>> runtime directory. Because we allow multiple secondary  processes to run,
>> each secondary process gets their own unique @@ -24,7 +26,6 @@  before
>> we lock them.
>>
>>  Bugzilla ID: 106
>> -Cc: stable@dpdk.org
>>
>>  Reported-by: Vipin Varghese <vipin.varghese@intel.com>
>>  Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>

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

* Re: [dpdk-stable] patch 'net/vhost: fix double free of MAC address' has been queued to LTS release 18.11.1
  2019-01-07 10:23     ` Kevin Traynor
@ 2019-01-09  7:39       ` Hideyuki Yamashita
  2019-01-09 11:04         ` Kevin Traynor
  0 siblings, 1 reply; 82+ messages in thread
From: Hideyuki Yamashita @ 2019-01-09  7:39 UTC (permalink / raw)
  To: Kevin Traynor; +Cc: Yasufumi Ogawa, Tiwei Bie, dpdk stable

Hello Kevin,

Thanks for your answering.
Basic questions to ask.

Q1. When 18.11.1 will be released?
11st January?

Q2. Let us assume that I submit another patch
to dev@dpdk.org CCed stable@dpdk.org.
Target stable release version is 18.11.2?
If yes, when the above release will be available?
Where can I get such a schedule?

Note that so far I did not subscribe to stable mailing list.
(I just subscribed that)

Thanks!

BR,
Hideyuki Yamashita
NTT TechnoCross

> On 01/07/2019 12:04 AM, Hideyuki Yamashita wrote:
> > Hello Kevin,
> > 
> 
> Hi Hideyuki,
> 
> > Thanks for your answering me.
> > 
> > I understand that now my patch is queued to LTS 18.11.1.
> > 
> > I would like to ask general rules which kind of patch is queued
> > to LTS and which is not.
> > (If I CCed stable@dpdk.org when I submmit patch, it is automatically 
> > queued? If that is true then how (or where) can I watch the status
> > of my patch?)
> > 
> 
> In short yes with 'Cc: stable@dpdk.org' tag, and a relevant 'Fixes:..'
> tag. See fuller answer here:
> http://doc.dpdk.org/guides/contributing/stable.html#what-changes-should-be-backported
> 
> Status is through emails like this one, and a summary email before
> release. e.g for 18.08
> https://mails.dpdk.org/archives/stable/2018-December/011828.html
> 
> Kevin.
> 
> > The reason why I ask this is that from user perspective
> > I want as much patches be queued to LTS so that we can 
> > use LTS as stable one.
> > 
> 
> Yes, I agree :-)
> 
> > Thanks!
> > 
> > BR,
> > Hideyuki Yamashita
> > NTT TechnoCross
> > 
> >> Hi,
> >>
> >> FYI, your patch has been queued to LTS release 18.11.1
> >>
> >> Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
> >> It will be pushed if I get no objections before 01/11/19. 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.
> >>
> >> Thanks.
> >>
> >> Kevin Traynor
> >>
> >> ---
> >> From 00ffa031bda23be8e1d558d8ed981389628bc543 Mon Sep 17 00:00:00 2001
> >> From: Hideyuki Yamashita <yamashita.hideyuki@po.ntt-tx.co.jp>
> >> Date: Wed, 19 Dec 2018 13:37:18 +0900
> >> Subject: [PATCH] net/vhost: fix double free of MAC address
> >>
> >> [ upstream commit 6e3339ca07734e59cd0c24594e3014ab49a0ffc0 ]
> >>
> >> The common data freeing has been moved to rte_eth_dev_release_port(),
> >> so freeing mac_addrs like this in eth_dev_close() is unnecessary and
> >> will cause double free.
> >>
> >> Fixes: e16adf08e54d ("ethdev: free all common data when releasing port")
> >>
> >> Signed-off-by: Hideyuki Yamashita <yamashita.hideyuki@po.ntt-tx.co.jp>
> >> Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
> >> Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>
> >> ---
> >>  drivers/net/vhost/rte_eth_vhost.c | 1 -
> >>  1 file changed, 1 deletion(-)
> >>
> >> diff --git a/drivers/net/vhost/rte_eth_vhost.c b/drivers/net/vhost/rte_eth_vhost.c
> >> index 42bdfcbd5..b2cda0483 100644
> >> --- a/drivers/net/vhost/rte_eth_vhost.c
> >> +++ b/drivers/net/vhost/rte_eth_vhost.c
> >> @@ -1001,5 +1001,4 @@ eth_dev_close(struct rte_eth_dev *dev)
> >>  			rte_free(dev->data->tx_queues[i]);
> >>  
> >> -	rte_free(dev->data->mac_addrs);
> >>  	free(internal->dev_name);
> >>  	free(internal->iface_name);
> >> -- 
> >> 2.19.0
> >>
> >> ---
> >>   Diff of the applied patch vs upstream commit (please double-check if non-empty:
> >> ---
> >> --- -	2019-01-04 13:23:09.004712018 <sip:09004712018> +0000
> >> +++ 0064-net-vhost-fix-double-free-of-MAC-address.patch	2019-01-04 13:23:07.000000000 <sip:07000000000> +0000
> >> @@ -1,14 +1,15 @@
> >> -From 6e3339ca07734e59cd0c24594e3014ab49a0ffc0 Mon Sep 17 00:00:00 2001
> >> +From 00ffa031bda23be8e1d558d8ed981389628bc543 Mon Sep 17 00:00:00 2001
> >>  From: Hideyuki Yamashita <yamashita.hideyuki@po.ntt-tx.co.jp>
> >>  Date: Wed, 19 Dec 2018 13:37:18 +0900
> >>  Subject: [PATCH] net/vhost: fix double free of MAC address
> >>  
> >> +[ upstream commit 6e3339ca07734e59cd0c24594e3014ab49a0ffc0 ]
> >> +
> >>  The common data freeing has been moved to rte_eth_dev_release_port(),
> >>  so freeing mac_addrs like this in eth_dev_close() is unnecessary and
> >>  will cause double free.
> >>  
> >>  Fixes: e16adf08e54d ("ethdev: free all common data when releasing port")
> >> -Cc: stable@dpdk.org
> >>  
> >>  Signed-off-by: Hideyuki Yamashita <yamashita.hideyuki@po.ntt-tx.co.jp>
> >>  Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
> > 
> > 

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

* Re: [dpdk-stable] patch 'net/vhost: fix double free of MAC address' has been queued to LTS release 18.11.1
  2019-01-09  7:39       ` Hideyuki Yamashita
@ 2019-01-09 11:04         ` Kevin Traynor
  0 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-09 11:04 UTC (permalink / raw)
  To: Hideyuki Yamashita; +Cc: Yasufumi Ogawa, Tiwei Bie, dpdk stable

On 01/09/2019 07:39 AM, Hideyuki Yamashita wrote:
> Hello Kevin,
> 
> Thanks for your answering.
> Basic questions to ask.
> 
> Q1. When 18.11.1 will be released?
> 11st January?
> 
Hi,

It will definitely be later than that date. I would like to get the
relevant fixes that are part of DPDK19.02 into 18.11.1 but I will need
to check with the other maintainers about their experience of
synchronizing stable releases with master releases.

It also depends on availability of validation teams. If you are using
DPDK LTS, I would encourage you to test the LTS release candidates and
share your results. It benefits everyone if a bug is caught at that
stage :-)

> Q2. Let us assume that I submit another patch
> to dev@dpdk.org CCed stable@dpdk.org.
> Target stable release version is 18.11.2?
> If yes, when the above release will be available?
> Where can I get such a schedule?
> 

Release cadence is listed here:
http://doc.dpdk.org/guides/contributing/stable.html#lts-release

Kevin.

> Note that so far I did not subscribe to stable mailing list.
> (I just subscribed that)
> 
> Thanks!
> 
> BR,
> Hideyuki Yamashita
> NTT TechnoCross
> 
>> On 01/07/2019 12:04 AM, Hideyuki Yamashita wrote:
>>> Hello Kevin,
>>>
>>
>> Hi Hideyuki,
>>
>>> Thanks for your answering me.
>>>
>>> I understand that now my patch is queued to LTS 18.11.1.
>>>
>>> I would like to ask general rules which kind of patch is queued
>>> to LTS and which is not.
>>> (If I CCed stable@dpdk.org when I submmit patch, it is automatically 
>>> queued? If that is true then how (or where) can I watch the status
>>> of my patch?)
>>>
>>
>> In short yes with 'Cc: stable@dpdk.org' tag, and a relevant 'Fixes:..'
>> tag. See fuller answer here:
>> http://doc.dpdk.org/guides/contributing/stable.html#what-changes-should-be-backported
>>
>> Status is through emails like this one, and a summary email before
>> release. e.g for 18.08
>> https://mails.dpdk.org/archives/stable/2018-December/011828.html
>>
>> Kevin.
>>
>>> The reason why I ask this is that from user perspective
>>> I want as much patches be queued to LTS so that we can 
>>> use LTS as stable one.
>>>
>>
>> Yes, I agree :-)
>>
>>> Thanks!
>>>
>>> BR,
>>> Hideyuki Yamashita
>>> NTT TechnoCross
>>>
>>>> Hi,
>>>>
>>>> FYI, your patch has been queued to LTS release 18.11.1
>>>>
>>>> Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
>>>> It will be pushed if I get no objections before 01/11/19. 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.
>>>>
>>>> Thanks.
>>>>
>>>> Kevin Traynor
>>>>
>>>> ---
>>>> From 00ffa031bda23be8e1d558d8ed981389628bc543 Mon Sep 17 00:00:00 2001
>>>> From: Hideyuki Yamashita <yamashita.hideyuki@po.ntt-tx.co.jp>
>>>> Date: Wed, 19 Dec 2018 13:37:18 +0900
>>>> Subject: [PATCH] net/vhost: fix double free of MAC address
>>>>
>>>> [ upstream commit 6e3339ca07734e59cd0c24594e3014ab49a0ffc0 ]
>>>>
>>>> The common data freeing has been moved to rte_eth_dev_release_port(),
>>>> so freeing mac_addrs like this in eth_dev_close() is unnecessary and
>>>> will cause double free.
>>>>
>>>> Fixes: e16adf08e54d ("ethdev: free all common data when releasing port")
>>>>
>>>> Signed-off-by: Hideyuki Yamashita <yamashita.hideyuki@po.ntt-tx.co.jp>
>>>> Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
>>>> Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>
>>>> ---
>>>>  drivers/net/vhost/rte_eth_vhost.c | 1 -
>>>>  1 file changed, 1 deletion(-)
>>>>
>>>> diff --git a/drivers/net/vhost/rte_eth_vhost.c b/drivers/net/vhost/rte_eth_vhost.c
>>>> index 42bdfcbd5..b2cda0483 100644
>>>> --- a/drivers/net/vhost/rte_eth_vhost.c
>>>> +++ b/drivers/net/vhost/rte_eth_vhost.c
>>>> @@ -1001,5 +1001,4 @@ eth_dev_close(struct rte_eth_dev *dev)
>>>>  			rte_free(dev->data->tx_queues[i]);
>>>>  
>>>> -	rte_free(dev->data->mac_addrs);
>>>>  	free(internal->dev_name);
>>>>  	free(internal->iface_name);
>>>> -- 
>>>> 2.19.0
>>>>
>>>> ---
>>>>   Diff of the applied patch vs upstream commit (please double-check if non-empty:
>>>> ---
>>>> --- -	2019-01-04 13:23:09.004712018 <sip:09004712018> <sip:09004712018 <sip:09004712018>> +0000
>>>> +++ 0064-net-vhost-fix-double-free-of-MAC-address.patch	2019-01-04 13:23:07.000000000 <sip:07000000000> <sip:07000000000 <sip:07000000000>> +0000
>>>> @@ -1,14 +1,15 @@
>>>> -From 6e3339ca07734e59cd0c24594e3014ab49a0ffc0 Mon Sep 17 00:00:00 2001
>>>> +From 00ffa031bda23be8e1d558d8ed981389628bc543 Mon Sep 17 00:00:00 2001
>>>>  From: Hideyuki Yamashita <yamashita.hideyuki@po.ntt-tx.co.jp>
>>>>  Date: Wed, 19 Dec 2018 13:37:18 +0900
>>>>  Subject: [PATCH] net/vhost: fix double free of MAC address
>>>>  
>>>> +[ upstream commit 6e3339ca07734e59cd0c24594e3014ab49a0ffc0 ]
>>>> +
>>>>  The common data freeing has been moved to rte_eth_dev_release_port(),
>>>>  so freeing mac_addrs like this in eth_dev_close() is unnecessary and
>>>>  will cause double free.
>>>>  
>>>>  Fixes: e16adf08e54d ("ethdev: free all common data when releasing port")
>>>> -Cc: stable@dpdk.org
>>>>  
>>>>  Signed-off-by: Hideyuki Yamashita <yamashita.hideyuki@po.ntt-tx.co.jp>
>>>>  Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
>>>
>>>
> 
> 

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

* Re: [dpdk-stable] patch 'log: add missing experimental tag' has been queued to LTS release 18.11.1
  2019-01-04 13:23 ` [dpdk-stable] patch 'log: add missing experimental tag' " Kevin Traynor
@ 2019-01-10  9:52   ` David Marchand
  2019-01-10 10:28     ` Kevin Traynor
  0 siblings, 1 reply; 82+ messages in thread
From: David Marchand @ 2019-01-10  9:52 UTC (permalink / raw)
  To: Kevin Traynor; +Cc: Neil Horman, dpdk stable

Hey Kevin,

On Fri, Jan 4, 2019 at 2:26 PM Kevin Traynor <ktraynor@redhat.com> wrote:

> From a4bca176eea3a5fc71e2e42094c806037f84c15f Mon Sep 17 00:00:00 2001
> From: David Marchand <david.marchand@redhat.com>
> Date: Tue, 4 Dec 2018 09:28:31 +0100
> Subject: [PATCH] log: add missing experimental tag
>
> [ upstream commit a8499f65a1d116ffb25db48abbe3bbaefa7cf120 ]
>
> When rte_log_register_type_and_pick_level() has been introduced, it has
> been correctly added to the EXPERIMENTAL section of the eal map and the
> symbol itself has been marked at its definition.
>
> However, the declaration of this symbol in rte_log.h is missing the
> __rte_experimental tag.
> Because of this, a user can try to call this symbol without being aware
> this is an experimental api (neither compilation nor link warning).
>
> Fixes: b22e77c02620 ("eal: register log type and pick level from args")
>
> Signed-off-by: David Marchand <david.marchand@redhat.com>
> Acked-by: Neil Horman <nhorman@tuxdriver.com>
>
>
Don't know if you noticed, but a fix for meson on bsd is being cooked.
http://patchwork.dpdk.org/patch/49554/

-- 
David Marchand

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

* Re: [dpdk-stable] patch 'log: add missing experimental tag' has been queued to LTS release 18.11.1
  2019-01-10  9:52   ` David Marchand
@ 2019-01-10 10:28     ` Kevin Traynor
  0 siblings, 0 replies; 82+ messages in thread
From: Kevin Traynor @ 2019-01-10 10:28 UTC (permalink / raw)
  To: David Marchand; +Cc: Neil Horman, dpdk stable

On 01/10/2019 09:52 AM, David Marchand wrote:
> Hey Kevin,
> 
> On Fri, Jan 4, 2019 at 2:26 PM Kevin Traynor <ktraynor@redhat.com> wrote:
> 
>> From a4bca176eea3a5fc71e2e42094c806037f84c15f Mon Sep 17 00:00:00 2001
>> From: David Marchand <david.marchand@redhat.com>
>> Date: Tue, 4 Dec 2018 09:28:31 +0100
>> Subject: [PATCH] log: add missing experimental tag
>>
>> [ upstream commit a8499f65a1d116ffb25db48abbe3bbaefa7cf120 ]
>>
>> When rte_log_register_type_and_pick_level() has been introduced, it has
>> been correctly added to the EXPERIMENTAL section of the eal map and the
>> symbol itself has been marked at its definition.
>>
>> However, the declaration of this symbol in rte_log.h is missing the
>> __rte_experimental tag.
>> Because of this, a user can try to call this symbol without being aware
>> this is an experimental api (neither compilation nor link warning).
>>
>> Fixes: b22e77c02620 ("eal: register log type and pick level from args")
>>
>> Signed-off-by: David Marchand <david.marchand@redhat.com>
>> Acked-by: Neil Horman <nhorman@tuxdriver.com>
>>
>>
> Don't know if you noticed, but a fix for meson on bsd is being cooked.
> http://patchwork.dpdk.org/patch/49554/
> 

Thanks David. Will apply them as a pair when the the linked one gets
upstreamed.

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

* Re: [dpdk-stable] patch 'eal: clean up unused files on initialization' has been queued to LTS release 18.11.1
  2019-01-08 18:09     ` Kevin Traynor
@ 2019-01-10 11:38       ` Burakov, Anatoly
  0 siblings, 0 replies; 82+ messages in thread
From: Burakov, Anatoly @ 2019-01-10 11:38 UTC (permalink / raw)
  To: Kevin Traynor; +Cc: Varghese, Vipin, dpdk stable

Hi Kevin,

FYI this patch fixes the issue with the clean up patch: http://patches.dpdk.org/patch/49577/

Thanks,
Anatoly

> -----Original Message-----
> From: Kevin Traynor [mailto:ktraynor@redhat.com]
> Sent: Tuesday, January 8, 2019 6:09 PM
> To: Burakov, Anatoly <anatoly.burakov@intel.com>
> Cc: Varghese, Vipin <vipin.varghese@intel.com>; dpdk stable
> <stable@dpdk.org>
> Subject: Re: patch 'eal: clean up unused files on initialization' has been
> queued to LTS release 18.11.1
> 
> On 01/08/2019 04:53 PM, Burakov, Anatoly wrote:
> > FYI,
> >
> > There's an issue with this patch on FreeBSD that I'm still investigating. I'm
> hoping to have a fix by tomorrow EOD.
> >
> 
> Thanks Anatoly. In that case, I'll hold off applying until the fix is also ready for
> backport also.
> 
> Kevin.
> 
> > Thanks,
> > Anatoly
> >
> >
> >> -----Original Message-----
> >> From: Kevin Traynor [mailto:ktraynor@redhat.com]
> >> Sent: Friday, January 4, 2019 1:24 PM
> >> To: Burakov, Anatoly <anatoly.burakov@intel.com>
> >> Cc: Varghese, Vipin <vipin.varghese@intel.com>; dpdk stable
> >> <stable@dpdk.org>
> >> Subject: patch 'eal: clean up unused files on initialization' has
> >> been queued to LTS release 18.11.1
> >>
> >> Hi,
> >>
> >> FYI, your patch has been queued to LTS release 18.11.1
> >>
> >> Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
> >> It will be pushed if I get no objections before 01/11/19. 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.
> >>
> >> Thanks.
> >>
> >> Kevin Traynor
> >>
> >> ---
> >> From 8c95205c36c6872e2a96a70bd0044d91cbe1792a Mon Sep 17 00:00:00
> >> 2001
> >> From: Anatoly Burakov <anatoly.burakov@intel.com>
> >> Date: Tue, 13 Nov 2018 15:54:44 +0000
> >> Subject: [PATCH] eal: clean up unused files on initialization
> >>
> >> [ upstream commit 0a529578f162df8b16e4eb7423e55570f3d13c97 ]
> >>
> >> When creating process data structures, EAL will create many files in
> >> EAL runtime directory. Because we allow multiple secondary processes
> >> to run, each secondary process gets their own unique file. With many
> >> secondary processes running and exiting on the system, runtime
> >> directory will, over time, create enormous amounts of sockets,
> >> fbarray files and other stuff that just sits there unused because the
> >> process that allocated it has died a long time ago. This may lead to
> >> exhaustion of disk (or RAM) space in the runtime directory.
> >>
> >> Fix this by removing every unlocked file at initialization that
> >> matches either socket or fbarray naming convention. We cannot be sure
> >> of any other files, so we'll leave them alone. Also, remove similar code
> from mp socket code.
> >>
> >> We do it at the end of init, rather than at the beginning, because
> >> secondary process will use primary process' data structures even if
> >> the primary itself has died, and we don't want to remove those before we
> lock them.
> >>
> >> Bugzilla ID: 106
> >>
> >> Reported-by: Vipin Varghese <vipin.varghese@intel.com>
> >> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> >> ---
> >>  lib/librte_eal/bsdapp/eal/eal.c         | 100 ++++++++++++++++++++++++
> >>  lib/librte_eal/common/eal_common_proc.c |  30 -------
> >>  lib/librte_eal/common/eal_filesystem.h  |   3 +
> >>  lib/librte_eal/linuxapp/eal/eal.c       |  99 +++++++++++++++++++++++
> >>  4 files changed, 202 insertions(+), 30 deletions(-)
> >>
> >> diff --git a/lib/librte_eal/bsdapp/eal/eal.c
> >> b/lib/librte_eal/bsdapp/eal/eal.c index b8152a75c..41ddb5a22 100644
> >> --- a/lib/librte_eal/bsdapp/eal/eal.c
> >> +++ b/lib/librte_eal/bsdapp/eal/eal.c
> >> @@ -4,4 +4,6 @@
> >>   */
> >>
> >> +#include <dirent.h>
> >> +#include <fnmatch.h>
> >>  #include <stdio.h>
> >>  #include <stdlib.h>
> >> @@ -142,4 +144,90 @@ eal_create_runtime_dir(void)  }
> >>
> >> +int
> >> +eal_clean_runtime_dir(void)
> >> +{
> >> +	DIR *dir;
> >> +	struct dirent *dirent;
> >> +	int dir_fd, fd, lck_result;
> >> +	static const char * const filters[] = {
> >> +		"fbarray_*",
> >> +		"mp_socket_*"
> >> +	};
> >> +
> >> +	/* open directory */
> >> +	dir = opendir(runtime_dir);
> >> +	if (!dir) {
> >> +		RTE_LOG(ERR, EAL, "Unable to open runtime directory
> >> %s\n",
> >> +				runtime_dir);
> >> +		goto error;
> >> +	}
> >> +	dir_fd = dirfd(dir);
> >> +
> >> +	/* lock the directory before doing anything, to avoid races */
> >> +	if (flock(dir_fd, LOCK_EX) < 0) {
> >> +		RTE_LOG(ERR, EAL, "Unable to lock runtime directory %s\n",
> >> +			runtime_dir);
> >> +		goto error;
> >> +	}
> >> +
> >> +	dirent = readdir(dir);
> >> +	if (!dirent) {
> >> +		RTE_LOG(ERR, EAL, "Unable to read runtime directory %s\n",
> >> +				runtime_dir);
> >> +		goto error;
> >> +	}
> >> +
> >> +	while (dirent != NULL) {
> >> +		unsigned int f_idx;
> >> +		bool skip = true;
> >> +
> >> +		/* skip files that don't match the patterns */
> >> +		for (f_idx = 0; f_idx < RTE_DIM(filters); f_idx++) {
> >> +			const char *filter = filters[f_idx];
> >> +
> >> +			if (fnmatch(filter, dirent->d_name, 0) == 0) {
> >> +				skip = false;
> >> +				break;
> >> +			}
> >> +		}
> >> +		if (skip) {
> >> +			dirent = readdir(dir);
> >> +			continue;
> >> +		}
> >> +
> >> +		/* try and lock the file */
> >> +		fd = openat(dir_fd, dirent->d_name, O_RDONLY);
> >> +
> >> +		/* skip to next file */
> >> +		if (fd == -1) {
> >> +			dirent = readdir(dir);
> >> +			continue;
> >> +		}
> >> +
> >> +		/* non-blocking lock */
> >> +		lck_result = flock(fd, LOCK_EX | LOCK_NB);
> >> +
> >> +		/* if lock succeeds, remove the file */
> >> +		if (lck_result != -1)
> >> +			unlinkat(dir_fd, dirent->d_name, 0);
> >> +		close(fd);
> >> +		dirent = readdir(dir);
> >> +	}
> >> +
> >> +	/* closedir closes dir_fd and drops the lock */
> >> +	closedir(dir);
> >> +	return 0;
> >> +
> >> +error:
> >> +	if (dir)
> >> +		closedir(dir);
> >> +
> >> +	RTE_LOG(ERR, EAL, "Error while clearing runtime dir: %s\n",
> >> +		strerror(errno));
> >> +
> >> +	return -1;
> >> +}
> >> +
> >> +
> >>  const char *
> >>  rte_eal_get_runtime_dir(void)
> >> @@ -808,4 +896,16 @@ rte_eal_init(int argc, char **argv)
> >>  	}
> >>
> >> +	/*
> >> +	 * Clean up unused files in runtime directory. We do this at the end of
> >> +	 * init and not at the beginning because we want to clean stuff up
> >> +	 * whether we are primary or secondary process, but we cannot
> >> remove
> >> +	 * primary process' files because secondary should be able to run
> >> even
> >> +	 * if primary process is dead.
> >> +	 */
> >> +	if (eal_clean_runtime_dir() < 0) {
> >> +		rte_eal_init_alert("Cannot clear runtime directory\n");
> >> +		return -1;
> >> +	}
> >> +
> >>  	rte_eal_mcfg_complete();
> >>
> >> diff --git a/lib/librte_eal/common/eal_common_proc.c
> >> b/lib/librte_eal/common/eal_common_proc.c
> >> index 1c3f09aad..6b876590a 100644
> >> --- a/lib/librte_eal/common/eal_common_proc.c
> >> +++ b/lib/librte_eal/common/eal_common_proc.c
> >> @@ -543,27 +543,4 @@ open_socket_fd(void)  }
> >>
> >> -static int
> >> -unlink_sockets(const char *filter)
> >> -{
> >> -	int dir_fd;
> >> -	DIR *mp_dir;
> >> -	struct dirent *ent;
> >> -
> >> -	mp_dir = opendir(mp_dir_path);
> >> -	if (!mp_dir) {
> >> -		RTE_LOG(ERR, EAL, "Unable to open directory %s\n",
> >> mp_dir_path);
> >> -		return -1;
> >> -	}
> >> -	dir_fd = dirfd(mp_dir);
> >> -
> >> -	while ((ent = readdir(mp_dir))) {
> >> -		if (fnmatch(filter, ent->d_name, 0) == 0)
> >> -			unlinkat(dir_fd, ent->d_name, 0);
> >> -	}
> >> -
> >> -	closedir(mp_dir);
> >> -	return 0;
> >> -}
> >> -
> >>  int
> >>  rte_mp_channel_init(void)
> >> @@ -604,11 +581,4 @@ rte_mp_channel_init(void)
> >>  	}
> >>
> >> -	if (rte_eal_process_type() == RTE_PROC_PRIMARY &&
> >> -			unlink_sockets(mp_filter)) {
> >> -		RTE_LOG(ERR, EAL, "failed to unlink mp sockets\n");
> >> -		close(dir_fd);
> >> -		return -1;
> >> -	}
> >> -
> >>  	if (open_socket_fd() < 0) {
> >>  		close(dir_fd);
> >> diff --git a/lib/librte_eal/common/eal_filesystem.h
> >> b/lib/librte_eal/common/eal_filesystem.h
> >> index 6e0331fdb..64a028db7 100644
> >> --- a/lib/librte_eal/common/eal_filesystem.h
> >> +++ b/lib/librte_eal/common/eal_filesystem.h
> >> @@ -26,4 +26,7 @@ int
> >>  eal_create_runtime_dir(void);
> >>
> >> +int
> >> +eal_clean_runtime_dir(void);
> >> +
> >>  #define RUNTIME_CONFIG_FNAME "config"
> >>  static inline const char *
> >> diff --git a/lib/librte_eal/linuxapp/eal/eal.c
> >> b/lib/librte_eal/linuxapp/eal/eal.c
> >> index 361744d40..d252c8591 100644
> >> --- a/lib/librte_eal/linuxapp/eal/eal.c
> >> +++ b/lib/librte_eal/linuxapp/eal/eal.c
> >> @@ -14,5 +14,7 @@
> >>  #include <getopt.h>
> >>  #include <sys/file.h>
> >> +#include <dirent.h>
> >>  #include <fcntl.h>
> >> +#include <fnmatch.h>
> >>  #include <stddef.h>
> >>  #include <errno.h>
> >> @@ -150,4 +152,89 @@ eal_create_runtime_dir(void)  }
> >>
> >> +int
> >> +eal_clean_runtime_dir(void)
> >> +{
> >> +	DIR *dir;
> >> +	struct dirent *dirent;
> >> +	int dir_fd, fd, lck_result;
> >> +	static const char * const filters[] = {
> >> +		"fbarray_*",
> >> +		"mp_socket_*"
> >> +	};
> >> +
> >> +	/* open directory */
> >> +	dir = opendir(runtime_dir);
> >> +	if (!dir) {
> >> +		RTE_LOG(ERR, EAL, "Unable to open runtime directory
> >> %s\n",
> >> +				runtime_dir);
> >> +		goto error;
> >> +	}
> >> +	dir_fd = dirfd(dir);
> >> +
> >> +	/* lock the directory before doing anything, to avoid races */
> >> +	if (flock(dir_fd, LOCK_EX) < 0) {
> >> +		RTE_LOG(ERR, EAL, "Unable to lock runtime directory %s\n",
> >> +			runtime_dir);
> >> +		goto error;
> >> +	}
> >> +
> >> +	dirent = readdir(dir);
> >> +	if (!dirent) {
> >> +		RTE_LOG(ERR, EAL, "Unable to read runtime directory %s\n",
> >> +				runtime_dir);
> >> +		goto error;
> >> +	}
> >> +
> >> +	while (dirent != NULL) {
> >> +		unsigned int f_idx;
> >> +		bool skip = true;
> >> +
> >> +		/* skip files that don't match the patterns */
> >> +		for (f_idx = 0; f_idx < RTE_DIM(filters); f_idx++) {
> >> +			const char *filter = filters[f_idx];
> >> +
> >> +			if (fnmatch(filter, dirent->d_name, 0) == 0) {
> >> +				skip = false;
> >> +				break;
> >> +			}
> >> +		}
> >> +		if (skip) {
> >> +			dirent = readdir(dir);
> >> +			continue;
> >> +		}
> >> +
> >> +		/* try and lock the file */
> >> +		fd = openat(dir_fd, dirent->d_name, O_RDONLY);
> >> +
> >> +		/* skip to next file */
> >> +		if (fd == -1) {
> >> +			dirent = readdir(dir);
> >> +			continue;
> >> +		}
> >> +
> >> +		/* non-blocking lock */
> >> +		lck_result = flock(fd, LOCK_EX | LOCK_NB);
> >> +
> >> +		/* if lock succeeds, remove the file */
> >> +		if (lck_result != -1)
> >> +			unlinkat(dir_fd, dirent->d_name, 0);
> >> +		close(fd);
> >> +		dirent = readdir(dir);
> >> +	}
> >> +
> >> +	/* closedir closes dir_fd and drops the lock */
> >> +	closedir(dir);
> >> +	return 0;
> >> +
> >> +error:
> >> +	if (dir)
> >> +		closedir(dir);
> >> +
> >> +	RTE_LOG(ERR, EAL, "Error while clearing runtime dir: %s\n",
> >> +		strerror(errno));
> >> +
> >> +	return -1;
> >> +}
> >> +
> >>  const char *
> >>  rte_eal_get_runtime_dir(void)
> >> @@ -1097,4 +1184,16 @@ rte_eal_init(int argc, char **argv)
> >>  	}
> >>
> >> +	/*
> >> +	 * Clean up unused files in runtime directory. We do this at the end of
> >> +	 * init and not at the beginning because we want to clean stuff up
> >> +	 * whether we are primary or secondary process, but we cannot
> >> remove
> >> +	 * primary process' files because secondary should be able to run
> >> even
> >> +	 * if primary process is dead.
> >> +	 */
> >> +	if (eal_clean_runtime_dir() < 0) {
> >> +		rte_eal_init_alert("Cannot clear runtime directory\n");
> >> +		return -1;
> >> +	}
> >> +
> >>  	rte_eal_mcfg_complete();
> >>
> >> --
> >> 2.19.0
> >>
> >> ---
> >>   Diff of the applied patch vs upstream commit (please double-check
> >> if non-
> >> empty:
> >> ---
> >> --- -	2019-01-04 13:23:07.672255523 <sip:07672255523> +0000
> >> +++ 0009-eal-clean-up-unused-files-on-initialization.patch	2019-01-04
> >> 13:23:07.000000000 <sip:07000000000> +0000 @@ -1,8 +1,10 @@ -From
> >> 0a529578f162df8b16e4eb7423e55570f3d13c97 Mon Sep 17 00:00:00
> >> 2001
> >> +From 8c95205c36c6872e2a96a70bd0044d91cbe1792a Mon Sep 17
> 00:00:00
> >> 2001
> >>  From: Anatoly Burakov <anatoly.burakov@intel.com>
> >>  Date: Tue, 13 Nov 2018 15:54:44 +0000
> >>  Subject: [PATCH] eal: clean up unused files on initialization
> >>
> >> +[ upstream commit 0a529578f162df8b16e4eb7423e55570f3d13c97 ]
> >> +
> >>  When creating process data structures, EAL will create many files
> >> in EAL runtime directory. Because we allow multiple secondary
> >> processes to run, each secondary process gets their own unique @@
> >> -24,7 +26,6 @@  before we lock them.
> >>
> >>  Bugzilla ID: 106
> >> -Cc: stable@dpdk.org
> >>
> >>  Reported-by: Vipin Varghese <vipin.varghese@intel.com>
> >>  Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>


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

end of thread, other threads:[~2019-01-10 11:38 UTC | newest]

Thread overview: 82+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-04 13:23 [dpdk-stable] patch 'config: enable C11 memory model for armv8 with meson' has been queued to LTS release 18.11.1 Kevin Traynor
2019-01-04 13:23 ` [dpdk-stable] patch 'mk: do not install meson.build in usertools' " Kevin Traynor
2019-01-04 13:23 ` [dpdk-stable] patch 'log: add missing experimental tag' " Kevin Traynor
2019-01-10  9:52   ` David Marchand
2019-01-10 10:28     ` Kevin Traynor
2019-01-04 13:23 ` [dpdk-stable] patch 'bus/vmbus: fix race in subchannel creation' " Kevin Traynor
2019-01-04 13:23 ` [dpdk-stable] patch 'net/netvsc: enable SR-IOV' " Kevin Traynor
2019-01-04 13:23 ` [dpdk-stable] patch 'net/netvsc: disable multi-queue on older servers' " Kevin Traynor
2019-01-04 13:23 ` [dpdk-stable] patch 'bus/dpaa: do nothing if bus not present' " Kevin Traynor
2019-01-04 13:23 ` [dpdk-stable] patch 'doc: fix garbage text in generated HTML guides' " Kevin Traynor
2019-01-04 13:23 ` [dpdk-stable] patch 'eal: clean up unused files on initialization' " Kevin Traynor
2019-01-08 16:53   ` Burakov, Anatoly
2019-01-08 18:09     ` Kevin Traynor
2019-01-10 11:38       ` Burakov, Anatoly
2019-01-04 13:23 ` [dpdk-stable] patch 'gro: fix overflow of payload length calculation' " Kevin Traynor
2019-01-04 13:23 ` [dpdk-stable] patch 'eventdev: fix error log in eth Rx adapter' " Kevin Traynor
2019-01-04 13:23 ` [dpdk-stable] patch 'eventdev: remove redundant timer adapter function prototypes' " Kevin Traynor
2019-01-04 13:23 ` [dpdk-stable] patch 'app/eventdev: detect deadlock for timer event producer' " Kevin Traynor
2019-01-04 13:23 ` [dpdk-stable] patch 'eventdev: fix xstats documentation typo' " Kevin Traynor
2019-01-04 13:23 ` [dpdk-stable] patch 'eventdev: fix eth Tx adapter queue count checks' " Kevin Traynor
2019-01-04 13:23 ` [dpdk-stable] patch 'compressdev: fix structure comment' " Kevin Traynor
2019-01-04 13:23 ` [dpdk-stable] patch 'bb/turbo_sw: fix dynamic linking' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'crypto/qat: fix block size error handling' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'crypto/qat: fix message for CCM when setting unused counter' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'crypto/qat: fix message for NULL algo " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'common/qat: remove check of valid firmware response' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'compress/qat: fix return on building request error' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'compress/qat: fix dequeue error counter' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'timer: fix race condition' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'ip_frag: fix IPv6 when MTU sizes not aligned to 8 bytes' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'eal: fix missing newline in a log' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'eal: fix detection of duplicate option register' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'eal: fix leak on multi-process request error' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'memzone: fix unlock on initialization failure' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'malloc: fix finding maximum contiguous IOVA size' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'malloc: notify primary process about hotplug in secondary' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'malloc: fix duplicate mem event notification' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'malloc: make alignment requirements more stringent' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'mem: fix segment fd API error code for external segment' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'mem: check for memfd support in segment fd API' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'doc: remove note on memory mode limitation in multi-process' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'test/mem: add external mem autotest to meson' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'test/fbarray: add " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'eal: close multi-process socket during cleanup' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'hash: fix return of bulk lookup' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'hash: fix out-of-bound write while freeing key slot' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'devtools: fix return of forbidden addition checks' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'malloc: fix deadlock when reading stats' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'net/i40e: clear VF reset flags after reset' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'net/i40e: fix statistics inconsistency' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'net/netvsc: fix transmit descriptor pool cleanup' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'net/netvsc: fix probe when VF not found' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'vhost: fix race condition when adding fd in the fdset' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'net/ifc: store only registered device instance' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'net/ena: add reset reason in Rx error' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'net/ena: skip packet with wrong request id' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'net/ena: destroy queues if start failed' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'net/ena: do not reconfigure queues on reset' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'net/ena: add supported RSS offloads types' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'net/ena: fix invalid reference to variable in union' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'net/ena: fix cleanup for out of order packets' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'net/ena: update completion queue after cleanup' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'net/cxgbe: fix overlapping regions in TID table' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'net/cxgbe: skip parsing match items with no spec' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'net/i40e: fix config name in comment' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'net/mlx5: fix Multi-Packet RQ mempool free' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'net: fix underflow for checksum of invalid IPv4 packets' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'net/tap: add buffer overflow checks before checksum' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'net/vhost: fix double free of MAC address' " Kevin Traynor
2019-01-07  0:04   ` Hideyuki Yamashita
2019-01-07 10:23     ` Kevin Traynor
2019-01-09  7:39       ` Hideyuki Yamashita
2019-01-09 11:04         ` Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'vhost: enforce avail index and desc read ordering' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'vhost: enforce desc flags and content " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'net/af_packet: fix setting MTU decrements sockaddr twice' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'net/tap: fix possible uninitialized variable access' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'net/avf/base: fix comment referencing internal data' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'net/sfc: pass HW Tx queue index on creation' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'telemetry: fix using ports of different types' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'sched: fix memory leak on init failure' " Kevin Traynor
2019-01-04 13:24 ` [dpdk-stable] patch 'app/testpmd: expand RED queue thresholds to 64 bits' " Kevin Traynor

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).