Re: [PATCH 0/2] iio: flow: slf3s: fix and test the vdd supply balance

From: Jonathan Cameron

Date: Sun Sep 20 2026 - 23:20:15 EST


On Fri, 04 Sep 2026 21:24:24 +0200
Wadim Mueller <wafgo01@xxxxxxxxx> wrote:

> Li Youhong reported that slf3s_resume() leaves vdd enabled when the
> measurement restart fails [1]. The report is right, but the patch and
> my own Reviewed-by on it were both too narrow.
>
> Andy asked whether the regulator refcount can go sideways here. It
> cannot. device_suspend() sets power.is_suspended only when the callback
> returned 0, and device_resume() returns before the callback when the
> flag is clear. So the two alternate and the count stays in {0, 1}.
> Please drop my Reviewed-by, the reasoning in it is wrong.
>
> Three things do go wrong though:
>
> - resume enables vdd, start_meas() fails, the supply stays on.
>
> - the part is then powered but idle, so it NACKs the stop command.
> suspend() returns early on that error and never disables vdd, so the
> system cannot suspend any more until rebind. This one hurts most.
>
> - if regulator_enable() fails in resume, the next suspend disables a
> supply that was never enabled: "unbalanced disables" in the regulator
> core, and -EIO. Unbind hits the same case.
>
> The original patch fixes the first one only.
>
> Patch 1 tracks the supply state and drives enable/disable from it.
> Patch 2 adds KUnit tests with a fake i2c adapter and a counting
> regulator, so no hardware is needed:
>
> ./tools/testing/kunit/kunit.py run --kunitconfig=drivers/iio/flow
>
> Four of the eight tests fail without patch 1.
>
> [1] https://lore.kernel.org/linux-iio/20260901025010.356735-1-dayou5941@xxxxxxx/
>
> Signed-off-by: Wadim Mueller <wafgo01@xxxxxxxxx>
Given a few outstanding bits on patch 1 and lack of discussion of patch 2
(which doesn't need to go in as quickly) I am marking this in patchwork
as changes requested.

Thanks

Jonathan

> ---
> Wadim Mueller (2):
> iio: flow: slf3s: keep the vdd supply balanced across suspend/resume
> iio: flow: slf3s: add KUnit tests for the PM regulator balance
>
> MAINTAINERS | 2 +
> drivers/iio/flow/.kunitconfig | 6 +
> drivers/iio/flow/Kconfig | 15 +
> drivers/iio/flow/Makefile | 1 +
> drivers/iio/flow/slf3s-kunit.c | 734 +++++++++++++++++++++++++++++++++++++++++
> drivers/iio/flow/slf3s.c | 35 +-
> 6 files changed, 787 insertions(+), 6 deletions(-)
> ---
> base-commit: bc35965f6940a9bf834d54187b6088b8eb09206d
> change-id: 20260904-iio-slf3s-pm-regulator-kunit-43ee079b36f0
>
> Best regards,