stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] scsi: aacraid: Add a small delay after IOP reset
@ 2017-09-19 15:11 Guilherme G. Piccoli
  2017-09-19 15:37 ` Christoph Hellwig
  2017-09-21 16:19 ` Dave Carroll
  0 siblings, 2 replies; 12+ messages in thread
From: Guilherme G. Piccoli @ 2017-09-19 15:11 UTC (permalink / raw)
  To: aacraid, linux-scsi
  Cc: gpiccoli, RaghavaAditya.Renukunta, david.carroll, brking,
	dougmill, stable

Commit 0e9973ed3382 ("scsi: aacraid: Add periodic checks to see IOP reset
status") changed the way driver checks if a reset succeeded. Now, after an
IOP reset, aacraid immediately start polling a register to verify the reset
is complete.

This behavior cause regressions on the reset path in PowerPC (at least).
Since the delay after the IOP reset was removed by the aforementioned patch,
the fact driver just starts to read a register instantly after the reset
was issued (by writing in another register) "corrupts" the reset procedure,
which ends up failing all the time.

The issue highly impacted kdump on PowerPC, since on kdump path we
proactively issue a reset in adapter (through the reset_devices kernel
parameter).

This patch (re-)adds a delay right after IOP reset is issued. Empirically
we measured that 3 seconds is enough, but for safety reasons we delay
for 5s (and since it was 30s before, 5s is still a small amount).

For reference, without this patch we observe the following messages
on kdump kernel boot process:

  [ 76.294] aacraid 0003:01:00.0: IOP reset failed
  [ 76.294] aacraid 0003:01:00.0: ARC Reset attempt failed
  [ 86.524] aacraid 0003:01:00.0: adapter kernel panic'd ff.
  [ 86.524] aacraid 0003:01:00.0: Controller reset type is 3
  [ 86.524] aacraid 0003:01:00.0: Issuing IOP reset
  [146.534] aacraid 0003:01:00.0: IOP reset failed
  [146.534] aacraid 0003:01:00.0: ARC Reset attempt failed

Fixes: 0e9973ed3382 ("scsi: aacraid: Add periodic checks to see IOP reset status")
Cc: stable@vger.kernel.org # v4.13+
Signed-off-by: Guilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com>
---
 drivers/scsi/aacraid/src.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/scsi/aacraid/src.c b/drivers/scsi/aacraid/src.c
index 48c2b2b34b72..0c9361c87ec8 100644
--- a/drivers/scsi/aacraid/src.c
+++ b/drivers/scsi/aacraid/src.c
@@ -740,6 +740,8 @@ static void aac_send_iop_reset(struct aac_dev *dev)
 	aac_set_intx_mode(dev);
 
 	src_writel(dev, MUnit.IDR, IOP_SRC_RESET_MASK);
+
+	msleep(5000);
 }
 
 static void aac_send_hardware_soft_reset(struct aac_dev *dev)
-- 
2.14.1

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

end of thread, other threads:[~2017-09-28  1:43 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-09-19 15:11 [PATCH] scsi: aacraid: Add a small delay after IOP reset Guilherme G. Piccoli
2017-09-19 15:37 ` Christoph Hellwig
2017-09-19 15:49   ` Guilherme G. Piccoli
2017-09-19 15:52     ` Christoph Hellwig
2017-09-19 15:58       ` Guilherme G. Piccoli
2017-09-19 17:05       ` James Bottomley
2017-09-19 19:15         ` Guilherme G. Piccoli
2017-09-21 16:19 ` Dave Carroll
2017-09-25 21:09   ` Guilherme G. Piccoli
2017-09-25 21:34     ` Martin K. Petersen
2017-09-27 19:26       ` Dave Carroll
2017-09-28  1:42         ` Martin K. Petersen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).