RE: [PATCH 4/7] iio: adis16475: re-set max spi transfer

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----Original Message-----
> From: Sa, Nuno <Nuno.Sa@xxxxxxxxxx>
> Sent: Thursday, April 15, 2021 9:54 AM
> To: Alexandru Ardelean <ardeleanalex@xxxxxxxxx>
> Cc: linux-iio <linux-iio@xxxxxxxxxxxxxxx>; Jonathan Cameron
> <jic23@xxxxxxxxxx>; Hennerich, Michael
> <Michael.Hennerich@xxxxxxxxxx>; Lars-Peter Clausen
> <lars@xxxxxxxxxx>
> Subject: RE: [PATCH 4/7] iio: adis16475: re-set max spi transfer
> 
> [External]
> 
> 
> 
> > -----Original Message-----
> > From: Alexandru Ardelean <ardeleanalex@xxxxxxxxx>
> > Sent: Wednesday, April 14, 2021 9:29 AM
> > To: Sa, Nuno <Nuno.Sa@xxxxxxxxxx>
> > Cc: linux-iio <linux-iio@xxxxxxxxxxxxxxx>; Jonathan Cameron
> > <jic23@xxxxxxxxxx>; Hennerich, Michael
> > <Michael.Hennerich@xxxxxxxxxx>; Lars-Peter Clausen
> > <lars@xxxxxxxxxx>
> > Subject: Re: [PATCH 4/7] iio: adis16475: re-set max spi transfer
> >
> > [External]
> >
> > On Tue, Apr 13, 2021 at 5:45 PM Nuno Sa <nuno.sa@xxxxxxxxxx>
> > wrote:
> > >
> > > In case 'spi_sync()' fails, we would be left with a max spi transfer
> > > which is not the one the user expects it to be. Hence, we need to
> re-
> > set
> > > it also in this error path.
> > >
> > > Fixes: fff7352bf7a3c ("iio: imu: Add support for adis16475")
> > > Signed-off-by: Nuno Sa <nuno.sa@xxxxxxxxxx>
> > > ---
> > >  drivers/iio/imu/adis16475.c | 4 +++-
> > >  1 file changed, 3 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/iio/imu/adis16475.c
> b/drivers/iio/imu/adis16475.c
> > > index 51b76444db0b..9dca7e506200 100644
> > > --- a/drivers/iio/imu/adis16475.c
> > > +++ b/drivers/iio/imu/adis16475.c
> > > @@ -1067,8 +1067,10 @@ static irqreturn_t
> > adis16475_trigger_handler(int irq, void *p)
> > >         adis->spi->max_speed_hz = ADIS16475_BURST_MAX_SPEED;
> > >
> > >         ret = spi_sync(adis->spi, &adis->msg);
> >
> > Purely stylistic here.
> > But, the restore from the cached variable could be done here in a
> > single line.
> > So. just moving [1] here.
> 
> You mean also doing it in the label? I thought about that and the
> reason
> why I didn't is that on a normal run, I want to reset the max freq as
> soon
> as possible so that if someone concurrently tries to read 'direct mode'
> attrs
> gets the max freq. This was my reasoning but I admit that it's not that
> important so I will leave this to Jonathan's preference...
> 
> Hmm now that I spoke about the concurrently access to IIO attr and
> being paranoid about
> the compiler, I wonder if we should not use
> WRITE_ONCE(adis->spi->max_speed_hz,
> ADIS16475_BURST_MAX_SPEED)...

Hmmm, actually WRITE_ONCE would not be any help since the spi core
does not use READ_ONCE. So, if we are going to be paranoid about the
compiler and load/store tearing, I guess the only safe way here is to
acquire the adis lock [btw, I'm a bit paranoid with this stuff :)]...

Anyways, arguably the likelihood for this to happen is really, really small... 




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux