In the cpuidle-psci case, runtime PM in combination with the generic
PM domain (genpd), may be used when entering/exiting a shared idle
state. More precisely, genpd relies on runtime PM to be enabled for
the attached device (in this case it belongs to a CPU), to properly
manage the reference counting of its PM domain.
This works fine most of the time, but during system suspend in
dpm_suspend_late(), the PM core disables runtime PM for all devices.
Beyond this point, calls to pm_runtime_get_sync() to runtime resume
a device may fail and therefore it could also mess up the reference
counting in genpd.
To fix this problem, let's call wake_up_all_idle_cpus() prior to
disabling runtime PM. In this way a device that belongs to a CPU,
becomes runtime resumed through cpuidle-psci and stays like that
because idle governor will stop selecting deeper idle state when
suspend is started.
Change-Id: I8e046aa9b904ada09c0138499766d6362a9795be
Signed-off-by: Maulik Shah <quic_mkshah@quicinc.com>