On Tue, Feb 04, 2020 at 10:22:42AM +0530, Maulik Shah wrote:
On 2/3/2020 10:38 PM, Sudeep Holla wrote:Details on those last-man activities will help the discussion. Basically
On Mon, Feb 03, 2020 at 07:05:38PM +0530, Maulik Shah wrote:Hi Sudeep,
From: Ulf Hansson <ulf.hansson@xxxxxxxxxx>And what's the main motivation for this if OSI is not supported in the
If the hierarchical CPU topology is used, but the OS initiated mode isn't
supported, we need to rely solely on the regular cpuidle framework to
manage the idle state selection, rather than using genpd and its
governor.
For this reason, introduce a new PSCI DT helper function,
psci_dt_pm_domains_parse_states(), which parses and converts the
hierarchically described domain idle states from DT, into regular flattened
cpuidle states. The converted states are added to the existing cpuidle
driver's array of idle states, which make them available for cpuidle.
firmware ?
Main motivation is to do last-man activities before the CPU cluster can
enter a deep idle state.
I am wondering what they are and why they need to done in OSPM ?
OK, IIRC the OSI patches from Ulf didn't add the genpd or rather removedwe do create genpd domains, for cpu domains, we just abort power off hereSigned-off-by: Ulf Hansson <ulf.hansson@xxxxxxxxxx>Why is this needed ? IIUC we don't create genpd domains if OSI is not
[applied to new path, resolved conflicts]
Signed-off-by: Maulik Shah <mkshah@xxxxxxxxxxxxxx>
---
drivers/cpuidle/cpuidle-psci-domain.c | 137 +++++++++++++++++++++++++++++-----
drivers/cpuidle/cpuidle-psci.c | 41 +++++-----
drivers/cpuidle/cpuidle-psci.h | 11 +++
3 files changed, 153 insertions(+), 36 deletions(-)
diff --git a/drivers/cpuidle/cpuidle-psci-domain.c b/drivers/cpuidle/cpuidle-psci-domain.c
index 423f03b..3c417f7 100644
--- a/drivers/cpuidle/cpuidle-psci-domain.c
+++ b/drivers/cpuidle/cpuidle-psci-domain.c
@@ -26,13 +26,17 @@ struct psci_pd_provider {
};
static LIST_HEAD(psci_pd_providers);
-static bool osi_mode_enabled __initdata;
+static bool osi_mode_enabled;
static int psci_pd_power_off(struct generic_pm_domain *pd)
{
struct genpd_power_state *state = &pd->states[pd->state_idx];
u32 *pd_state;
+ /* If we have failed to enable OSI mode, then abort power off. */
+ if ((psci_has_osi_support()) && !osi_mode_enabled)
+ return -EBUSY;
+
enabled.
since idle states are converted into regular flattened mode.
them in case of any failure to enable OSI. Has that been changed ? If so,
why ?
however genpd poweroff will be used by parent domain (rsc in this case)I am bit confused here. Either we do OSI or PC and what you are describing
which is kept in hireachy in DTSI with cluster domain to do last man
activities.
sounds like a mix-n-match to me and I am totally against it.
--
Regards,
Sudeep