cpuidle: PSCI: Improve support for suspend-to-RAM for PSCI OSI mode
authorUlf Hansson <ulf.hansson@linaro.org>
Fri, 1 Apr 2022 14:11:24 +0000 (16:11 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 19 Apr 2022 15:24:34 +0000 (17:24 +0200)
commit171b66e2e2e9d80b93c8cff799e6175074b22297
tree168d62961c1ce769ecf26294a3a6d4dc6d0e3536
parent13966517d41efb0a549544022db7d522503bc718
cpuidle: PSCI: Improve support for suspend-to-RAM for PSCI OSI mode

When PSCI OSI mode is supported the syscore flag is set for the CPU devices
that becomes attached to their PM domains (genpds). In the suspend-to-idle
case, we call dev_pm_genpd_suspend|resume() to allow genpd to properly
manage the power-off/on operations (pick an idlestate and manage the on/off
notifications).

For suspend-to-ram, dev_pm_genpd_suspend|resume() is currently not being
called, which causes a problem that the genpd on/off notifiers do not get
sent as expected. This prevents the platform-specific operations from being
executed, typically needed just before/after the boot CPU is being turned
off/on.

To deal with this problem, let's register a syscore ops for cpuidle-psci
when PSCI OSI mode is being used and call dev_pm_genpd_suspend|resume()
from them. In this way, genpd regains control of the PM domain topology and
then sends the on/off notifications when it's appropriate.

Reported-by: Maulik Shah <quic_mkshah@quicinc.com>
Suggested-by: Maulik Shah <quic_mkshah@quicinc.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Tested-by: Maulik Shah <quic_mkshah@quicinc.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/cpuidle/cpuidle-psci.c