Messages in this thread | | | From | Ulf Hansson <> | Date | Tue, 25 Oct 2022 14:58:33 +0200 | Subject | Re: [PATCH] PM: domains: Fix handling of unavailable/disabled idle states |
| |
On Tue, 25 Oct 2022 at 14:34, Sudeep Holla <sudeep.holla@arm.com> wrote: > > Platforms can provide the information about the availability of each > idle states via status flag. Platforms may have to disable one or more > idle states for various reasons like broken firmware or other unmet > dependencies. > > Fix handling of such unavailable/disabled idle states by ignoring them > while parsing the states. > > Cc: "Rafael J. Wysocki" <rafael@kernel.org> > Cc: Ulf Hansson <ulf.hansson@linaro.org> > Fixes: a3381e3a65cb ("PM / domains: Fix up domain-idle-states OF parsing") > Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
I think this should be tagged for stable kernels too. Rafael, can you pick this up as a fix for v6.1rc[n]?
Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
Kind regards Uffe
> --- > drivers/base/power/domain.c | 4 ++++ > 1 file changed, 4 insertions(+) > > Hi Ulf, > > As you already know, this change alone doesn't fix the issue reported here[1]. > It also needs the fixes you have posted [2]. > > Regards, > Sudeep > > [1] https://lore.kernel.org/all/20221018145348.4051809-1-amit.pundir@linaro.org > [2] https://lore.kernel.org/all/20221021151013.148457-1-ulf.hansson@linaro.org
Well, I think it's better if we replace [1] with a patch that only disables the cluster idle state. In that case, it would be sufficient with $subject patch. In that case, we can just manage [2] separately.
Amit, can you submit a new version and test it together with $subject patch?
Kind regards Uffe
> > diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c > index ead135c7044c..6471b559230e 100644 > --- a/drivers/base/power/domain.c > +++ b/drivers/base/power/domain.c > @@ -2952,6 +2952,10 @@ static int genpd_iterate_idle_states(struct device_node *dn, > np = it.node; > if (!of_match_node(idle_state_match, np)) > continue; > + > + if (!of_device_is_available(np)) > + continue; > + > if (states) { > ret = genpd_parse_state(&states[i], np); > if (ret) { > -- > 2.38.1 >
| |