2019-08-15 20:11:54

by Eddie James

[permalink] [raw]
Subject: [PATCH] fsi: scom: Don't abort operations for minor errors

The scom driver currently fails out of operations if certain system
errors are flagged in the status register; system checkstop, special
attention, or recoverable error. These errors won't impact the ability
of the scom engine to perform operations, so the driver should continue
under these conditions.
Also, don't do a PIB reset for these conditions, since it won't help.

Signed-off-by: Eddie James <[email protected]>
---
drivers/fsi/fsi-scom.c | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)

diff --git a/drivers/fsi/fsi-scom.c b/drivers/fsi/fsi-scom.c
index 343153d..004dc03 100644
--- a/drivers/fsi/fsi-scom.c
+++ b/drivers/fsi/fsi-scom.c
@@ -38,8 +38,7 @@
#define SCOM_STATUS_PIB_RESP_MASK 0x00007000
#define SCOM_STATUS_PIB_RESP_SHIFT 12

-#define SCOM_STATUS_ANY_ERR (SCOM_STATUS_ERR_SUMMARY | \
- SCOM_STATUS_PROTECTION | \
+#define SCOM_STATUS_ANY_ERR (SCOM_STATUS_PROTECTION | \
SCOM_STATUS_PARITY | \
SCOM_STATUS_PIB_ABORT | \
SCOM_STATUS_PIB_RESP_MASK)
@@ -251,11 +250,6 @@ static int handle_fsi2pib_status(struct scom_device *scom, uint32_t status)
/* Return -EBUSY on PIB abort to force a retry */
if (status & SCOM_STATUS_PIB_ABORT)
return -EBUSY;
- if (status & SCOM_STATUS_ERR_SUMMARY) {
- fsi_device_write(scom->fsi_dev, SCOM_FSI2PIB_RESET_REG, &dummy,
- sizeof(uint32_t));
- return -EIO;
- }
return 0;
}

--
1.8.3.1


2019-08-21 05:27:26

by Benjamin Herrenschmidt

[permalink] [raw]
Subject: Re: [PATCH] fsi: scom: Don't abort operations for minor errors

On Thu, 2019-08-15 at 14:08 -0500, Eddie James wrote:
> The scom driver currently fails out of operations if certain system
> errors are flagged in the status register; system checkstop, special
> attention, or recoverable error. These errors won't impact the ability
> of the scom engine to perform operations, so the driver should continue
> under these conditions.
> Also, don't do a PIB reset for these conditions, since it won't help.
>
> Signed-off-by: Eddie James <[email protected]>

Acked-by: Benjamin Herrenschmidt <[email protected]>

> ---
> drivers/fsi/fsi-scom.c | 8 +-------
> 1 file changed, 1 insertion(+), 7 deletions(-)
>
> diff --git a/drivers/fsi/fsi-scom.c b/drivers/fsi/fsi-scom.c
> index 343153d..004dc03 100644
> --- a/drivers/fsi/fsi-scom.c
> +++ b/drivers/fsi/fsi-scom.c
> @@ -38,8 +38,7 @@
> #define SCOM_STATUS_PIB_RESP_MASK 0x00007000
> #define SCOM_STATUS_PIB_RESP_SHIFT 12
>
> -#define SCOM_STATUS_ANY_ERR (SCOM_STATUS_ERR_SUMMARY | \
> - SCOM_STATUS_PROTECTION | \
> +#define SCOM_STATUS_ANY_ERR (SCOM_STATUS_PROTECTION | \
> SCOM_STATUS_PARITY | \
> SCOM_STATUS_PIB_ABORT | \
> SCOM_STATUS_PIB_RESP_MASK)
> @@ -251,11 +250,6 @@ static int handle_fsi2pib_status(struct scom_device *scom, uint32_t status)
> /* Return -EBUSY on PIB abort to force a retry */
> if (status & SCOM_STATUS_PIB_ABORT)
> return -EBUSY;
> - if (status & SCOM_STATUS_ERR_SUMMARY) {
> - fsi_device_write(scom->fsi_dev, SCOM_FSI2PIB_RESET_REG, &dummy,
> - sizeof(uint32_t));
> - return -EIO;
> - }
> return 0;
> }
>

2019-08-21 06:11:02

by Joel Stanley

[permalink] [raw]
Subject: Re: [PATCH] fsi: scom: Don't abort operations for minor errors

On Wed, 21 Aug 2019 at 05:26, Benjamin Herrenschmidt
<[email protected]> wrote:
>
> On Thu, 2019-08-15 at 14:08 -0500, Eddie James wrote:
> > The scom driver currently fails out of operations if certain system
> > errors are flagged in the status register; system checkstop, special
> > attention, or recoverable error. These errors won't impact the ability
> > of the scom engine to perform operations, so the driver should continue
> > under these conditions.
> > Also, don't do a PIB reset for these conditions, since it won't help.
> >
> > Signed-off-by: Eddie James <[email protected]>
>
> Acked-by: Benjamin Herrenschmidt <[email protected]>

Thanks Ben. We also have one from jk which was sent to the openbmc list:

Acked-by: Jeremy Kerr <[email protected]>

And we can add:

Fixes: 6b293258cded ("fsi: scom: Major overhaul")

I'll stick this in the FSI tree.

Cheers,

Joel

>
> > ---
> > drivers/fsi/fsi-scom.c | 8 +-------
> > 1 file changed, 1 insertion(+), 7 deletions(-)
> >
> > diff --git a/drivers/fsi/fsi-scom.c b/drivers/fsi/fsi-scom.c
> > index 343153d..004dc03 100644
> > --- a/drivers/fsi/fsi-scom.c
> > +++ b/drivers/fsi/fsi-scom.c
> > @@ -38,8 +38,7 @@
> > #define SCOM_STATUS_PIB_RESP_MASK 0x00007000
> > #define SCOM_STATUS_PIB_RESP_SHIFT 12
> >
> > -#define SCOM_STATUS_ANY_ERR (SCOM_STATUS_ERR_SUMMARY | \
> > - SCOM_STATUS_PROTECTION | \
> > +#define SCOM_STATUS_ANY_ERR (SCOM_STATUS_PROTECTION | \
> > SCOM_STATUS_PARITY | \
> > SCOM_STATUS_PIB_ABORT | \
> > SCOM_STATUS_PIB_RESP_MASK)
> > @@ -251,11 +250,6 @@ static int handle_fsi2pib_status(struct scom_device *scom, uint32_t status)
> > /* Return -EBUSY on PIB abort to force a retry */
> > if (status & SCOM_STATUS_PIB_ABORT)
> > return -EBUSY;
> > - if (status & SCOM_STATUS_ERR_SUMMARY) {
> > - fsi_device_write(scom->fsi_dev, SCOM_FSI2PIB_RESET_REG, &dummy,
> > - sizeof(uint32_t));
> > - return -EIO;
> > - }
> > return 0;
> > }
> >
>