diff mbox series

PM: domains: log failures to register always-on domains

Message ID 20220929154214.7305-1-johan+linaro@kernel.org (mailing list archive)
State Mainlined, archived
Headers show
Series PM: domains: log failures to register always-on domains | expand

Commit Message

Johan Hovold Sept. 29, 2022, 3:42 p.m. UTC
Always-on PM domains must be on during initialisation or the domain is
currently silently rejected.

Print an error message in case an always-on domain is not on to make it
easier to debug drivers getting this wrong (e.g. by setting an always-on
genpd flag without making sure that the state matches).

Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
---
 drivers/base/power/domain.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)


Both myself and Matthias have hit this with the Qualcomm GCC drivers
when updating static genpd flags directly instead of using/adding driver
specific flags to propagate the setting.

Johan

Comments

Kevin Hilman Sept. 29, 2022, 11:57 p.m. UTC | #1
Johan Hovold <johan+linaro@kernel.org> writes:

> Always-on PM domains must be on during initialisation or the domain is
> currently silently rejected.
>
> Print an error message in case an always-on domain is not on to make it
> easier to debug drivers getting this wrong (e.g. by setting an always-on
> genpd flag without making sure that the state matches).
>
> Signed-off-by: Johan Hovold <johan+linaro@kernel.org>

Reviewed-by: Kevin Hilman <khilman@baylibre.com>

> ---
>  drivers/base/power/domain.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
>
> Both myself and Matthias have hit this with the Qualcomm GCC drivers
> when updating static genpd flags directly instead of using/adding driver
> specific flags to propagate the setting.
>
> Johan
>
>
> diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c
> index bbfbf05b3446..7200e307effb 100644
> --- a/drivers/base/power/domain.c
> +++ b/drivers/base/power/domain.c
> @@ -2087,8 +2087,10 @@ int pm_genpd_init(struct generic_pm_domain *genpd,
>  
>  	/* Always-on domains must be powered on at initialization. */
>  	if ((genpd_is_always_on(genpd) || genpd_is_rpm_always_on(genpd)) &&
> -			!genpd_status_on(genpd))
> +			!genpd_status_on(genpd)) {
> +		pr_err("always-on PM domain %s is not on\n", genpd->name);
>  		return -EINVAL;
> +	}
>  
>  	/* Multiple states but no governor doesn't make sense. */
>  	if (!gov && genpd->state_count > 1)
> -- 
> 2.35.1
Ulf Hansson Sept. 30, 2022, 10:38 a.m. UTC | #2
On Thu, 29 Sept 2022 at 17:42, Johan Hovold <johan+linaro@kernel.org> wrote:
>
> Always-on PM domains must be on during initialisation or the domain is
> currently silently rejected.
>
> Print an error message in case an always-on domain is not on to make it
> easier to debug drivers getting this wrong (e.g. by setting an always-on
> genpd flag without making sure that the state matches).
>
> Signed-off-by: Johan Hovold <johan+linaro@kernel.org>

Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>

Kind regards
Uffe

> ---
>  drivers/base/power/domain.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
>
> Both myself and Matthias have hit this with the Qualcomm GCC drivers
> when updating static genpd flags directly instead of using/adding driver
> specific flags to propagate the setting.
>
> Johan
>
>
> diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c
> index bbfbf05b3446..7200e307effb 100644
> --- a/drivers/base/power/domain.c
> +++ b/drivers/base/power/domain.c
> @@ -2087,8 +2087,10 @@ int pm_genpd_init(struct generic_pm_domain *genpd,
>
>         /* Always-on domains must be powered on at initialization. */
>         if ((genpd_is_always_on(genpd) || genpd_is_rpm_always_on(genpd)) &&
> -                       !genpd_status_on(genpd))
> +                       !genpd_status_on(genpd)) {
> +               pr_err("always-on PM domain %s is not on\n", genpd->name);
>                 return -EINVAL;
> +       }
>
>         /* Multiple states but no governor doesn't make sense. */
>         if (!gov && genpd->state_count > 1)
> --
> 2.35.1
>
Rafael J. Wysocki Oct. 4, 2022, 2:27 p.m. UTC | #3
On Fri, Sep 30, 2022 at 12:39 PM Ulf Hansson <ulf.hansson@linaro.org> wrote:
>
> On Thu, 29 Sept 2022 at 17:42, Johan Hovold <johan+linaro@kernel.org> wrote:
> >
> > Always-on PM domains must be on during initialisation or the domain is
> > currently silently rejected.
> >
> > Print an error message in case an always-on domain is not on to make it
> > easier to debug drivers getting this wrong (e.g. by setting an always-on
> > genpd flag without making sure that the state matches).
> >
> > Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
>
> Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>

Applied as 6.1-rc material, thanks!

> > ---
> >  drivers/base/power/domain.c | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> >
> >
> > Both myself and Matthias have hit this with the Qualcomm GCC drivers
> > when updating static genpd flags directly instead of using/adding driver
> > specific flags to propagate the setting.
> >
> > Johan
> >
> >
> > diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c
> > index bbfbf05b3446..7200e307effb 100644
> > --- a/drivers/base/power/domain.c
> > +++ b/drivers/base/power/domain.c
> > @@ -2087,8 +2087,10 @@ int pm_genpd_init(struct generic_pm_domain *genpd,
> >
> >         /* Always-on domains must be powered on at initialization. */
> >         if ((genpd_is_always_on(genpd) || genpd_is_rpm_always_on(genpd)) &&
> > -                       !genpd_status_on(genpd))
> > +                       !genpd_status_on(genpd)) {
> > +               pr_err("always-on PM domain %s is not on\n", genpd->name);
> >                 return -EINVAL;
> > +       }
> >
> >         /* Multiple states but no governor doesn't make sense. */
> >         if (!gov && genpd->state_count > 1)
> > --
> > 2.35.1
> >
diff mbox series

Patch

diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c
index bbfbf05b3446..7200e307effb 100644
--- a/drivers/base/power/domain.c
+++ b/drivers/base/power/domain.c
@@ -2087,8 +2087,10 @@  int pm_genpd_init(struct generic_pm_domain *genpd,
 
 	/* Always-on domains must be powered on at initialization. */
 	if ((genpd_is_always_on(genpd) || genpd_is_rpm_always_on(genpd)) &&
-			!genpd_status_on(genpd))
+			!genpd_status_on(genpd)) {
+		pr_err("always-on PM domain %s is not on\n", genpd->name);
 		return -EINVAL;
+	}
 
 	/* Multiple states but no governor doesn't make sense. */
 	if (!gov && genpd->state_count > 1)