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

Yongseok Koh yskoh at mellanox.com
Fri Nov 30 00:11:03 CET 2018


Hi,

FYI, your patch has been queued to LTS release 17.11.5

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

Yongseok

---
>From 8933c679415efb064aa46025fc84df6765577897 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 45d70272d..22484ac14 100644
--- a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
+++ b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
@@ -577,6 +577,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.11.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-29 15:01:48.264909796 -0800
+++ 0069-igb_uio-fix-unexpected-removal-for-hot-unplug.patch	2018-11-29 15:01:45.176961000 -0800
@@ -1,8 +1,10 @@
-From 70efa4116420b6f7a0734711dd603d3024366c79 Mon Sep 17 00:00:00 2001
+From 8933c679415efb064aa46025fc84df6765577897 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 45d70272d..22484ac14 100644
+--- a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
++++ b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
+@@ -577,6 +577,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