Re: [PATCH v2 02/17] iio: accel: kxcjk-1013: Discard pm_runtime_put_autosuspend() return values

From: Jonathan Cameron

Date: Thu Oct 22 2026 - 23:37:00 EST


On Wed, 21 Oct 2026 16:57:03 -0700
Brian Norris <briannorris@xxxxxxxxxxxx> wrote:

> This driver propagates the return value of pm_runtime_put_autosuspend(),
> which is not particularly useful.
>
> Returning an error code from pm_runtime_put_autosuspend() merely means
> that it has not queued up a timer or work item to check whether or not
> the device can be suspended and there are many perfectly valid
> situations in which that can happen, like after writing "on" to the
> device's runtime PM "control" attribute in sysfs for one example.
>
> For this reason, modify this driver to discard the
> pm_runtime_put_autosuspend() return value, and inline these pm_runtime
> calls for simplicity.
>
> While doing this, it becomes obvious that kxcjk1013_write_event_config()
> and kxcjk1013_data_rdy_trigger_set_state() are intentionally mismanaging
> runtime PM reference counts and instead are relying on (racy)
> autosuspend delay for correct ordering. Undo this choice, and instead
> properly drop the reference count only after we're done touching the
> hardware
.
Sorry, I should have looked more closely at this in the earlier
review.

I'm not sure this is actually true. A device being in runtime suspend
on an i2c bus doesn't in general mean you can't talk to it.
Whether the mode switching in here is a problem or not isn't
that obvious and will require a datasheet dive. It is inelegant
but maybe not a bug.

Anyhow, out of time and energy for today. I'll take a closer look
at the rest of the series in a day or two.

Thanks for looking at this.

Jonathan

>
> Use guard() for managing the mutex in kxcjk1013_write_event_config(),
> because it helps simplify the above refactoring, making it less
> error-prone.
>
> This will facilitate a planned change of the
> pm_runtime_put_autosuspend() return type to void in the future, similar
> to commit 3afd8df02433 ("PM: runtime: Change pm_runtime_put() return
> type to void").
>
> Signed-off-by: Brian Norris <briannorris@xxxxxxxxxxxx>