Thread (22 messages) 22 messages, 6 authors, 2025-09-12

Re: [PATCH 0/5] pmdomain: Restore behaviour for disabling unused PM domains

From: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
Date: 2025-09-12 18:50:18
Also in: linux-pm, lkml

On Friday, 12 September 2025 20:36:35 Central European Summer Time Saravana Kannan wrote:
On Tue, Sep 9, 2025 at 4:11 AM Ulf Hansson [off-list ref] wrote:
quoted
Recent changes to genpd prevents those PM domains being powered-on during
initialization from being powered-off during the boot sequence. Based upon
whether CONFIG_PM_CONFIG_PM_GENERIC_DOMAINS_OF is set of not, genpd relies
on the sync_state mechanism or the genpd_power_off_unused() (which is a
late_initcall_sync), to understand when it's okay to allow these PM domains
to be powered-off.

This new behaviour in genpd has lead to problems on different platforms [1].

In this series, I am therefore suggesting to restore the behavior of
genpd_power_off_unused() along with introducing a new genpd config flag,
GENPD_FLAG_NO_STAY_ON, to allow genpd OF providers to opt-out from the new
behaviour.

Kind regards
Ulf Hansson

[1]
https://lore.kernel.org/all/20250701114733.636510-1-ulf.hansson@linaro.org/ (local)
https://lore.kernel.org/all/20250902-rk3576-lockup-regression-v1-1-c4a0c9daeb00@collabora.com/ (local)
I'm surprised this is happening. The default behavior of sync_state()
is to never turn off a power domain until all the consumers have
probed.

Is there a consumer that's not captured correctly? If so, can we add them?
Yes, and unfortunately, not trivially so, no. In Rockchip's case, the
regulators supplying a certain power domain cannot be acquired at
pmdomain probe time, as the regulators themselves are sometimes
SPI or I2C regulators that depend on powerdomains to be up.

So we only acquire them when the power domain is enabled, which does
not happen for unused PDs. Acquiring them during PD disable also
wouldn't work, as the genpd idle check may run after the regulator
idle check.
Also, there are already sync_state related kernel configs, command
line options and sysfs files that should allow people to power off
devices (at different levels of granularity) even if its consumers
haven't probed.
This series is a stop-gap solution to get us through v6.17, so that
problematic drivers like Rockchip pmdomains can be rearchitectured
to declare their dependency in some way that is not racey. This
will be somewhat non-trivial, hence the current solution for now.
Thanks,
Saravana
Kind regards,
Nicolas Frattaroli
quoted
Ulf Hansson (5):
  pmdomain: core: Restore behaviour for disabling unused PM domains
  pmdomain: rockchip: Fix regulator dependency with
    GENPD_FLAG_NO_STAY_ON
  pmdomain: renesas: rcar-sysc: Don't keep unused PM domains powered-on
  pmdomain: renesas: rcar-gen4-sysc: Don't keep unused PM domains
    powered-on
  pmdomain: renesas: rmobile-sysc: Don't keep unused PM domains
    powered-on

 drivers/pmdomain/core.c                   | 20 ++++++++++++++------
 drivers/pmdomain/renesas/rcar-gen4-sysc.c |  1 +
 drivers/pmdomain/renesas/rcar-sysc.c      |  1 +
 drivers/pmdomain/renesas/rmobile-sysc.c   |  3 ++-
 drivers/pmdomain/rockchip/pm-domains.c    |  2 +-
 include/linux/pm_domain.h                 |  7 +++++++
 6 files changed, 26 insertions(+), 8 deletions(-)

--
2.43.0



Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help