[PATCH] driver core: Add missing pm_runtime_put_noidle

Yongzhi Liu posted 1 patch 4 years, 5 months ago
drivers/base/core.c | 2 ++
1 file changed, 2 insertions(+)
[PATCH] driver core: Add missing pm_runtime_put_noidle
Posted by Yongzhi Liu 4 years, 5 months ago
pm_runtime_get_noresume() in device_shutdown increments the
runtime PM usage counter, thus a matching decrement is needed
to keep the counter balanced.

Signed-off-by: Yongzhi Liu <lyz_cs@pku.edu.cn>
---
 drivers/base/core.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/base/core.c b/drivers/base/core.c
index fd034d7..29950bd 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -4523,6 +4523,8 @@ void device_shutdown(void)
 			dev->driver->shutdown(dev);
 		}
 
+		pm_runtime_put_noidle(dev);
+
 		device_unlock(dev);
 		if (parent)
 			device_unlock(parent);
-- 
2.7.4

Re: [PATCH] driver core: Add missing pm_runtime_put_noidle
Posted by Rafael J. Wysocki 4 years, 5 months ago
On Mon, Jan 17, 2022 at 12:08 PM Yongzhi Liu <lyz_cs@pku.edu.cn> wrote:
>
> pm_runtime_get_noresume() in device_shutdown increments the
> runtime PM usage counter,

This is on purpose, to prevent devices from being runtime-suspended
after their shutdown callbacks have run.

> thus a matching decrement is needed

No, it is not, AFAICS.

> to keep the counter balanced.
>
> Signed-off-by: Yongzhi Liu <lyz_cs@pku.edu.cn>
> ---
>  drivers/base/core.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/drivers/base/core.c b/drivers/base/core.c
> index fd034d7..29950bd 100644
> --- a/drivers/base/core.c
> +++ b/drivers/base/core.c
> @@ -4523,6 +4523,8 @@ void device_shutdown(void)
>                         dev->driver->shutdown(dev);
>                 }
>
> +               pm_runtime_put_noidle(dev);
> +
>                 device_unlock(dev);
>                 if (parent)
>                         device_unlock(parent);
> --
> 2.7.4
>
Re: Re: [PATCH] driver core: Add missing pm_runtime_put_noidle
Posted by 刘永志 4 years, 5 months ago
> -----原始邮件-----
> 发件人: "Rafael J. Wysocki" <rafael@kernel.org>
> 发送时间: 2022-01-17 22:01:54 (星期一)
> 收件人: "Yongzhi Liu" <lyz_cs@pku.edu.cn>
> 抄送: "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>, "Rafael J. Wysocki" <rafael@kernel.org>, "Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>
> 主题: Re: [PATCH] driver core: Add missing pm_runtime_put_noidle
> 
> On Mon, Jan 17, 2022 at 12:08 PM Yongzhi Liu <lyz_cs@pku.edu.cn> wrote:
> >
> > pm_runtime_get_noresume() in device_shutdown increments the
> > runtime PM usage counter,
> 
> This is on purpose, to prevent devices from being runtime-suspended
> after their shutdown callbacks have run.
> 
> > thus a matching decrement is needed
> 
> No, it is not, AFAICS.
> 
> > to keep the counter balanced.
> >
> > Signed-off-by: Yongzhi Liu <lyz_cs@pku.edu.cn>
> > ---
> >  drivers/base/core.c | 2 ++
> >  1 file changed, 2 insertions(+)
> >
> > diff --git a/drivers/base/core.c b/drivers/base/core.c
> > index fd034d7..29950bd 100644
> > --- a/drivers/base/core.c
> > +++ b/drivers/base/core.c
> > @@ -4523,6 +4523,8 @@ void device_shutdown(void)
> >                         dev->driver->shutdown(dev);
> >                 }
> >
> > +               pm_runtime_put_noidle(dev);
> > +
> >                 device_unlock(dev);
> >                 if (parent)
> >                         device_unlock(parent);
> > --
> > 2.7.4
> >
Yes, thanks for your reply.