All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] aacraid: Fix controller initialization failure
@ 2017-10-17  0:22 Raghava Aditya Renukunta
  2017-10-17  3:18 ` Martin K. Petersen
  0 siblings, 1 reply; 2+ messages in thread
From: Raghava Aditya Renukunta @ 2017-10-17  0:22 UTC (permalink / raw)
  To: linux-scsi; +Cc: David.Carroll, Scott.Benesh

This is a fix to an issue where the driver sends its periodic WELLNESS
command to the controller after the driver shut it down.This causes the
controller to crash. The window where this can happen is small, but it
can be hit at around 4 hours of constant resets.

Cc: <stable@vger.kernel.org>
Fixes: fbd185986eba (aacraid: Fix AIF triggered IOP_RESET)
Signed-off-by: Raghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com>
Reviewed-by: Dave Carroll <david.carroll@microsemi.com>
---
 drivers/scsi/aacraid/comminit.c |    8 +++++---
 drivers/scsi/aacraid/linit.c    |    7 ++++++-
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/drivers/scsi/aacraid/comminit.c b/drivers/scsi/aacraid/comminit.c
index 97d269f..1bc623a 100644
--- a/drivers/scsi/aacraid/comminit.c
+++ b/drivers/scsi/aacraid/comminit.c
@@ -302,9 +302,11 @@ int aac_send_shutdown(struct aac_dev * dev)
 		return -ENOMEM;
 	aac_fib_init(fibctx);
 
-	mutex_lock(&dev->ioctl_mutex);
-	dev->adapter_shutdown = 1;
-	mutex_unlock(&dev->ioctl_mutex);
+	if (!dev->adapter_shutdown) {
+		mutex_lock(&dev->ioctl_mutex);
+		dev->adapter_shutdown = 1;
+		mutex_unlock(&dev->ioctl_mutex);
+	}
 
 	cmd = (struct aac_close *) fib_data(fibctx);
 	cmd->command = cpu_to_le32(VM_CloseAll);
diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c
index 87cc4a9..710ace6 100644
--- a/drivers/scsi/aacraid/linit.c
+++ b/drivers/scsi/aacraid/linit.c
@@ -1547,8 +1547,9 @@ static void __aac_shutdown(struct aac_dev * aac)
 {
 	int i;
 
+	mutex_lock(&aac->ioctl_mutex);
 	aac->adapter_shutdown = 1;
-	aac_send_shutdown(aac);
+	mutex_unlock(&aac->ioctl_mutex);
 
 	if (aac->aif_thread) {
 		int i;
@@ -1561,7 +1562,11 @@ static void __aac_shutdown(struct aac_dev * aac)
 		}
 		kthread_stop(aac->thread);
 	}
+
+	aac_send_shutdown(aac);
+
 	aac_adapter_disable_int(aac);
+
 	if (aac_is_src(aac)) {
 		if (aac->max_msix > 1) {
 			for (i = 0; i < aac->max_msix; i++) {

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] aacraid: Fix controller initialization failure
  2017-10-17  0:22 [PATCH] aacraid: Fix controller initialization failure Raghava Aditya Renukunta
@ 2017-10-17  3:18 ` Martin K. Petersen
  0 siblings, 0 replies; 2+ messages in thread
From: Martin K. Petersen @ 2017-10-17  3:18 UTC (permalink / raw)
  To: Raghava Aditya Renukunta; +Cc: linux-scsi, David.Carroll, Scott.Benesh


Raghava,

> This is a fix to an issue where the driver sends its periodic WELLNESS
> command to the controller after the driver shut it down.This causes
> the controller to crash. The window where this can happen is small,
> but it can be hit at around 4 hours of constant resets.

Applied to 4.14/scsi-fixes. Thank you!

-- 
Martin K. Petersen	Oracle Linux Engineering

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-10-17  3:18 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-10-17  0:22 [PATCH] aacraid: Fix controller initialization failure Raghava Aditya Renukunta
2017-10-17  3:18 ` Martin K. Petersen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.