[PATCH 1/2][SRU][OEM-B] PCI: pciehp: Ignore Link State Changes after powering off a slot
AceLan Kao
acelan.kao at canonical.com
Fri Jun 28 02:18:45 UTC 2019
From: Sergey Miroshnichenko <s.miroshnichenko at yadro.com>
BugLink: https://bugs.launchpad.net/bugs/1834550
During a safe hot remove, the OS powers off the slot, which may cause a
Data Link Layer State Changed event. The slot has already been set to
OFF_STATE, so that event results in re-enabling the device, making it
impossible to safely remove it.
Clear out the Presence Detect Changed and Data Link Layer State Changed
events when the disabled slot has settled down.
It is still possible to re-enable the device if it remains in the slot
after pressing the Attention Button by pressing it again.
Fixes the problem that Micah reported below: an NVMe drive power button may
not actually turn off the drive.
Link: https://bugzilla.kernel.org/show_bug.cgi?id=203237
Reported-by: Micah Parrish <micah.parrish at hpe.com>
Tested-by: Micah Parrish <micah.parrish at hpe.com>
Signed-off-by: Sergey Miroshnichenko <s.miroshnichenko at yadro.com>
[bhelgaas: changelog, add bugzilla URL]
Signed-off-by: Bjorn Helgaas <bhelgaas at google.com>
Reviewed-by: Lukas Wunner <lukas at wunner.de>
Cc: stable at vger.kernel.org # v4.19+
(cherry picked from commit 3943af9d01e94330d0cfac6fccdbc829aad50c92)
Signed-off-by: AceLan Kao <acelan.kao at canonical.com>
---
drivers/pci/hotplug/pciehp_ctrl.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/pci/hotplug/pciehp_ctrl.c b/drivers/pci/hotplug/pciehp_ctrl.c
index cd0541d80946..5eae29a12ce3 100644
--- a/drivers/pci/hotplug/pciehp_ctrl.c
+++ b/drivers/pci/hotplug/pciehp_ctrl.c
@@ -115,6 +115,10 @@ static void remove_board(struct controller *ctrl, bool safe_removal)
* removed from the slot/adapter.
*/
msleep(1000);
+
+ /* Ignore link or presence changes caused by power off */
+ atomic_and(~(PCI_EXP_SLTSTA_DLLSC | PCI_EXP_SLTSTA_PDC),
+ &ctrl->pending_events);
}
/* turn off Green LED */
--
2.17.1
More information about the kernel-team
mailing list