blob: 75048ad1612d69e58f33c28aa3b4c4f57f4b80ab [file] [log] [blame]
From 8b7b288c82970ab7d06e0ed27c8757cb5ee6a165 Mon Sep 17 00:00:00 2001
From: peter chang <>
Date: Thu, 14 Nov 2019 15:38:58 +0530
Subject: [PATCH] scsi: pm80xx: Fix for SATA device discovery
commit ce21c63ee995b7a8b7b81245f2cee521f8c3c220 upstream.
Driver was missing complete() call in mpi_sata_completion which result in
SATA abort error handling timing out. That causes the device to be left in
the in_recovery state so subsequent commands sent to the device fail and
the OS removes access to it.
Acked-by: Jack Wang <>
Signed-off-by: peter chang <>
Signed-off-by: Deepak Ukey <>
Signed-off-by: Viswas G <>
Signed-off-by: Martin K. Petersen <>
Signed-off-by: Paul Gortmaker <>
diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c
index 301de40eb708..f628164bf757 100644
--- a/drivers/scsi/pm8001/pm80xx_hwi.c
+++ b/drivers/scsi/pm8001/pm80xx_hwi.c
@@ -2382,6 +2382,8 @@ mpi_sata_completion(struct pm8001_hba_info *pm8001_ha, void *piomb)
pm8001_printk("task 0x%p done with io_status 0x%x"
" resp 0x%x stat 0x%x but aborted by upper layer!\n",
t, status, ts->resp, ts->stat));
+ if (t->slow_task)
+ complete(&t->slow_task->completion);
pm8001_ccb_task_free(pm8001_ha, t, ccb, tag);
} else {
spin_unlock_irqrestore(&t->task_state_lock, flags);