[PATCH linux dev-4.13 6/6] fsi/fsi-master-gpio: Reduce dpoll clocks

Benjamin Herrenschmidt benh at kernel.crashing.org
Thu May 10 13:12:18 AEST 2018


On Thu, 2018-05-10 at 12:36 +0930, Andrew Jeffery wrote:
> On Wed, 9 May 2018, at 05:30, Christopher Bostic wrote:
> > Reviewed-by: Christopher Bostic <cbostic at linux.vnet.ibm.com>
> > 
> > 
> > On 5/7/18 8:46 PM, Benjamin Herrenschmidt wrote:
> > > FSI_GPIO_DPOLL_CLOCKS is the number of clocks before sending
> > > a DPOLL command after receiving a BUSY status. It should be
> > > at least tSendDelay (16 clocks).
> > > 
> > > According to comments in the code, it needs to also be at least
> > > 21 clocks due to HW issues.
> > > 
> > > It's currently 100 clocks which impacts performances negatively
> > > in some cases. Reduces it in half to 50 clocks which seems to
> > > still be solid.
> 
> Out of curiosity, was there any science to 50 beyond the (16/21
> cycle) reasoning above? Was there instability at lower values?

No. The "science" aka spec would need it to be tSendDelay, which is 16
cycles. However there's a comment that says that there are issues below
21. I decided to keep *some* paranoia and cut in half to 50 instead of
100.


> > > 
> > > Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
> > > ---
> > >   drivers/fsi/fsi-master-gpio.c | 5 +++--
> > >   1 file changed, 3 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/drivers/fsi/fsi-master-gpio.c b/drivers/fsi/fsi-master-gpio.c
> > > index 029b0a5b6d89..bd2b2cbd5eb5 100644
> > > --- a/drivers/fsi/fsi-master-gpio.c
> > > +++ b/drivers/fsi/fsi-master-gpio.c
> > > @@ -29,7 +29,8 @@
> > >   #define	FSI_GPIO_CMD_TERM	0x3f
> > >   #define FSI_GPIO_CMD_ABS_AR	0x4
> > > 
> > > -#define	FSI_GPIO_DPOLL_CLOCKS	100      /* < 21 will cause slave to hang */
> > > +
> > > +#define	FSI_GPIO_DPOLL_CLOCKS	50      /* < 21 will cause slave to hang */
> > > 
> > >   /* Bus errors */
> > >   #define	FSI_GPIO_ERR_BUSY	1	/* Slave stuck in busy state */
> > > @@ -43,7 +44,7 @@
> > >   #define	FSI_GPIO_RESP_ACK	0
> > >   #define	FSI_GPIO_RESP_ACKD	4
> > > 
> > > -#define	FSI_GPIO_MAX_BUSY	100
> > > +#define	FSI_GPIO_MAX_BUSY	200
> > >   #define	FSI_GPIO_MTOE_COUNT	1000
> > >   #define	FSI_GPIO_DRAIN_BITS	20
> > >   #define	FSI_GPIO_CRC_SIZE	4
> > > 


More information about the openbmc mailing list