aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorKashyap, Desai <kashyap.desai@lsi.com>2011-01-04 01:04:17 -0500
committerJames Bottomley <James.Bottomley@suse.de>2011-01-24 10:15:38 -0500
commitefe82a16bc0f9f9e1fc8fa706eb0309fcd57770a (patch)
tree8a3f1fe2b986206a53b769c69c23dc9a82003905 /drivers/scsi
parent4dc2757a2e9a9d1f2faee4fc6119276fc0061c16 (diff)
[SCSI] mpt2sas: fix internal device reset for older firmware prior to MPI Rev K
The "internal device reset complete" event is not supported for older firmware prior to MPI Rev K We added a check in the driver so the "internal device reset" event is ignored for older firmware. When ignored, the tm_busy flag doesn't get set nor cleared. Without this fix, IO queues would be froozen indefinetly after the "internal device reset" event, as the "complete" event never sent to clear the flag. Signed-off-by: Kashyap Desai <kashyap.desai@lsi.com> Cc: stable@kernel.org Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/mpt2sas/mpt2sas_scsih.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/scsi/mpt2sas/mpt2sas_scsih.c b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
index 95d82743d7b1..a16f2a05736f 100644
--- a/drivers/scsi/mpt2sas/mpt2sas_scsih.c
+++ b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
@@ -5002,6 +5002,12 @@ _scsih_sas_device_status_change_event(struct MPT2SAS_ADAPTER *ioc,
5002 event_data); 5002 event_data);
5003#endif 5003#endif
5004 5004
5005 /* In MPI Revision K (0xC), the internal device reset complete was
5006 * implemented, so avoid setting tm_busy flag for older firmware.
5007 */
5008 if ((ioc->facts.HeaderVersion >> 8) < 0xC)
5009 return;
5010
5005 if (event_data->ReasonCode != 5011 if (event_data->ReasonCode !=
5006 MPI2_EVENT_SAS_DEV_STAT_RC_INTERNAL_DEVICE_RESET && 5012 MPI2_EVENT_SAS_DEV_STAT_RC_INTERNAL_DEVICE_RESET &&
5007 event_data->ReasonCode != 5013 event_data->ReasonCode !=