diff mbox series

[v3,1/2] fsi: sbefifo: Use specified value of start of response timeout

Message ID 20220121053816.82253-2-joel@jms.id.au
State Accepted, archived
Headers show
Series fsi: sbefifo: Add userspace timeout control | expand

Commit Message

Joel Stanley Jan. 21, 2022, 5:38 a.m. UTC
From: Amitay Isaacs <amitay@ozlabs.org>

For some of the chip-ops where sbe needs to collect trace information,
sbe can take a long time (>30s) to respond.  Currently these chip-ops
will timeout as the start of response timeout defaults to 10s.

Instead of default value, use specified value.  The require timeout
value will be set using ioctl.

Signed-off-by: Amitay Isaacs <amitay@ozlabs.org>
Signed-off-by: Joel Stanley <joel@jms.id.au>
---
 drivers/fsi/fsi-sbefifo.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Eddie James Jan. 24, 2022, 2:17 p.m. UTC | #1
On 1/20/22 23:38, Joel Stanley wrote:
> From: Amitay Isaacs <amitay@ozlabs.org>
>
> For some of the chip-ops where sbe needs to collect trace information,
> sbe can take a long time (>30s) to respond.  Currently these chip-ops
> will timeout as the start of response timeout defaults to 10s.
>
> Instead of default value, use specified value.  The require timeout
> value will be set using ioctl.


Reviewed-by: Eddie James <eajames@linux.ibm.com>


>
> Signed-off-by: Amitay Isaacs <amitay@ozlabs.org>
> Signed-off-by: Joel Stanley <joel@jms.id.au>
> ---
>   drivers/fsi/fsi-sbefifo.c | 4 +++-
>   1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/fsi/fsi-sbefifo.c b/drivers/fsi/fsi-sbefifo.c
> index 52328adef643..1e9b326e8f67 100644
> --- a/drivers/fsi/fsi-sbefifo.c
> +++ b/drivers/fsi/fsi-sbefifo.c
> @@ -125,6 +125,7 @@ struct sbefifo {
>   	bool			dead;
>   	bool			async_ffdc;
>   	bool			timed_out;
> +	u32			timeout_start_rsp_ms;
>   };
>   
>   struct sbefifo_user {
> @@ -549,7 +550,7 @@ static int sbefifo_read_response(struct sbefifo *sbefifo, struct iov_iter *respo
>   
>   	dev_vdbg(dev, "reading response, buflen = %zd\n", iov_iter_count(response));
>   
> -	timeout = msecs_to_jiffies(SBEFIFO_TIMEOUT_START_RSP);
> +	timeout = msecs_to_jiffies(sbefifo->timeout_start_rsp_ms);
>   	for (;;) {
>   		/* Grab FIFO status (this will handle parity errors) */
>   		rc = sbefifo_wait(sbefifo, false, &status, timeout);
> @@ -972,6 +973,7 @@ static int sbefifo_probe(struct device *dev)
>   	sbefifo->fsi_dev = fsi_dev;
>   	dev_set_drvdata(dev, sbefifo);
>   	mutex_init(&sbefifo->lock);
> +	sbefifo->timeout_start_rsp_ms = SBEFIFO_TIMEOUT_START_RSP;
>   
>   	/*
>   	 * Try cleaning up the FIFO. If this fails, we still register the
diff mbox series

Patch

diff --git a/drivers/fsi/fsi-sbefifo.c b/drivers/fsi/fsi-sbefifo.c
index 52328adef643..1e9b326e8f67 100644
--- a/drivers/fsi/fsi-sbefifo.c
+++ b/drivers/fsi/fsi-sbefifo.c
@@ -125,6 +125,7 @@  struct sbefifo {
 	bool			dead;
 	bool			async_ffdc;
 	bool			timed_out;
+	u32			timeout_start_rsp_ms;
 };
 
 struct sbefifo_user {
@@ -549,7 +550,7 @@  static int sbefifo_read_response(struct sbefifo *sbefifo, struct iov_iter *respo
 
 	dev_vdbg(dev, "reading response, buflen = %zd\n", iov_iter_count(response));
 
-	timeout = msecs_to_jiffies(SBEFIFO_TIMEOUT_START_RSP);
+	timeout = msecs_to_jiffies(sbefifo->timeout_start_rsp_ms);
 	for (;;) {
 		/* Grab FIFO status (this will handle parity errors) */
 		rc = sbefifo_wait(sbefifo, false, &status, timeout);
@@ -972,6 +973,7 @@  static int sbefifo_probe(struct device *dev)
 	sbefifo->fsi_dev = fsi_dev;
 	dev_set_drvdata(dev, sbefifo);
 	mutex_init(&sbefifo->lock);
+	sbefifo->timeout_start_rsp_ms = SBEFIFO_TIMEOUT_START_RSP;
 
 	/*
 	 * Try cleaning up the FIFO. If this fails, we still register the