From: Greg Kroah-Hartman Date: Thu, 1 Dec 2016 07:11:12 +0000 (+0100) Subject: 4.8-stable patches X-Git-Tag: v4.4.36~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0a796dc624453728c869cacd304b6240ceb6b149;p=thirdparty%2Fkernel%2Fstable-queue.git 4.8-stable patches added patches: scsi-mpt3sas-unblock-device-after-controller-reset.patch --- diff --git a/queue-4.8/scsi-mpt3sas-unblock-device-after-controller-reset.patch b/queue-4.8/scsi-mpt3sas-unblock-device-after-controller-reset.patch new file mode 100644 index 00000000000..bb98110428b --- /dev/null +++ b/queue-4.8/scsi-mpt3sas-unblock-device-after-controller-reset.patch @@ -0,0 +1,64 @@ +From 7ff723ad0f87feba43dda45fdae71206063dd7d4 Mon Sep 17 00:00:00 2001 +From: Suganath Prabu S +Date: Thu, 17 Nov 2016 16:15:58 +0530 +Subject: scsi: mpt3sas: Unblock device after controller reset + +From: Suganath Prabu S + +commit 7ff723ad0f87feba43dda45fdae71206063dd7d4 upstream. + +While issuing any ATA passthrough command to firmware the driver will +block the device. But it will unblock the device only if the I/O +completes through the ISR path. If a controller reset occurs before +command completion the device will remain in blocked state. + +Make sure we unblock the device following a controller reset if an ATA +passthrough command was queued. + +[mkp: clarified patch description] + +Fixes: ac6c2a93bd07 ("mpt3sas: Fix for SATA drive in blocked state, after diag reset") +Signed-off-by: Suganath Prabu S +Signed-off-by: Martin K. Petersen +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/scsi/mpt3sas/mpt3sas_scsih.c | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +--- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c ++++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c +@@ -3894,6 +3894,11 @@ _scsih_temp_threshold_events(struct MPT3 + } + } + ++static inline bool ata_12_16_cmd(struct scsi_cmnd *scmd) ++{ ++ return (scmd->cmnd[0] == ATA_12 || scmd->cmnd[0] == ATA_16); ++} ++ + /** + * _scsih_flush_running_cmds - completing outstanding commands. + * @ioc: per adapter object +@@ -3915,6 +3920,9 @@ _scsih_flush_running_cmds(struct MPT3SAS + if (!scmd) + continue; + count++; ++ if (ata_12_16_cmd(scmd)) ++ scsi_internal_device_unblock(scmd->device, ++ SDEV_RUNNING); + mpt3sas_base_free_smid(ioc, smid); + scsi_dma_unmap(scmd); + if (ioc->pci_error_recovery) +@@ -4019,11 +4027,6 @@ _scsih_eedp_error_handling(struct scsi_c + SAM_STAT_CHECK_CONDITION; + } + +-static inline bool ata_12_16_cmd(struct scsi_cmnd *scmd) +-{ +- return (scmd->cmnd[0] == ATA_12 || scmd->cmnd[0] == ATA_16); +-} +- + /** + * scsih_qcmd - main scsi request entry point + * @scmd: pointer to scsi command object diff --git a/queue-4.8/series b/queue-4.8/series index ce86d7f0d9e..936d9f3647a 100644 --- a/queue-4.8/series +++ b/queue-4.8/series @@ -34,3 +34,4 @@ powerpc-boot-fix-the-early-opal-console-wrappers.patch can-bcm-fix-support-for-can-fd-frames.patch mm-oom-stop-pre-mature-high-order-oom-killer-invocations.patch flow_dissect-call-init_default_flow_dissectors-earlier.patch +scsi-mpt3sas-unblock-device-after-controller-reset.patch