summaryrefslogtreecommitdiffstats
path: root/drivers/scsi/smartpqi
diff options
context:
space:
mode:
authorGilbert Wu <Gilbert.Wu@microchip.com>2022-11-08 13:22:03 -0600
committerMartin K. Petersen <martin.petersen@oracle.com>2022-11-17 18:10:59 +0000
commit14063fb625c4541f48ff0dc7ae005b0d5a159c3f (patch)
tree438ddb068ce9a6740eae6986c98399a10b80cefa /drivers/scsi/smartpqi
parentcc9befcbbb5ebce77726f938508700d913530035 (diff)
downloadlinux-stable-14063fb625c4541f48ff0dc7ae005b0d5a159c3f.tar.gz
linux-stable-14063fb625c4541f48ff0dc7ae005b0d5a159c3f.tar.bz2
linux-stable-14063fb625c4541f48ff0dc7ae005b0d5a159c3f.zip
scsi: smartpqi: Add controller cache flush during rmmod
Add in a call to flush the controller cache during driver removal. Reviewed-by: Scott Benesh <scott.benesh@microchip.com> Reviewed-by: Mike Mcgowan <mike.mcgowan@microchip.com> Reviewed-by: Kevin Barnett <kevin.barnett@microchip.com> Signed-off-by: Gilbert Wu <Gilbert.Wu@microchip.com> Signed-off-by: Don Brace <don.brace@microchip.com> Link: https://lore.kernel.org/r/166793532388.322537.878022136408270892.stgit@brunhilda Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/scsi/smartpqi')
-rw-r--r--drivers/scsi/smartpqi/smartpqi_init.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/scsi/smartpqi/smartpqi_init.c b/drivers/scsi/smartpqi/smartpqi_init.c
index e82f4de46ea7..e9c924ac1bb2 100644
--- a/drivers/scsi/smartpqi/smartpqi_init.c
+++ b/drivers/scsi/smartpqi/smartpqi_init.c
@@ -9040,6 +9040,7 @@ static void pqi_pci_remove(struct pci_dev *pci_dev)
{
struct pqi_ctrl_info *ctrl_info;
u16 vendor_id;
+ int rc;
ctrl_info = pci_get_drvdata(pci_dev);
if (!ctrl_info)
@@ -9051,6 +9052,13 @@ static void pqi_pci_remove(struct pci_dev *pci_dev)
else
ctrl_info->ctrl_removal_state = PQI_CTRL_GRACEFUL_REMOVAL;
+ if (ctrl_info->ctrl_removal_state == PQI_CTRL_GRACEFUL_REMOVAL) {
+ rc = pqi_flush_cache(ctrl_info, RESTART);
+ if (rc)
+ dev_err(&pci_dev->dev,
+ "unable to flush controller cache during remove\n");
+ }
+
pqi_remove_ctrl(ctrl_info);
}