Re: [PATCH] clk: Warn about critical clks that fail to enable

From: Stephen Boyd
Date: Mon Dec 30 2019 - 12:55:39 EST


Quoting Stephen Boyd (2019-12-26 14:13:54)
> If we don't warn here users of the CLK_IS_CRITICAL flag may not know
> that their clk isn't actually enabled because it silently fails to
> enable. Let's drop a big WARN_ON in that case so developers find these
> problems faster.
>
> Suggested-by: Jerome Brunet <jbrunet@xxxxxxxxxxxx>
> Cc: Guenter Roeck <linux@xxxxxxxxxxxx>
> Signed-off-by: Stephen Boyd <sboyd@xxxxxxxxxx>
> ---
>
> I suspect that this may start warning for other users. Let's see
> and revert in case it doesn't work.
>
> drivers/clk/clk.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
> index 772258de2d1f..6a9a66dfdeaa 100644
> --- a/drivers/clk/clk.c
> +++ b/drivers/clk/clk.c
> @@ -3427,13 +3427,13 @@ static int __clk_core_init(struct clk_core *core)
> unsigned long flags;
>
> ret = clk_core_prepare(core);
> - if (ret)
> + if (WARN_ON(ret))

We should probably just print the clk name that failed to be critically
enabled with a pr_warn(). The traceback pointing to this location will
be really hard to understand otherwise.

> goto out;
>
> flags = clk_enable_lock();
> ret = clk_core_enable(core);
> clk_enable_unlock(flags);
> - if (ret) {
> + if (WARN_ON(ret)) {
> clk_core_unprepare(core);
> goto out;
> }
>
> base-commit: 12ead77432f2ce32dea797742316d15c5800cb32
> --
> Sent by a computer, using git, on the internet
>