diff mbox series

clk: qcom: gdsc: Bump parent usage count when GDSC is found enabled

Message ID 20220606212112.3617731-1-bjorn.andersson@linaro.org
State Superseded
Headers show
Series clk: qcom: gdsc: Bump parent usage count when GDSC is found enabled | expand

Commit Message

Bjorn Andersson June 6, 2022, 9:21 p.m. UTC
When a GDSC is found to be enabled at boot the pm_runtime state will
be unbalanced as the GDSC is later turned off. Fix this by increasing
the usage counter on the power-domain, in line with how we handled the
regulator state.

Fixes: 1b771839de05 ("clk: qcom: gdsc: enable optional power domain support")
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
---
 drivers/clk/qcom/gdsc.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Andrew Halaney June 7, 2022, 12:15 p.m. UTC | #1
On Mon, Jun 06, 2022 at 02:21:12PM -0700, Bjorn Andersson wrote:
> When a GDSC is found to be enabled at boot the pm_runtime state will
> be unbalanced as the GDSC is later turned off. Fix this by increasing
> the usage counter on the power-domain, in line with how we handled the
> regulator state.
> 
> Fixes: 1b771839de05 ("clk: qcom: gdsc: enable optional power domain support")
> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
> ---
>  drivers/clk/qcom/gdsc.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/clk/qcom/gdsc.c b/drivers/clk/qcom/gdsc.c
> index 44520efc6c72..a1fa7c4cff60 100644
> --- a/drivers/clk/qcom/gdsc.c
> +++ b/drivers/clk/qcom/gdsc.c
> @@ -420,6 +420,9 @@ static int gdsc_init(struct gdsc *sc)
>  				return ret;
>  		}
>  
> +		/* ...and the power-domain */
> +		gdsc_pm_runtime_get(sc);
> +
>  		/*
>  		 * Votable GDSCs can be ON due to Vote from other masters.
>  		 * If a Votable GDSC is ON, make sure we have a Vote.
> -- 
> 2.35.1
> 

Makes sense to me!

Reviewed-by: Andrew Halaney <ahalaney@redhat.com>
Stephen Boyd June 8, 2022, 8:54 p.m. UTC | #2
Quoting Bjorn Andersson (2022-06-06 14:21:12)
> When a GDSC is found to be enabled at boot the pm_runtime state will
> be unbalanced as the GDSC is later turned off. Fix this by increasing
> the usage counter on the power-domain, in line with how we handled the
> regulator state.
> 
> Fixes: 1b771839de05 ("clk: qcom: gdsc: enable optional power domain support")

Is it fixing a regression to the point that I need to merge this on
-fixes? The commit text talks about fixing it but I don't understand the
urgency, i.e. was it discovered recently and this fixes display on some
board or something like that?

> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
> ---
>  drivers/clk/qcom/gdsc.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/clk/qcom/gdsc.c b/drivers/clk/qcom/gdsc.c
> index 44520efc6c72..a1fa7c4cff60 100644
> --- a/drivers/clk/qcom/gdsc.c
> +++ b/drivers/clk/qcom/gdsc.c
> @@ -420,6 +420,9 @@ static int gdsc_init(struct gdsc *sc)
>                                 return ret;
>                 }
>  
> +               /* ...and the power-domain */
> +               gdsc_pm_runtime_get(sc);

Shouldn't we check for error and bail out if it fails?
Andrew Halaney June 9, 2022, 1:49 p.m. UTC | #3
On Tue, Jun 07, 2022 at 07:15:48AM -0500, Andrew Halaney wrote:
> On Mon, Jun 06, 2022 at 02:21:12PM -0700, Bjorn Andersson wrote:
> > When a GDSC is found to be enabled at boot the pm_runtime state will
> > be unbalanced as the GDSC is later turned off. Fix this by increasing
> > the usage counter on the power-domain, in line with how we handled the
> > regulator state.
> > 
> > Fixes: 1b771839de05 ("clk: qcom: gdsc: enable optional power domain support")
> > Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
> > ---
> >  drivers/clk/qcom/gdsc.c | 3 +++
> >  1 file changed, 3 insertions(+)
> > 
> > diff --git a/drivers/clk/qcom/gdsc.c b/drivers/clk/qcom/gdsc.c
> > index 44520efc6c72..a1fa7c4cff60 100644
> > --- a/drivers/clk/qcom/gdsc.c
> > +++ b/drivers/clk/qcom/gdsc.c
> > @@ -420,6 +420,9 @@ static int gdsc_init(struct gdsc *sc)
> >  				return ret;
> >  		}
> >  
> > +		/* ...and the power-domain */
> > +		gdsc_pm_runtime_get(sc);
> > +
> >  		/*
> >  		 * Votable GDSCs can be ON due to Vote from other masters.
> >  		 * If a Votable GDSC is ON, make sure we have a Vote.
> > -- 
> > 2.35.1
> > 
> 
> Makes sense to me!
> 
> Reviewed-by: Andrew Halaney <ahalaney@redhat.com>

Gah, too trigger happy -- I missed checking the return of
gdsc_pm_runtime_get() as Stephen pointed out in his reply.
I think with that in place feel free to add my R-B.

Thanks,
Andrew
diff mbox series

Patch

diff --git a/drivers/clk/qcom/gdsc.c b/drivers/clk/qcom/gdsc.c
index 44520efc6c72..a1fa7c4cff60 100644
--- a/drivers/clk/qcom/gdsc.c
+++ b/drivers/clk/qcom/gdsc.c
@@ -420,6 +420,9 @@  static int gdsc_init(struct gdsc *sc)
 				return ret;
 		}
 
+		/* ...and the power-domain */
+		gdsc_pm_runtime_get(sc);
+
 		/*
 		 * Votable GDSCs can be ON due to Vote from other masters.
 		 * If a Votable GDSC is ON, make sure we have a Vote.