[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20250923-brave-zebu-of-growth-a6426b@penduick>
Date: Tue, 23 Sep 2025 11:07:38 +0200
From: Maxime Ripard <mripard@...nel.org>
To: Kevin Hilman <khilman@...nel.org>
Cc: Michael Walle <mwalle@...nel.org>,
Frank Binns <frank.binns@...tec.com>, Matt Coster <matt.coster@...tec.com>,
Maarten Lankhorst <maarten.lankhorst@...ux.intel.com>, Thomas Zimmermann <tzimmermann@...e.de>,
David Airlie <airlied@...il.com>, Simona Vetter <simona@...ll.ch>, Rob Herring <robh@...nel.org>,
Krzysztof Kozlowski <krzk+dt@...nel.org>, Conor Dooley <conor+dt@...nel.org>, Nishanth Menon <nm@...com>,
Vignesh Raghavendra <vigneshr@...com>, Tero Kristo <kristo@...nel.org>,
Santosh Shilimkar <ssantosh@...nel.org>, Michael Turquette <mturquette@...libre.com>,
Stephen Boyd <sboyd@...nel.org>, Andrew Davis <afd@...com>, dri-devel@...ts.freedesktop.org,
devicetree@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-arm-kernel@...ts.infradead.org, linux-clk@...r.kernel.org
Subject: Re: [PATCH 2/3] clk: keystone: don't cache clock rate
On Wed, Sep 17, 2025 at 08:24:47AM -0700, Kevin Hilman wrote:
> Michael Walle <mwalle@...nel.org> writes:
>
> > The TISCI firmware will return 0 if the clock or consumer is not
> > enabled although there is a stored value in the firmware. IOW a call to
> > set rate will work but at get rate will always return 0 if the clock is
> > disabled.
> > The clk framework will try to cache the clock rate when it's requested
> > by a consumer. If the clock or consumer is not enabled at that point,
> > the cached value is 0, which is wrong.
>
> Hmm, it also seems wrong to me that the clock framework would cache a
> clock rate when it's disabled. On platforms with clocks that may have
> shared management (eg. TISCI or other platforms using SCMI) it's
> entirely possible that when Linux has disabled a clock, some other
> entity may have changed it.
It doesn't really help that the CCF doesn't seem to agree on if it
should do that in the first place :)
In the original clk API definition, you're not supposed to call
clk_get_rate() when the clock is disabled.
https://elixir.bootlin.com/linux/v6.16.8/source/include/linux/clk.h#L746
However, it's been allowed by the CCF since forever:
https://elixir.bootlin.com/linux/v6.16.8/source/drivers/clk/clk.c#L1986
But then, some drivers will return 0 as a valid value, and not an error
code (whatever 0Hz for a clock means).
It's kind of a mess, and very regression prone, so I don't really expect
it to change anytime soon.
Maxime
Download attachment "signature.asc" of type "application/pgp-signature" (274 bytes)
Powered by blists - more mailing lists