Re: [PATCH 1/2] PM: runtime: Only queue an idle check for RPM-linked suppliers

From: Rafael J. Wysocki (Intel)

Date: Fri Sep 11 2026 - 10:50:46 EST


On Tue, Sep 1, 2026 at 3:34 AM Brian Norris <briannorris@xxxxxxxxxxxx> wrote:
>
> When a device RPM-suspends, it queues up an idle check for all of its
> suppliers, in case that device was the last consumer, and those
> suppliers are now able to suspend. Today, we do this for all suppliers,
> and not only for those suppliers that are marked for use by runtime PM.
> This isn't directly harmful, but it is a bit wasteful, and also may
> induce unexpected suspend attempts (e.g., if a device was purposely last
> touched with pm_runtime_put_noidle()).
>
> To avoid excess idle checks, only call pm_request_idle() on linked
> suppliers that opted into runtime PM.
>
> Noticed by inspection of trace logs.
>
> This is not expected to have a functional impact on systems that are
> using device links properly, and should only be considered an
> optimization.
>
> Fixes: 5244f5e2d801 ("PM: runtime: Defer suspending suppliers")
> Signed-off-by: Brian Norris <briannorris@xxxxxxxxxxxx>
> ---
>
> drivers/base/power/runtime.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/base/power/runtime.c b/drivers/base/power/runtime.c
> index fab38bc98113..4d84d97f09c4 100644
> --- a/drivers/base/power/runtime.c
> +++ b/drivers/base/power/runtime.c
> @@ -361,7 +361,8 @@ static void rpm_suspend_suppliers(struct device *dev)
>
> list_for_each_entry_rcu(link, &dev->links.suppliers, c_node,
> device_links_read_lock_held())
> - pm_request_idle(link->supplier);
> + if (device_link_test(link, DL_FLAG_PM_RUNTIME))
> + pm_request_idle(link->supplier);
>
> device_links_read_unlock(idx);
> }
> --

Applied as 7.4 material along with the [2/2], thanks!