All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 7/8] rsxx: Adding EEH check inside cregs timeout.
@ 2013-05-28 21:14 Philip J. Kelleher
  2013-05-29 18:26 ` Andy Shevchenko
  0 siblings, 1 reply; 3+ messages in thread
From: Philip J. Kelleher @ 2013-05-28 21:14 UTC (permalink / raw)
  To: axboe; +Cc: linux-kernel

From: Philip J Kelleher <pjk1939@linux.vnet.ibm.com>

Unfortunaly, our CPU register path does not do any kind of
EEH error checking. So to fix this issue, an ioread32 was
added to the CPU register timeout code. This way, the
driver can check to see if the timeout was caused by an EEH
error or not.

Signed-off-by: Philip J Kelleher <pjk1939@linux.vnet.ibm.com>
-------------------------------------------------------------------------------



diff -uprN -X linux-block-vanilla/Documentation/dontdiff linux-block-vanilla/drivers/block/rsxx/cregs.c linux-block/drivers/block/rsxx/cregs.c
--- linux-block-vanilla/drivers/block/rsxx/cregs.c	2013-05-01 18:36:44.693307317 -0500
+++ linux-block/drivers/block/rsxx/cregs.c	2013-05-01 18:59:57.596197150 -0500
@@ -431,6 +431,15 @@ static int __issue_creg_rw(struct rsxx_c
 	*hw_stat = completion.creg_status;
 
 	if (completion.st) {
+		/*
+		 * This read is needed to verify that there has not been any
+		 * extreme errors that might have occurred, i.e. EEH. The
+		 * function iowrite32 will not detect EEH errors, so it is
+		 * necessary that we recover if such an error is the reason
+		 * for the timeout.
+		 */
+		ioread32(card->regmap + SCRATCH);
+
 		dev_warn(CARD_TO_DEV(card),
 			"creg command failed(%d x%08x)\n",
 			completion.st, addr);


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

* Re: [PATCH 7/8] rsxx: Adding EEH check inside cregs timeout.
  2013-05-28 21:14 [PATCH 7/8] rsxx: Adding EEH check inside cregs timeout Philip J. Kelleher
@ 2013-05-29 18:26 ` Andy Shevchenko
  0 siblings, 0 replies; 3+ messages in thread
From: Andy Shevchenko @ 2013-05-29 18:26 UTC (permalink / raw)
  To: Philip J. Kelleher; +Cc: Jens Axboe, linux-kernel

On Wed, May 29, 2013 at 12:14 AM, Philip J. Kelleher
<pjk1939@linux.vnet.ibm.com> wrote:
> From: Philip J Kelleher <pjk1939@linux.vnet.ibm.com>
>
> Unfortunaly, our CPU register path does not do any kind of
> EEH error checking. So to fix this issue, an ioread32 was
> added to the CPU register timeout code. This way, the
> driver can check to see if the timeout was caused by an EEH
> error or not.


> +++ linux-block/drivers/block/rsxx/cregs.c      2013-05-01 18:59:57.596197150 -0500
> @@ -431,6 +431,15 @@ static int __issue_creg_rw(struct rsxx_c
>         *hw_stat = completion.creg_status;
>
>         if (completion.st) {
> +               /*
> +                * This read is needed to verify that there has not been any
> +                * extreme errors that might have occurred, i.e. EEH. The
> +                * function iowrite32 will not detect EEH errors, so it is
> +                * necessary that we recover if such an error is the reason
> +                * for the timeout.
> +                */
> +               ioread32(card->regmap + SCRATCH);

This is just a dummy read, right? Perhaps you may add this word to the
explanation.

--
With Best Regards,
Andy Shevchenko

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

* [PATCH 7/8] rsxx: Adding EEH check inside cregs timeout.
@ 2013-05-02  0:31 Philip J. Kelleher
  0 siblings, 0 replies; 3+ messages in thread
From: Philip J. Kelleher @ 2013-05-02  0:31 UTC (permalink / raw)
  To: axboe; +Cc: linux-kernel, klebers, brking

From: Philip J Kelleher <pjk1939@linux.vnet.ibm.com>

Unfortunaly, our CPU register path does not do any kind of
EEH error checking. So to fix this issue, an ioread32 was
added to the CPU register timeout code. This way, the
driver can check to see if the timeout was caused by an EEH
error or not.

Signed-off-by: Philip J Kelleher <pjk1939@linux.vnet.ibm.com>
-------------------------------------------------------------------------------


diff -uprN -X linux-block-vanilla/Documentation/dontdiff linux-block-vanilla/drivers/block/rsxx/cregs.c linux-block/drivers/block/rsxx/cregs.c
--- linux-block-vanilla/drivers/block/rsxx/cregs.c	2013-05-01 18:36:44.693307317 -0500
+++ linux-block/drivers/block/rsxx/cregs.c	2013-05-01 18:59:57.596197150 -0500
@@ -431,6 +431,15 @@ static int __issue_creg_rw(struct rsxx_c
 	*hw_stat = completion.creg_status;
 
 	if (completion.st) {
+		/*
+		 * This read is needed to verify that there has not been any
+		 * extreme errors that might have occurred, i.e. EEH. The
+		 * function iowrite32 will not detect EEH errors, so it is
+		 * necessary that we recover if such an error is the reason
+		 * for the timeout.
+		 */
+		ioread32(card->regmap + SCRATCH);
+
 		dev_warn(CARD_TO_DEV(card),
 			"creg command failed(%d x%08x)\n",
 			completion.st, addr);


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

end of thread, other threads:[~2013-05-29 18:26 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-05-28 21:14 [PATCH 7/8] rsxx: Adding EEH check inside cregs timeout Philip J. Kelleher
2013-05-29 18:26 ` Andy Shevchenko
  -- strict thread matches above, loose matches on Subject: below --
2013-05-02  0:31 Philip J. Kelleher

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.