[dpdk-stable] patch 'igb_uio: fix unexpected removal for hot-unplug' has been queued to LTS release 16.11.9

Luca Boccassi bluca at debian.org
Thu Nov 8 19:01:11 CET 2018


Hi,

FYI, your patch has been queued to LTS release 16.11.9

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/10/18. 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. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Luca Boccassi

---
>From 1fab71698f322c95bff494a06a3d739ef506ea47 Mon Sep 17 00:00:00 2001
From: Jeff Guo <jia.guo at intel.com>
Date: Thu, 18 Oct 2018 14:27:15 +0800
Subject: [PATCH] igb_uio: fix unexpected removal for hot-unplug

[ upstream commit 70efa4116420b6f7a0734711dd603d3024366c79 ]

When a device is hot-unplugged, pci_remove will be invoked unexpectedly
before pci_release, it will caused kernel hung issue which will throw the
error info of "Trying to free already-free IRQ XXX". And on the other hand,
if pci_remove before pci_release, the interrupt will not got chance to be
disabled. So this patch aim to fix this issue by adding pci_release call
in pci_remove, it will gurranty that all pci clean up will be done before
pci removal.

Signed-off-by: Jeff Guo <jia.guo at intel.com>
Acked-by: Ferruh Yigit <ferruh.yigit at intel.com>
---
 lib/librte_eal/linuxapp/igb_uio/igb_uio.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
index 4be89ef86..e88e38873 100644
--- a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
+++ b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
@@ -493,6 +493,8 @@ igbuio_pci_remove(struct pci_dev *dev)
 {
 	struct rte_uio_pci_dev *udev = pci_get_drvdata(dev);
 
+	igbuio_pci_release(&udev->info, NULL);
+
 	sysfs_remove_group(&dev->dev.kobj, &dev_attr_grp);
 	uio_unregister_device(&udev->info);
 	igbuio_pci_release_iomem(&udev->info);
-- 
2.19.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-08 17:59:30.336224655 +0000
+++ 0015-igb_uio-fix-unexpected-removal-for-hot-unplug.patch	2018-11-08 17:59:30.064751011 +0000
@@ -1,8 +1,10 @@
-From 70efa4116420b6f7a0734711dd603d3024366c79 Mon Sep 17 00:00:00 2001
+From 1fab71698f322c95bff494a06a3d739ef506ea47 Mon Sep 17 00:00:00 2001
 From: Jeff Guo <jia.guo at intel.com>
 Date: Thu, 18 Oct 2018 14:27:15 +0800
 Subject: [PATCH] igb_uio: fix unexpected removal for hot-unplug
 
+[ upstream commit 70efa4116420b6f7a0734711dd603d3024366c79 ]
+
 When a device is hot-unplugged, pci_remove will be invoked unexpectedly
 before pci_release, it will caused kernel hung issue which will throw the
 error info of "Trying to free already-free IRQ XXX". And on the other hand,
@@ -14,14 +16,14 @@
 Signed-off-by: Jeff Guo <jia.guo at intel.com>
 Acked-by: Ferruh Yigit <ferruh.yigit at intel.com>
 ---
- kernel/linux/igb_uio/igb_uio.c | 2 ++
+ lib/librte_eal/linuxapp/igb_uio/igb_uio.c | 2 ++
  1 file changed, 2 insertions(+)
 
-diff --git a/kernel/linux/igb_uio/igb_uio.c b/kernel/linux/igb_uio/igb_uio.c
-index fede66cf2..3cf394bdf 100644
---- a/kernel/linux/igb_uio/igb_uio.c
-+++ b/kernel/linux/igb_uio/igb_uio.c
-@@ -570,6 +570,8 @@ igbuio_pci_remove(struct pci_dev *dev)
+diff --git a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
+index 4be89ef86..e88e38873 100644
+--- a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
++++ b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
+@@ -493,6 +493,8 @@ igbuio_pci_remove(struct pci_dev *dev)
  {
  	struct rte_uio_pci_dev *udev = pci_get_drvdata(dev);
  


More information about the stable mailing list