All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jun Nie <jun.nie@linaro.org>
To: Stephen Boyd <sboyd@kernel.org>
Cc: linux-clk@vger.kernel.org,
	Michael Turquette <mturquette@baylibre.com>,
	Shawn Guo <shawn.guo@linaro.org>
Subject: Re: [PATCH] clk: emit warning if fail to get parent clk
Date: Fri, 9 Oct 2020 11:08:13 +0800	[thread overview]
Message-ID: <CABymUCPS0BY7sroQ-yt5A-HPZeCwp5oMw98YT99SsSdMGT+Nsw@mail.gmail.com> (raw)
In-Reply-To: <160211480321.310579.14554922934041815553@swboyd.mtv.corp.google.com>

Stephen Boyd <sboyd@kernel.org> 于2020年10月8日周四 上午7:53写道:
>
> Quoting Jun Nie (2020-09-28 01:47:44)
> > Emit warning if fail to get parent clk to expose potential issue earlier.
> > For example, clk_hw_get_rate() will return 0 for a clock without parent core
> > while parent number is not zero. This cause opp always think it is switching
> > frequency from 0 to some other frequency. Crash may happen if we switch
> > from high frequency to low frequency and lower CPU voltage before clk rate
> > switching.
>
> Thanks for the background reasoning. It's good to know what the problem
> is. Is there any way to change OPP so it can handle this scenario
> better?

Maybe we can save latest CPU voltage and lower the voltage per opp voltage
requirement instead of clk rate requirement.
>
> >
> > Signed-off-by: Jun Nie <jun.nie@linaro.org>
> > ---
> >  drivers/clk/clk.c | 7 +++++++
> >  1 file changed, 7 insertions(+)
> >
> > diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
> > index 1a27e99ccb17..78b21b888e56 100644
> > --- a/drivers/clk/clk.c
> > +++ b/drivers/clk/clk.c
> > @@ -424,6 +424,7 @@ static void clk_core_fill_parent_index(struct clk_core *core, u8 index)
> >  {
> >         struct clk_parent_map *entry = &core->parents[index];
> >         struct clk_core *parent = ERR_PTR(-ENOENT);
> > +       int emit_warn = 0;
> >
> >         if (entry->hw) {
> >                 parent = entry->hw->core;
> > @@ -443,6 +444,12 @@ static void clk_core_fill_parent_index(struct clk_core *core, u8 index)
> >         /* Only cache it if it's not an error */
> >         if (!IS_ERR(parent))
> >                 entry->core = parent;
> > +       else if (parent != ERR_PTR(-EPROBE_DEFER))
> > +               emit_warn = 1;
> > +
> > +       if (emit_warn || (!parent && core->num_parents))
> > +               pr_warn("Fail to get indexed %d parent for clk %s.",
> > +                       index, core->name);
>
> How do we know that this error isn't because the parent hasn't been
> probed yet?

Yes, this is chance that failure to probe parent also cause the error.
But I had thought there may
be unnecessary error message before the successful probing, though I
did not see it. If you think
it does not a matter, next version can emit warning on all error.

Jun

  reply	other threads:[~2020-10-09  3:08 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-28  8:47 [PATCH] clk: emit warning if fail to get parent clk Jun Nie
2020-10-07 23:53 ` Stephen Boyd
2020-10-09  3:08   ` Jun Nie [this message]
2020-10-12 19:25     ` Stephen Boyd

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CABymUCPS0BY7sroQ-yt5A-HPZeCwp5oMw98YT99SsSdMGT+Nsw@mail.gmail.com \
    --to=jun.nie@linaro.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=mturquette@baylibre.com \
    --cc=sboyd@kernel.org \
    --cc=shawn.guo@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.