patch 'eventdev: fix device pointer for vdev-based devices' has been queued to stable release 21.11.6

Kevin Traynor ktraynor at redhat.com
Thu Nov 16 14:22:43 CET 2023


Hi,

FYI, your patch has been queued to stable release 21.11.6

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

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

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

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

Thanks.

Kevin

---
>From 48ecb471d93ff145ae36ac74f2f648203cf481c1 Mon Sep 17 00:00:00 2001
From: Bruce Richardson <bruce.richardson at intel.com>
Date: Wed, 18 Oct 2023 14:39:31 +0100
Subject: [PATCH] eventdev: fix device pointer for vdev-based devices

[ upstream commit 928b5c701f254c64a7adb0051c0cfd25e8365584 ]

The eventdevs based on vdevs, rather than on e.g. HW PCI devices, were,
as a rule, not setting the ".dev" pointer in the eventdev structure.
This caused issues as a NULL pointer was returned in calls to info_get,
triggering crashes if the pointer is passed unchecked to e.g.
rte_dev_name() to print out the name of an event device.

Most effective, and future-proofed fix, is to not rely on the eventdev
drivers to set the pointer themselves, but to change the vdev init
function to take the vdev struct as parameter, and set the "dev" pointer
centrally on init. This allows us to fix all drivers in one go, enforced
by compiler error if the parameter is missing.

Fixes: aaa4a221da26 ("event/sw: add new software-only eventdev driver")
Fixes: 46a186b1f0c5 ("event/dsw: add device registration and build system")
Fixes: bbbb929da5e6 ("event/skeleton: add skeleton eventdev driver")
Fixes: 3c7f3dcfb099 ("event/opdl: add PMD main body and helper function")
Fixes: 9caac5dd1e7f ("event/dpaa: introduce PMD")
Fixes: 8a5d7a8ec74b ("event/dpaa2: initialize device")
Fixes: 34498de6000f ("event/octeontx: add octeontx eventdev driver")

Signed-off-by: Bruce Richardson <bruce.richardson at intel.com>
Acked-by: David Marchand <david.marchand at redhat.com>
---
 drivers/event/dpaa/dpaa_eventdev.c         | 6 +++---
 drivers/event/dpaa2/dpaa2_eventdev.c       | 6 +++---
 drivers/event/dsw/dsw_evdev.c              | 2 +-
 drivers/event/octeontx/ssovf_evdev.c       | 2 +-
 drivers/event/opdl/opdl_evdev.c            | 2 +-
 drivers/event/skeleton/skeleton_eventdev.c | 6 +++---
 drivers/event/sw/sw_evdev.c                | 2 +-
 lib/eventdev/eventdev_pmd_vdev.h           | 3 ++-
 8 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/drivers/event/dpaa/dpaa_eventdev.c b/drivers/event/dpaa/dpaa_eventdev.c
index ff6cc0be18..4cc89b4f82 100644
--- a/drivers/event/dpaa/dpaa_eventdev.c
+++ b/drivers/event/dpaa/dpaa_eventdev.c
@@ -993,5 +993,5 @@ dpaa_event_check_flags(const char *params)
 
 static int
-dpaa_event_dev_create(const char *name, const char *params)
+dpaa_event_dev_create(const char *name, const char *params, struct rte_vdev_device *vdev)
 {
 	struct rte_eventdev *eventdev;
@@ -1000,5 +1000,5 @@ dpaa_event_dev_create(const char *name, const char *params)
 	eventdev = rte_event_pmd_vdev_init(name,
 					   sizeof(struct dpaa_eventdev),
-					   rte_socket_id());
+					   rte_socket_id(), vdev);
 	if (eventdev == NULL) {
 		DPAA_EVENTDEV_ERR("Failed to create eventdev vdev %s", name);
@@ -1050,5 +1050,5 @@ dpaa_event_dev_probe(struct rte_vdev_device *vdev)
 	params = rte_vdev_device_args(vdev);
 
-	return dpaa_event_dev_create(name, params);
+	return dpaa_event_dev_create(name, params, vdev);
 }
 
