]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
pmdomain: core: Restore behaviour for disabling unused PM domains
authorUlf Hansson <ulf.hansson@linaro.org>
Tue, 9 Sep 2025 11:11:20 +0000 (13:11 +0200)
committerUlf Hansson <ulf.hansson@linaro.org>
Thu, 11 Sep 2025 10:36:14 +0000 (12:36 +0200)
commit002ebddd695a53999550e241b71950f1aa0e1ac4
treee516d634505feac4392be302be8d8ebeff336dc3
parentd8f3ae7b38fea546e64a6cfcdc7d061c85f086e2
pmdomain: core: Restore behaviour for disabling unused PM domains

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.
Let's therefore restore the behavior of genpd_power_off_unused().
Moreover, let's introduce GENPD_FLAG_NO_STAY_ON, to allow genpd OF
providers to opt-out from the new behaviour.

Link: https://lore.kernel.org/all/20250701114733.636510-1-ulf.hansson@linaro.org/
Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
Link: https://lore.kernel.org/all/20250902-rk3576-lockup-regression-v1-1-c4a0c9daeb00@collabora.com/
Reported-by: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
Fixes: 0e789b491ba0 ("pmdomain: core: Leave powered-on genpds on until sync_state")
Fixes: 13a4b7fb6260 ("pmdomain: core: Leave powered-on genpds on until late_initcall_sync")
Tested-by: Heiko Stuebner <heiko@sntech.de>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/pmdomain/core.c
include/linux/pm_domain.h