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: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Thu, 26 Oct 2023 08:01:45 +0000
From:   Peng Fan <peng.fan@....com>
To:     Geert Uytterhoeven <geert@...ux-m68k.org>,
        "Peng Fan (OSS)" <peng.fan@....nxp.com>
CC:     "sboyd@...nel.org" <sboyd@...nel.org>,
        "abelvesa@...nel.org" <abelvesa@...nel.org>,
        "mturquette@...libre.com" <mturquette@...libre.com>,
        "clement.leger@...tlin.com" <clement.leger@...tlin.com>,
        "sudeep.holla@....com" <sudeep.holla@....com>,
        "cristian.marussi@....com" <cristian.marussi@....com>,
        "kernel@...gutronix.de" <kernel@...gutronix.de>,
        "pure.logic@...us-software.ie" <pure.logic@...us-software.ie>,
        "a.fatoum@...gutronix.de" <a.fatoum@...gutronix.de>,
        "aford173@...il.com" <aford173@...il.com>,
        "absahu@...eaurora.org" <absahu@...eaurora.org>,
        "linux-clk@...r.kernel.org" <linux-clk@...r.kernel.org>,
        "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: RE: [PATCH] clk: clk-conf: bypass setting rate/parent if already same

> 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?

Yeah, I could do that, but first Let's see whether Stephen is ok with
your suggestion or not.

> 
> 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?

I am not sure, but seems there is no clk enabled check in clk_get_rate
function.

Thanks,
Peng.

> 
> 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