diff --git a/drivers/event/dpaa2/dpaa2_eventdev.c b/drivers/event/dpaa2/dpaa2_eventdev.c
index 4d94c315d2..0a5c1c3f95 100644
--- a/drivers/event/dpaa2/dpaa2_eventdev.c
+++ b/drivers/event/dpaa2/dpaa2_eventdev.c
@@ -1084,5 +1084,5 @@ dpaa2_eventdev_setup_dpci(struct dpaa2_dpci_dev *dpci_dev,
 
 static int
-dpaa2_eventdev_create(const char *name)
+dpaa2_eventdev_create(const char *name, struct rte_vdev_device *vdev)
 {
 	struct rte_eventdev *eventdev;
@@ -1094,5 +1094,5 @@ dpaa2_eventdev_create(const char *name)
 	eventdev = rte_event_pmd_vdev_init(name,
 					   sizeof(struct dpaa2_eventdev),
-					   rte_socket_id());
+					   rte_socket_id(), vdev);
 	if (eventdev == NULL) {
 		DPAA2_EVENTDEV_ERR("Failed to create Event device %s", name);
@@ -1188,5 +1188,5 @@ dpaa2_eventdev_probe(struct rte_vdev_device *vdev)
 	name = rte_vdev_device_name(vdev);
 	DPAA2_EVENTDEV_INFO("Initializing %s", name);
-	return dpaa2_eventdev_create(name);
+	return dpaa2_eventdev_create(name, vdev);
 }
 
diff --git a/drivers/event/dsw/dsw_evdev.c b/drivers/event/dsw/dsw_evdev.c
index 6c5cde2468..abe8e68525 100644
--- a/drivers/event/dsw/dsw_evdev.c
+++ b/drivers/event/dsw/dsw_evdev.c
@@ -435,5 +435,5 @@ dsw_probe(struct rte_vdev_device *vdev)
 
 	dev = rte_event_pmd_vdev_init(name, sizeof(struct dsw_evdev),
-				      rte_socket_id());
+				      rte_socket_id(), vdev);
 	if (dev == NULL)
 		return -EFAULT;
diff --git a/drivers/event/octeontx/ssovf_evdev.c b/drivers/event/octeontx/ssovf_evdev.c
index 9e14e35d10..634fa8a27f 100644
--- a/drivers/event/octeontx/ssovf_evdev.c
+++ b/drivers/event/octeontx/ssovf_evdev.c
@@ -880,5 +880,5 @@ ssovf_vdev_probe(struct rte_vdev_device *vdev)
 
 	eventdev = rte_event_pmd_vdev_init(name, sizeof(struct ssovf_evdev),
-				rte_socket_id());
+				rte_socket_id(), vdev);
 	if (eventdev == NULL) {
 		ssovf_log_err("Failed to create eventdev vdev %s", name);
diff --git a/drivers/event/opdl/opdl_evdev.c b/drivers/event/opdl/opdl_evdev.c
index 8b6890b220..2774a923aa 100644
--- a/drivers/event/opdl/opdl_evdev.c
+++ b/drivers/event/opdl/opdl_evdev.c
@@ -696,5 +696,5 @@ opdl_probe(struct rte_vdev_device *vdev)
 	}
 	dev = rte_event_pmd_vdev_init(name,
-			sizeof(struct opdl_evdev), socket_id);
+			sizeof(struct opdl_evdev), socket_id, vdev);
 
 	if (dev == NULL) {
diff --git a/drivers/event/skeleton/skeleton_eventdev.c b/drivers/event/skeleton/skeleton_eventdev.c
index bf3b01ebc8..66510cc432 100644
--- a/drivers/event/skeleton/skeleton_eventdev.c
+++ b/drivers/event/skeleton/skeleton_eventdev.c
@@ -428,10 +428,10 @@ RTE_PMD_REGISTER_PCI_TABLE(event_skeleton_pci, pci_id_skeleton_map);
 
 static int
-skeleton_eventdev_create(const char *name, int socket_id)
+skeleton_eventdev_create(const char *name, int socket_id, struct rte_vdev_device *vdev)
 {
 	struct rte_eventdev *eventdev;
 
 	eventdev = rte_event_pmd_vdev_init(name,
-			sizeof(struct skeleton_eventdev), socket_id);
+			sizeof(struct skeleton_eventdev), socket_id, vdev);
 	if (eventdev == NULL) {
 		PMD_DRV_ERR("Failed to create eventdev vdev %s", name);
@@ -459,5 +459,5 @@ skeleton_eventdev_probe(struct rte_vdev_device *vdev)
 	RTE_LOG(INFO, PMD, "Initializing %s on NUMA node %d\n", name,
 			rte_socket_id());
-	return skeleton_eventdev_create(name, rte_socket_id());
+	return skeleton_eventdev_create(name, rte_socket_id(), vdev);
 }
 
diff --git a/drivers/event/sw/sw_evdev.c b/drivers/event/sw/sw_evdev.c
index fb2ee552aa..e43bf250d6 100644
--- a/drivers/event/sw/sw_evdev.c
+++ b/drivers/event/sw/sw_evdev.c
@@ -1078,5 +1078,5 @@ sw_probe(struct rte_vdev_device *vdev)
 
 	dev = rte_event_pmd_vdev_init(name,
-			sizeof(struct sw_evdev), socket_id);
+			sizeof(struct sw_evdev), socket_id, vdev);
 	if (dev == NULL) {
 		SW_LOG_ERR("eventdev vdev init() failed");
diff --git a/lib/eventdev/eventdev_pmd_vdev.h b/lib/eventdev/eventdev_pmd_vdev.h
index 77904910a2..aa809dff4f 100644
--- a/lib/eventdev/eventdev_pmd_vdev.h
+++ b/lib/eventdev/eventdev_pmd_vdev.h
@@ -45,5 +45,5 @@ __rte_internal
 static inline struct rte_eventdev *
 rte_event_pmd_vdev_init(const char *name, size_t dev_private_size,
-		int socket_id)
+		int socket_id, struct rte_vdev_device *vdev)
 {
 
@@ -67,4 +67,5 @@ rte_event_pmd_vdev_init(const char *name, size_t dev_private_size,
 					" data");
 	}
+	eventdev->dev = &vdev->device;
 
 	return eventdev;
