add patch for hpsa, preventing clean reboots
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
This commit is contained in:
parent
2d13a2bdc2
commit
61721594cf
@ -0,0 +1,76 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
Date: Sun, 1 Jul 2018 18:22:37 +0200
|
||||||
|
Subject: [PATCH] scsi: hpsa: disable device during shutdown
|
||||||
|
|
||||||
|
4.17-stable review patch. If anyone has any objections, please let me know.
|
||||||
|
|
||||||
|
------------------
|
||||||
|
|
||||||
|
From: Sinan Kaya <okaya@codeaurora.org>
|
||||||
|
|
||||||
|
commit 0d98ba8d70b0070ac117452ea0b663e26bbf46bf upstream.
|
||||||
|
|
||||||
|
'Commit cc27b735ad3a ("PCI/portdrv: Turn off PCIe services during
|
||||||
|
shutdown")' has been added to kernel to shutdown pending PCIe port service
|
||||||
|
interrupts during reboot so that a newly started kexec kernel wouldn't
|
||||||
|
observe pending interrupts.
|
||||||
|
|
||||||
|
pcie_port_device_remove() is disabling the root port and switches by
|
||||||
|
calling pci_disable_device() after all PCIe service drivers are shutdown.
|
||||||
|
|
||||||
|
This has been found to cause crashes on HP DL360 Gen9 machines during
|
||||||
|
reboot due to hpsa driver not clearing the bus master bit during the
|
||||||
|
shutdown procedure by calling pci_disable_device().
|
||||||
|
|
||||||
|
Disable device as part of the shutdown sequence.
|
||||||
|
|
||||||
|
Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
|
||||||
|
Link: https://bugzilla.kernel.org/show_bug.cgi?id=199779
|
||||||
|
Fixes: cc27b735ad3a ("PCI/portdrv: Turn off PCIe services during shutdown")
|
||||||
|
Cc: stable@vger.kernel.org
|
||||||
|
Reported-by: Ryan Finnie <ryan@finnie.org>
|
||||||
|
Tested-by: Don Brace <don.brace@microsemi.com>
|
||||||
|
Acked-by: Don Brace <don.brace@microsemi.com>
|
||||||
|
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
|
||||||
|
---
|
||||||
|
drivers/scsi/hpsa.c | 10 ++++++++--
|
||||||
|
1 file changed, 8 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
|
||||||
|
index 211975cc28c9..2d4b5177d1a2 100644
|
||||||
|
--- a/drivers/scsi/hpsa.c
|
||||||
|
+++ b/drivers/scsi/hpsa.c
|
||||||
|
@@ -8879,7 +8879,7 @@ static void hpsa_disable_rld_caching(struct ctlr_info *h)
|
||||||
|
kfree(options);
|
||||||
|
}
|
||||||
|
|
||||||
|
-static void hpsa_shutdown(struct pci_dev *pdev)
|
||||||
|
+static void __hpsa_shutdown(struct pci_dev *pdev)
|
||||||
|
{
|
||||||
|
struct ctlr_info *h;
|
||||||
|
|
||||||
|
@@ -8894,6 +8894,12 @@ static void hpsa_shutdown(struct pci_dev *pdev)
|
||||||
|
hpsa_disable_interrupt_mode(h); /* pci_init 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
+static void hpsa_shutdown(struct pci_dev *pdev)
|
||||||
|
+{
|
||||||
|
+ __hpsa_shutdown(pdev);
|
||||||
|
+ pci_disable_device(pdev);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static void hpsa_free_device_info(struct ctlr_info *h)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
@@ -8937,7 +8943,7 @@ static void hpsa_remove_one(struct pci_dev *pdev)
|
||||||
|
scsi_remove_host(h->scsi_host); /* init_one 8 */
|
||||||
|
/* includes hpsa_free_irqs - init_one 4 */
|
||||||
|
/* includes hpsa_disable_interrupt_mode - pci_init 2 */
|
||||||
|
- hpsa_shutdown(pdev);
|
||||||
|
+ __hpsa_shutdown(pdev);
|
||||||
|
|
||||||
|
hpsa_free_device_info(h); /* scan */
|
||||||
|
|
Loading…
Reference in New Issue
Block a user