Re: [PATCH] iio: magnetometer: ak8975: ensure device is awake for buffered capture
From: Joshua Crofts
Date: Fri May 15 2026 - 09:57:31 EST
On Fri, 15 May 2026 at 15:17, Jonathan Cameron <jic23@xxxxxxxxxx> wrote:
>
> On Wed, 13 May 2026 16:35:52 +0200
> Joshua Crofts via B4 Relay <devnull+joshua.crofts1.gmail.com@xxxxxxxxxx> wrote:
>
> > From: Joshua Crofts <joshua.crofts1@xxxxxxxxx>
> >
> > Currently, the ak8975_start_read_axis() can be called while the device
> > is autosuspended, causing two issues:
> >
> > 1. I2C transfers in the aforementioned function will fail or timeout
> > because ak8975_runtime_suspend() disables the device regulators.
> > 2. Since ak8975_fill_buffer() does not hold runtime references,
> > ak8975_runtime_suspend() can run concurrently, and since PM callbacks
> > do not use a locking mechanism, it may cause a race accessing the
> > control register via the I2C bus.
> >
> > Fix this issue by adding struct iio_buffer_setup_ops that contains
> > preenable and postdisable functions to ensure correct that device is
> > powered on when running a buffered capture.
> >
> > Fixes: bc11ca4a0b84 ("iio:magnetometer:ak8975: triggered buffer support")
> > Reported-by: Sashiko <sashiko-bot@xxxxxxxxxx>
> > Closes: https://sashiko.dev/#/patchset/20260511-magnetometer-fixes-post-pickup-v7-0-9d910faa28b6%40gmail.com
> > Signed-off-by: Joshua Crofts <joshua.crofts1@xxxxxxxxx>
> I'm going to take this as a clear improvement but the point sashiko makes
> about turning runtime PM on only after the interfaces are exposed is possibly valid
> as a general comment. It applies to all the other paths though, not just
> the buffered capture.
>
> I believe we are actually fine here because the device is powered up
> at that point (the set_active making that clear).
>
> Open to other people's views on this though.
>
> This is another place where we really should work out a best practice
> guide / set of standard patterns to use.
>
> Anyhow, applied this one and this is one I've marked for stable.
> However given mass of stuff around this driver it'll still go the slow
> way and we may need to manually do backports. So applied to the
> testing branch of iio.git.
Ah, I forgot to send the v2 with your Suggested-by tag. Up to you to amend
it I guess.
Thanks
--
Kind regards
CJD