]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
scsi: smartpqi: update kexec and power down support
authorKevin Barnett <kevin.barnett@microsemi.com>
Thu, 10 Aug 2017 18:47:03 +0000 (13:47 -0500)
committerKirtikar Kashyap <kirtikar.kashyap@oracle.com>
Tue, 17 Oct 2017 21:57:31 +0000 (14:57 -0700)
Add PQI reset to driver shutdown callback to work around controller bug.

During an 1.) OS shutdown or 2.) kexec outside of a kdump, the Linux
kernel will clear BME on our controller.

If BME is cleared during a controller/host PCIe transfer, the controller
will lock up.

So we perform a PQI reset in the driver's shutdown callback function to
eliminate the possibility of a controller/host PCIe transfer being
active when the kernel clears BME immediately after calling the driver's
shutdown callback.

Reviewed-by: Scott Benesh <scott.benesh@microsemi.com>
Signed-off-by: Kevin Barnett <kevin.barnett@microsemi.com>
Signed-off-by: Don Brace <don.brace@microsemi.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
(cherry picked from commit b6d478119edeaca964b46796fd26893b81f8a561)

Orabug: 26943380

Signed-off-by: Kirtikar Kashyap <kirtikar.kashyap@oracle.com>
Reviewed-by: Jack Vogel <jack.vogel@oracle.com>
drivers/scsi/smartpqi/smartpqi_init.c

index dab4e524a20844e15504d16f6957f9dc9adb9b66..faa3b631307fc3e650d3d19dba0cd6ffeae89ddb 100644 (file)
@@ -6738,6 +6738,7 @@ static void pqi_shutdown(struct pci_dev *pci_dev)
         * storage.
         */
        rc = pqi_flush_cache(ctrl_info, SHUTDOWN);
+       pqi_reset(ctrl_info);
        if (rc == 0)
                return;