Re: [PATCH 0/5] pmdomain: Restore behaviour for disabling unused PM domains
From: Saravana Kannan <hidden>
Date: 2025-09-12 18:37:12
Also in:
linux-pm, lkml
On Tue, Sep 9, 2025 at 4:11 AM Ulf Hansson [off-list ref] wrote:
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? 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. Thanks, Saravana
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