RE: [PATCH v2 6/9] iio: adis_buffer: update device page after changing it

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

 




> -----Original Message-----
> From: Jonathan Cameron <jic23@xxxxxxxxxx>
> Sent: Saturday, April 24, 2021 1:18 PM
> To: Alexandru Ardelean <ardeleanalex@xxxxxxxxx>
> Cc: Sa, Nuno <Nuno.Sa@xxxxxxxxxx>; linux-iio <linux-
> iio@xxxxxxxxxxxxxxx>; Hennerich, Michael
> <Michael.Hennerich@xxxxxxxxxx>; Lars-Peter Clausen
> <lars@xxxxxxxxxx>
> Subject: Re: [PATCH v2 6/9] iio: adis_buffer: update device page after
> changing it
> 
> [External]
> 
> On Fri, 23 Apr 2021 16:56:26 +0300
> Alexandru Ardelean <ardeleanalex@xxxxxxxxx> wrote:
> 
> > On Fri, Apr 23, 2021 at 3:20 PM Sa, Nuno <Nuno.Sa@xxxxxxxxxx>
> wrote:
> > >
> > > > From: Alexandru Ardelean <ardeleanalex@xxxxxxxxx>
> > > > Sent: Friday, April 23, 2021 9:33 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 v2 6/9] iio: adis_buffer: update device page
> after
> > > > changing it
> > > >
> > > > [External]
> > > >
> > > > On Thu, Apr 22, 2021 at 1:17 PM Nuno Sa <nuno.sa@xxxxxxxxxx>
> > > > wrote:
> > > > >
> > > > > With commit 58ca347b9b24 ("iio: adis_buffer: don't push data
> to
> > > > buffers on
> > > > > failure"), we return if 'spi_sync()' fails which would leave
> > > > > 'adis->current_page' in an incoherent state. Hence, set this
> variable
> > > > > right after we change the device page.
> > > > >
> > > > > Signed-off-by: Nuno Sa <nuno.sa@xxxxxxxxxx>
> > > > > ---
> > > > >  drivers/iio/imu/adis_buffer.c | 6 +++---
> > > > >  1 file changed, 3 insertions(+), 3 deletions(-)
> > > > >
> > > > > diff --git a/drivers/iio/imu/adis_buffer.c
> > > > b/drivers/iio/imu/adis_buffer.c
> > > > > index a29d22f657ce..dda367071980 100644
> > > > > --- a/drivers/iio/imu/adis_buffer.c
> > > > > +++ b/drivers/iio/imu/adis_buffer.c
> > > > > @@ -140,6 +140,8 @@ static irqreturn_t
> adis_trigger_handler(int irq,
> > > > void *p)
> > > > >                                 mutex_unlock(&adis->state_lock);
> > > > >                                 goto irq_done;
> > > > >                         }
> > > > > +
> > > > > +                       adis->current_page = 0;
> > > > >                 }
> > > > >         }
> > > > >
> > > > > @@ -151,10 +153,8 @@ static irqreturn_t
> adis_trigger_handler(int
> > > > irq, void *p)
> > > > >                 goto irq_done;
> > > > >         }
> > > > >
> > > > > -       if (adis->data->has_paging) {
> > > > > -               adis->current_page = 0;
> > > > > +       if (adis->data->has_paging)
> > > > >                 mutex_unlock(&adis->state_lock);
> > > > > -       }
> > > >
> > > > So, continuing from my comment here [1]:
> > > >
> > > >
> https://urldefense.com/v3/__https://patchwork.kernel.org/project/li
> > > > nux-iio/patch/20210422101911.135630-6-
> > > >
> nuno.sa@xxxxxxxxxx/__;!!A3Ni8CS0y2Y!u1RyPNeh8e5m7lPfDa5H5ZjT
> > > > hA9TdsLGvk2m1kFQBbAKe40PmvQS8O8N-f-GEg$
> > > >
> > > > This can become more elegant, because this block:
> > > >        if (adis->data->has_paging)
> > > >                 mutex_unlock(&adis->state_lock);
> > > >
> > > > can be moved right after "ret = spi_sync(adis->spi, &adis->msg);"
> > > >
> > > > And then the duplication added in patch [1] can be cleaned up.
> > > > So maybe a re-ordering of patches could simplify/remove the
> added
> > > > duplication.
> > > >
> > >
> > > Hmmm I'm not following you :). What's your idea? You mean the
> block
> > > inside the 'if (ret)' in case spi_sync fails? If so, we can move it but
> then
> > > we cannot do the goto jump... you mean something like?
> > >
> > > ret = spi_sync();
> > > if (adis->data->has_paging)
> > >         mutex_unlock(&adis->state_lock);
> > > if (ret) {
> > >         dev_err();
> > >         goto irq_done;
> > > }
> > >
> > > I don't particularly like the paging stuff after the spi_sync but this
> avoids
> > > some duplication for sure... and reduces some lines of code :)
> >
> > Yeah, this was the suggestion.
> > No strong opinion about it.
> Ah. I should probably read ahead a bit before commenting on earlier
> patches ;)
> 
> I was thinking this was the way to go.  It would be an entirely standard
> pattern
> if not for the if (adis->data->has_paging) being there.
> 
> Hmm maybe some helpers would make this more readable?
> 
> adis_mutex_lock_if_paging(adis);
> adis_mutex_unlock_if_paging(adis);
> 
> Probably not worth it given single usecase.  I'd go with what you have
> above.
> I'd also reorder this before the previous patch as that will make that
> one simpler.
> 

Agreed...

- Nuno Sá




[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