patch 'net/ice: fix interrupt handler unregister' has been queued to stable release 21.11.3

Kevin Traynor ktraynor at redhat.com
Wed Nov 23 19:03:38 CET 2022


Hi,

FYI, your patch has been queued to stable release 21.11.3

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

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

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

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

Thanks.

Kevin

---
>From b0df64d8a26ae8da6a1f3054858e18306920f3b1 Mon Sep 17 00:00:00 2001
From: Frank Du <frank.du at intel.com>
Date: Mon, 14 Nov 2022 15:03:29 +0800
Subject: [PATCH] net/ice: fix interrupt handler unregister

[ upstream commit 63bd26448539e8cd6da6813807f47eaaca616390 ]

rte_intr_callback_unregister may fail when irq cb is in handling,
use sync version to make sure unregister successfully.

Fixes: cf911d90e366 ("net/ice: support link update")

Signed-off-by: Frank Du <frank.du at intel.com>
Acked-by: Qi Zhang <qi.z.zhang at intel.com>
---
 drivers/net/ice/ice_ethdev.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c
index fb2b1998f2..08edca79ce 100644
--- a/drivers/net/ice/ice_ethdev.c
+++ b/drivers/net/ice/ice_ethdev.c
@@ -2457,10 +2457,15 @@ ice_dev_close(struct rte_eth_dev *dev)
 
 	/* Since stop will make link down, then the link event will be
-	 * triggered, disable the irq firstly to avoid the port_infoe etc
-	 * resources deallocation causing the interrupt service thread
-	 * crash.
+	 * triggered, disable the irq firstly.
 	 */
 	ice_pf_disable_irq0(hw);
 
+	/* Unregister callback func from eal lib, use sync version to
+	 * make sure all active interrupt callbacks is done, then it's
+	 * safe to free all resources.
+	 */
+	rte_intr_callback_unregister_sync(intr_handle,
+					  ice_interrupt_handler, dev);
+
 	ret = ice_dev_stop(dev);
 
@@ -2494,8 +2499,4 @@ ice_dev_close(struct rte_eth_dev *dev)
 	rte_intr_disable(intr_handle);
 
-	/* unregister callback func from eal lib */
-	rte_intr_callback_unregister(intr_handle,
-				     ice_interrupt_handler, dev);
-
 	return ret;
 }
-- 
2.38.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2022-11-23 09:55:57.693351158 +0000
+++ 0025-net-ice-fix-interrupt-handler-unregister.patch	2022-11-23 09:55:57.066149299 +0000
@@ -1 +1 @@
-From 63bd26448539e8cd6da6813807f47eaaca616390 Mon Sep 17 00:00:00 2001
+From b0df64d8a26ae8da6a1f3054858e18306920f3b1 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 63bd26448539e8cd6da6813807f47eaaca616390 ]
+
@@ -10 +11,0 @@
-Cc: stable at dpdk.org
@@ -19 +20 @@
-index 7294f38edc..0bc739daf0 100644
+index fb2b1998f2..08edca79ce 100644
@@ -22 +23 @@
-@@ -2556,10 +2556,15 @@ ice_dev_close(struct rte_eth_dev *dev)
+@@ -2457,10 +2457,15 @@ ice_dev_close(struct rte_eth_dev *dev)
@@ -41 +42 @@
-@@ -2596,8 +2601,4 @@ ice_dev_close(struct rte_eth_dev *dev)
+@@ -2494,8 +2499,4 @@ ice_dev_close(struct rte_eth_dev *dev)



More information about the stable mailing list