fsi: sbefifo: Use specified value of start of response timeout
authorAmitay Isaacs <amitay@ozlabs.org>
Fri, 21 Jan 2022 05:38:15 +0000 (16:08 +1030)
committerJoel Stanley <joel@jms.id.au>
Mon, 21 Feb 2022 09:08:17 +0000 (19:38 +1030)
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>
Reviewed-by: Eddie James <eajames@linux.ibm.com>
Link: https://lore.kernel.org/r/20220121053816.82253-2-joel@jms.id.au
Signed-off-by: Joel Stanley <joel@jms.id.au>
drivers/fsi/fsi-sbefifo.c

index 52328ad..1e9b326 100644 (file)
@@ -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