Re: [PATCH v2] iio: pressure: mpl115: Fix runtime PM cleanup

Jonathan Cameron <[email protected]>
Newsgroups org.kernel.vger.linux-iio,org.kernel.vger.linux-kernel,org.kernel.vger.stable
Message-ID <20260724005356.4505e552@jic23-huawei>
On Mon, 20 Jul 2026 10:43:12 +0800
Can Peng <[email protected]> wrote:

> mpl115_probe() enables runtime PM when a shutdown GPIO is present and
> then returns the result of devm_iio_device_register(). If registration
> fails, runtime PM remains enabled and autosuspend remains selected.
> 
> The same unmanaged runtime PM state is also left behind on driver
> unbind, as the IIO device registration is managed but the runtime PM
> setup is not.
> 
> Use devm_pm_runtime_enable() so runtime PM is disabled automatically on
> probe failure and driver unbind, and check pm_runtime_set_active() so
> setup errors are reported.
> 
> Set the autosuspend parameters before enabling runtime PM. Once probe
> has completed, the driver core queues an idle request for the device, so
> an explicit pm_runtime_get_noresume()/pm_runtime_put() pair is not
> needed to start autosuspend.
> 
> Fixes: 0c3a333524a3 ("iio: pressure: mpl115: Implementing low power mode by shutdown gpio")
> Cc: [email protected]
> Suggested-by: [email protected]
> Signed-off-by: Can Peng <[email protected]>
Hi,

Looks good to me. I'm going to take it the slow path via the next
merge window as it is a fairly low impact bug.

Applied to the testing branch of iio.git

Thanks,

Jonathan

> ---
> Changes in v2:
> - Drop the explicit pm_runtime_get_noresume()/pm_runtime_put() pair and
>   rely on the driver core idle request after probe.
> - Set autosuspend parameters before enabling runtime PM.
> - Update the commit message accordingly.
> - Link to v1: https://lore.kernel.org/all/[email protected]/
> 
>  drivers/iio/pressure/mpl115.c | 11 +++++++----
>  1 file changed, 7 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/iio/pressure/mpl115.c b/drivers/iio/pressure/mpl115.c
> index 16e112b796ba..2929ea8e4e01 100644
> --- a/drivers/iio/pressure/mpl115.c
> +++ b/drivers/iio/pressure/mpl115.c
> @@ -203,9 +203,9 @@ int mpl115_probe(struct device *dev, const char *name,
>  
>  	if (data->shutdown) {
>  		/* Enable runtime PM */
> -		pm_runtime_get_noresume(dev);
> -		pm_runtime_set_active(dev);
> -		pm_runtime_enable(dev);
> +		ret = pm_runtime_set_active(dev);
> +		if (ret)
> +			return ret;
>  
>  		/*
>  		 * As the device takes 3 ms to come up with a fresh
> @@ -215,7 +215,10 @@ int mpl115_probe(struct device *dev, const char *name,
>  		 */
>  		pm_runtime_set_autosuspend_delay(dev, 2000);
>  		pm_runtime_use_autosuspend(dev);
> -		pm_runtime_put(dev);
> +
> +		ret = devm_pm_runtime_enable(dev);
> +		if (ret)
> +			return ret;
>  
>  		dev_dbg(dev, "low-power mode enabled");
>  	} else
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.