-- 
2.41.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2023-11-16 13:21:52.622356881 +0000
+++ 0001-eventdev-fix-device-pointer-for-vdev-based-devices.patch	2023-11-16 13:21:52.384946183 +0000
@@ -1 +1 @@
-From 928b5c701f254c64a7adb0051c0cfd25e8365584 Mon Sep 17 00:00:00 2001
+From 48ecb471d93ff145ae36ac74f2f648203cf481c1 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 928b5c701f254c64a7adb0051c0cfd25e8365584 ]
+
@@ -25 +26,0 @@
-Cc: stable at dpdk.org
@@ -41 +42 @@
-index f615da3813..46a9b88c73 100644
+index ff6cc0be18..4cc89b4f82 100644
@@ -44 +45 @@
-@@ -995,5 +995,5 @@ dpaa_event_check_flags(const char *params)
+@@ -993,5 +993,5 @@ dpaa_event_check_flags(const char *params)
@@ -51 +52 @@
-@@ -1002,5 +1002,5 @@ dpaa_event_dev_create(const char *name, const char *params)
+@@ -1000,5 +1000,5 @@ dpaa_event_dev_create(const char *name, const char *params)
@@ -58 +59 @@
-@@ -1052,5 +1052,5 @@ dpaa_event_dev_probe(struct rte_vdev_device *vdev)
+@@ -1050,5 +1050,5 @@ dpaa_event_dev_probe(struct rte_vdev_device *vdev)
@@ -66 +67 @@
-index ffc5550f85..dd4e64395f 100644
+index 4d94c315d2..0a5c1c3f95 100644
@@ -69 +70 @@
-@@ -1087,5 +1087,5 @@ dpaa2_eventdev_setup_dpci(struct dpaa2_dpci_dev *dpci_dev,
+@@ -1084,5 +1084,5 @@ dpaa2_eventdev_setup_dpci(struct dpaa2_dpci_dev *dpci_dev,
@@ -76 +77 @@
-@@ -1097,5 +1097,5 @@ dpaa2_eventdev_create(const char *name)
+@@ -1094,5 +1094,5 @@ dpaa2_eventdev_create(const char *name)
@@ -83 +84 @@
-@@ -1191,5 +1191,5 @@ dpaa2_eventdev_probe(struct rte_vdev_device *vdev)
+@@ -1188,5 +1188,5 @@ dpaa2_eventdev_probe(struct rte_vdev_device *vdev)
@@ -91 +92 @@
-index 785c12f61f..1209e73a9d 100644
+index 6c5cde2468..abe8e68525 100644
@@ -94 +95 @@
-@@ -436,5 +436,5 @@ dsw_probe(struct rte_vdev_device *vdev)
+@@ -435,5 +435,5 @@ dsw_probe(struct rte_vdev_device *vdev)
@@ -102 +103 @@
-index 0eb9358981..a16f24e088 100644
+index 9e14e35d10..634fa8a27f 100644
@@ -105 +106 @@
-@@ -881,5 +881,5 @@ ssovf_vdev_probe(struct rte_vdev_device *vdev)
+@@ -880,5 +880,5 @@ ssovf_vdev_probe(struct rte_vdev_device *vdev)
@@ -113 +114 @@
-index dd25749654..0cccaf7e97 100644
+index 8b6890b220..2774a923aa 100644
@@ -116 +117 @@
-@@ -698,5 +698,5 @@ opdl_probe(struct rte_vdev_device *vdev)
+@@ -696,5 +696,5 @@ opdl_probe(struct rte_vdev_device *vdev)
@@ -124 +125 @@
-index dd2dab2e27..7df032b7da 100644
+index bf3b01ebc8..66510cc432 100644
@@ -127 +128 @@
-@@ -429,10 +429,10 @@ RTE_PMD_REGISTER_PCI_TABLE(event_skeleton_pci, pci_id_skeleton_map);
+@@ -428,10 +428,10 @@ RTE_PMD_REGISTER_PCI_TABLE(event_skeleton_pci, pci_id_skeleton_map);
@@ -140 +141 @@
-@@ -460,5 +460,5 @@ skeleton_eventdev_probe(struct rte_vdev_device *vdev)
+@@ -459,5 +459,5 @@ skeleton_eventdev_probe(struct rte_vdev_device *vdev)
@@ -148 +149 @@
-index 6d1816b76d..55e7735cb0 100644
+index fb2ee552aa..e43bf250d6 100644
@@ -151 +152 @@
-@@ -1076,5 +1076,5 @@ sw_probe(struct rte_vdev_device *vdev)
+@@ -1078,5 +1078,5 @@ sw_probe(struct rte_vdev_device *vdev)
@@ -159 +160 @@
-index 5fa9d699ac..bb433ba955 100644
+index 77904910a2..aa809dff4f 100644
@@ -162 +163 @@
-@@ -46,5 +46,5 @@ __rte_internal
+@@ -45,5 +45,5 @@ __rte_internal
@@ -169 +170 @@
-@@ -68,4 +68,5 @@ rte_event_pmd_vdev_init(const char *name, size_t dev_private_size,
+@@ -67,4 +67,5 @@ rte_event_pmd_vdev_init(const char *name, size_t dev_private_size,



More information about the stable mailing list