On Wed, Dec 11, 2019 at 04:43:41PM +0100, Ulf Hansson wrote: > When the hierarchical CPU topology is used and when a CPU is put offline, > that CPU prevents its PM domain from being powered off, which is because > genpd observes the corresponding attached device as being active from a > runtime PM point of view. Furthermore, any potential master PM domains are > also prevented from being powered off. > > To address this limitation, let's add add a new CPU hotplug state > (CPUHP_AP_CPU_PM_STARTING) and register up/down callbacks for it, which > allows us to deal with runtime PM accordingly. > > Signed-off-by: Ulf Hansson <ulf.hansson@xxxxxxxxxx> > --- > > Changes in v4: > - Folded in the patch to be part of the series. > - Rebased on top of earlier changes. > > --- > drivers/cpuidle/cpuidle-psci.c | 45 +++++++++++++++++++++++++++++++++- > include/linux/cpuhotplug.h | 1 + > 2 files changed, 45 insertions(+), 1 deletion(-) > > diff --git a/drivers/cpuidle/cpuidle-psci.c b/drivers/cpuidle/cpuidle-psci.c > index 6e7804e697ed..34a89d99bb0f 100644 > --- a/drivers/cpuidle/cpuidle-psci.c > +++ b/drivers/cpuidle/cpuidle-psci.c > @@ -8,6 +8,7 @@ > > #define pr_fmt(fmt) "CPUidle PSCI: " fmt > > +#include <linux/cpuhotplug.h> > #include <linux/cpuidle.h> > #include <linux/cpumask.h> > #include <linux/cpu_pm.h> > @@ -31,6 +32,7 @@ struct psci_cpuidle_data { > > static DEFINE_PER_CPU_READ_MOSTLY(struct psci_cpuidle_data, psci_cpuidle_data); > static DEFINE_PER_CPU(u32, domain_state); > +static bool psci_cpuidle_use_cpuhp; > [...] > + > +static void psci_idle_init_cpuhp(void) > +{ Can this be made __init along with the boolean psci_cpuidle_use_cpuhp ? With that, Reviewed-by: Sudeep Holla <sudeep.holla@xxxxxxx> -- Regards, Sudeep