All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH linux dev-5.15 0/2] spi: fsi: Fix spurious timeout
@ 2022-05-25 17:02 Eddie James
  2022-05-25 17:02 ` [PATCH linux dev-5.15 1/2] " Eddie James
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Eddie James @ 2022-05-25 17:02 UTC (permalink / raw)
  To: openbmc; +Cc: Eddie James, joel

The driver may return a timeout error even if the status register
indicates that the transfer may proceed. Fix this by restructuring
the polling loop.
Also include a patch to display the error return code when failing
to transfer one message, which would have been very helpful in
debugging this issue.

Eddie James (2):
  spi: fsi: Fix spurious timeout
  spi: core: Display return code when failing to transfer message

 drivers/spi/spi-fsi.c | 12 ++++++------
 drivers/spi/spi.c     |  3 ++-
 2 files changed, 8 insertions(+), 7 deletions(-)

-- 
2.27.0


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

* [PATCH linux dev-5.15 1/2] spi: fsi: Fix spurious timeout
  2022-05-25 17:02 [PATCH linux dev-5.15 0/2] spi: fsi: Fix spurious timeout Eddie James
@ 2022-05-25 17:02 ` Eddie James
  2022-05-25 17:02 ` [PATCH linux dev-5.15 2/2] spi: core: Display return code when failing to transfer message Eddie James
  2022-05-27  7:24 ` [PATCH linux dev-5.15 0/2] spi: fsi: Fix spurious timeout Joel Stanley
  2 siblings, 0 replies; 4+ messages in thread
From: Eddie James @ 2022-05-25 17:02 UTC (permalink / raw)
  To: openbmc; +Cc: Eddie James, joel

The driver may return a timeout error even if the status register
indicates that the transfer may proceed. Fix this by restructuring
the polling loop.

Fixes: b3b33a63865d ("spi: fsi: Implement a timeout for polling status")
Signed-off-by: Eddie James <eajames@linux.ibm.com>
---
 drivers/spi/spi-fsi.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/spi/spi-fsi.c b/drivers/spi/spi-fsi.c
index d403a7a3021d..72ab066ce552 100644
--- a/drivers/spi/spi-fsi.c
+++ b/drivers/spi/spi-fsi.c
@@ -319,12 +319,12 @@ static int fsi_spi_transfer_data(struct fsi_spi *ctx,
 
 			end = jiffies + msecs_to_jiffies(SPI_FSI_STATUS_TIMEOUT_MS);
 			do {
+				if (time_after(jiffies, end))
+					return -ETIMEDOUT;
+
 				rc = fsi_spi_status(ctx, &status, "TX");
 				if (rc)
 					return rc;
-
-				if (time_after(jiffies, end))
-					return -ETIMEDOUT;
 			} while (status & SPI_FSI_STATUS_TDR_FULL);
 
 			sent += nb;
@@ -337,12 +337,12 @@ static int fsi_spi_transfer_data(struct fsi_spi *ctx,
 		while (transfer->len > recv) {
 			end = jiffies + msecs_to_jiffies(SPI_FSI_STATUS_TIMEOUT_MS);
 			do {
+				if (time_after(jiffies, end))
+					return -ETIMEDOUT;
+
 				rc = fsi_spi_status(ctx, &status, "RX");
 				if (rc)
 					return rc;
-
-				if (time_after(jiffies, end))
-					return -ETIMEDOUT;
 			} while (!(status & SPI_FSI_STATUS_RDR_FULL));
 
 			rc = fsi_spi_read_reg(ctx, SPI_FSI_DATA_RX, &in);
-- 
2.27.0


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

* [PATCH linux dev-5.15 2/2] spi: core: Display return code when failing to transfer message
  2022-05-25 17:02 [PATCH linux dev-5.15 0/2] spi: fsi: Fix spurious timeout Eddie James
  2022-05-25 17:02 ` [PATCH linux dev-5.15 1/2] " Eddie James
@ 2022-05-25 17:02 ` Eddie James
  2022-05-27  7:24 ` [PATCH linux dev-5.15 0/2] spi: fsi: Fix spurious timeout Joel Stanley
  2 siblings, 0 replies; 4+ messages in thread
From: Eddie James @ 2022-05-25 17:02 UTC (permalink / raw)
  To: openbmc; +Cc: Eddie James, joel

All the other calls to the controller driver display the error
return code. The return code is helpful to understand what went
wrong, so include it when failing to transfer one message.

Signed-off-by: Eddie James <eajames@linux.ibm.com>
---
 drivers/spi/spi.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index d0bbf8f9414d..9bfaa6352b73 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -1616,7 +1616,8 @@ static void __spi_pump_messages(struct spi_controller *ctlr, bool in_kthread)
 	ret = ctlr->transfer_one_message(ctlr, msg);
 	if (ret) {
 		dev_err(&ctlr->dev,
-			"failed to transfer one message from queue\n");
+			"failed to transfer one message from queue: %d\n",
+			ret);
 		goto out;
 	}
 
-- 
2.27.0


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

* Re: [PATCH linux dev-5.15 0/2] spi: fsi: Fix spurious timeout
  2022-05-25 17:02 [PATCH linux dev-5.15 0/2] spi: fsi: Fix spurious timeout Eddie James
  2022-05-25 17:02 ` [PATCH linux dev-5.15 1/2] " Eddie James
  2022-05-25 17:02 ` [PATCH linux dev-5.15 2/2] spi: core: Display return code when failing to transfer message Eddie James
@ 2022-05-27  7:24 ` Joel Stanley
  2 siblings, 0 replies; 4+ messages in thread
From: Joel Stanley @ 2022-05-27  7:24 UTC (permalink / raw)
  To: Eddie James; +Cc: OpenBMC Maillist

On Wed, 25 May 2022 at 17:02, Eddie James <eajames@linux.ibm.com> wrote:
>
> The driver may return a timeout error even if the status register
> indicates that the transfer may proceed. Fix this by restructuring
> the polling loop.
> Also include a patch to display the error return code when failing
> to transfer one message, which would have been very helpful in
> debugging this issue.
>
> Eddie James (2):
>   spi: fsi: Fix spurious timeout
>   spi: core: Display return code when failing to transfer message

Applied, thanks.

>
>  drivers/spi/spi-fsi.c | 12 ++++++------
>  drivers/spi/spi.c     |  3 ++-
>  2 files changed, 8 insertions(+), 7 deletions(-)
>
> --
> 2.27.0
>

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

end of thread, other threads:[~2022-05-27  7:25 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-25 17:02 [PATCH linux dev-5.15 0/2] spi: fsi: Fix spurious timeout Eddie James
2022-05-25 17:02 ` [PATCH linux dev-5.15 1/2] " Eddie James
2022-05-25 17:02 ` [PATCH linux dev-5.15 2/2] spi: core: Display return code when failing to transfer message Eddie James
2022-05-27  7:24 ` [PATCH linux dev-5.15 0/2] spi: fsi: Fix spurious timeout Joel Stanley

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.