On Fri, 7 Jun 2019 at 17:31, Sudeep Holla <sudeep.holla@xxxxxxx> wrote: > > On Mon, May 13, 2019 at 09:22:57PM +0200, Ulf Hansson wrote: > > When the hierarchical CPU topology is used and when a CPU has been put > > offline (hotplug), that same CPU prevents its PM domain and thus also > > potential master PM domains, from being powered off. This is because genpd > > observes the CPU's attached device as being active from a runtime PM point > > of view. > > > > To deal with this, let's decrease the runtime PM usage count by calling > > pm_runtime_put_sync_suspend() of the attached struct device when putting > > the CPU offline. Consequentially, we must then increase the runtime PM > > usage count, while putting the CPU online again. > > > > Why is this firmware/driver specific ? Why can't this be dealt in core > pm-domain ? I am concerned that if any other architectures or firmware > method decides to use this feature, this need to be duplicated there. What is the core pm-domain? Do you refer to the generic PM domain (genpd), no? In such case, this is not the job of genpd, but rather the opposite (to *monitor* the reference count). > > The way I see this is pure reference counting and is hardware/firmware/ > driver agnostic and can be made generic. As stated in the another reply, I would rather start with having more things driver specific rather than generic. Later on we can always consider to move/split things, when there are more users. In this particular case, the runtime PM reference counting is done on the struct device*, that genpd returned via dev_pm_domain_attach_by_name(). And because dev_pm_domain_attach_by_name() is called from PSCI code, I decided to keep this struct device* internal to PSCI. Kind regards Uffe