lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Thu, 26 Oct 2023 08:53:03 +0200
From:   Geert Uytterhoeven <geert@...ux-m68k.org>
To:     "Peng Fan (OSS)" <peng.fan@....nxp.com>
Cc:     sboyd@...nel.org, abelvesa@...nel.org, mturquette@...libre.com,
        clement.leger@...tlin.com, sudeep.holla@....com,
        cristian.marussi@....com, kernel@...gutronix.de,
        pure.logic@...us-software.ie, a.fatoum@...gutronix.de,
        aford173@...il.com, absahu@...eaurora.org,
        linux-clk@...r.kernel.org, linux-kernel@...r.kernel.org,
        Peng Fan <peng.fan@....com>
Subject: Re: [PATCH] clk: clk-conf: bypass setting rate/parent if already same

Hi Peng,

On Thu, Oct 26, 2023 at 8:35 AM Peng Fan (OSS) <peng.fan@....nxp.com> wrote:
> From: Peng Fan <peng.fan@....com>
>
> If the original rate and parent is already the same as what users
> wanna to configure through assigned clock rate and parent, there
> is no need to configure them again which may cause more cpu cycles
> or more SCMI RPC calls.
>
> So check the rate and parent first, and bypass when the original
> rate and parent are same as requested by device tree node.
>
> Signed-off-by: Peng Fan <peng.fan@....com>

Thanks for your patch!

> --- a/drivers/clk/clk-conf.c
> +++ b/drivers/clk/clk-conf.c
> @@ -65,7 +65,11 @@ static int __set_clk_parents(struct device_node *node, bool clk_supplier)
>                         goto err;
>                 }
>
> -               rc = clk_set_parent(clk, pclk);
> +               if (__clk_get_hw(pclk) != __clk_get_hw(clk_get_parent(clk)))
> +                       rc = clk_set_parent(clk, pclk);
> +               else
> +                       rc = 0;

The else branch is not needed, as rc already indicates a non-error
condition.

> +
>                 if (rc < 0)
>                         pr_err("clk: failed to reparent %s to %s: %d\n",
>                                __clk_get_name(clk), __clk_get_name(pclk), rc);
> @@ -112,7 +116,10 @@ static int __set_clk_rates(struct device_node *node, bool clk_supplier)
>                                 return PTR_ERR(clk);
>                         }
>
> -                       rc = clk_set_rate(clk, rate);
> +                       if (clk_get_rate(clk) != rate)
> +                               rc = clk_set_rate(clk, rate);
> +                       else
> +                               rc = 0;

Likewise.

>                         if (rc < 0)
>                                 pr_err("clk: couldn't set %s clk rate to %u (%d), current rate: %lu\n",
>                                        __clk_get_name(clk), rate, rc,

However, one can wonder whether this check should be done in
clk_set_parent() resp. clk_set_rate() instead, so it would benefit
all callers?

Also:

    /**
     * clk_get_rate - obtain the current clock rate (in Hz) for a clock source.
     *                This is only valid once the clock source has been enabled.
     * @clk: clock source
     */

So at least the second part is not guaranteed to work?

Gr{oetje,eeting}s,

                        Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@...ux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