Re: [RFC PATCH 3/3] cpuidle: psci: Initialize the PM domains in powered off state for OSI
Abel Vesa <[email protected]>
| Newsgroups | org.kernel.vger.linux-pm,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <3s2qeh2teckoalwqaekcs6zk4bpsrdi5ackkn5uu4qyygvawmu@k3lvlpm4fipg> |
On 26-08-19 17:14:53, Ulf Hansson wrote: > From: Ulf Hansson <[email protected]> > > At the point when the PM domain and the topology are registered through the > genpd subsystem, it's not really known whether corresponding CPUs are > online and thus if the PM domain should be initialized as powered on or > not. Instead this information becomes available when the CPU devices gets > attached to their respective PM domain through dt_idle_attach_cpu(). > > This is a problem when using PSCI OS-initiated mode, as we may end up with > a PM domain that has the genpd's status indicating it to be powered on, > while it in fact may not be the case. In the less severe scenario, this > leads to selecting a shallower domain idle state for the PM domain than > necessary. A more critical problem is when a non-CPU device shares the PM > domain, leading to their corresponding drivers not being able to trust the > status of it. Exactly why a third state like GENPD_STATE_UNKNOWN would be more fitting, IMO. Maybe something we can do at some point. This solution works for now as well. > > Let's fix these problems by initializing the state for the genpd's to be > powered off and in the deepest possible domain idle state, when using > OS-initiated mode. The support for ->sync_state() is maintained by setting > the GENPD_FLAG_OFF_STAY_ON for the genpds in question. > > Reported-by: Maulik Shah <[email protected]> > Link: https://lore.kernel.org/all/[email protected]/ > Signed-off-by: Ulf Hansson <[email protected]> Reviewed-by: Abel Vesa <[email protected]>