public inbox for linux-clk@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] clk: do not trust cached rates for disabled clocks
@ 2025-10-03 22:29 rs
  2025-10-07 23:58 ` Randolph Sapp
  2025-10-16 11:23 ` Michael Walle
  0 siblings, 2 replies; 14+ messages in thread
From: rs @ 2025-10-03 22:29 UTC (permalink / raw)
  To: mturquette, sboyd; +Cc: linux-clk, mwalle

From: Randolph Sapp <rs@ti.com>

Recalculate the clock rate for unprepared clocks. This cached value can
vary depending on the clocking architecture. On platforms with clocks
that have shared management it's possible that:

 - Previously disabled clocks have been enabled by other entities
 - Rates calculated during clock tree initialization could have changed

Signed-off-by: Randolph Sapp <rs@ti.com>
---

I'm hoping this will start a bit of a discussion. I'm still curious why people
would want to read the rate of an unprepared clock, but there were so many
logged operations on my test platforms that I assumed it must have some purpose.

Either way, I don't believe cached values should ever be trusted in this
scenario.

 drivers/clk/clk.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index 85d2f2481acf..9c8b9036b6f6 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -1971,8 +1971,16 @@ static void __clk_recalc_rates(struct clk_core *core, bool update_req,
 
 static unsigned long clk_core_get_rate_recalc(struct clk_core *core)
 {
-	if (core && (core->flags & CLK_GET_RATE_NOCACHE))
-		__clk_recalc_rates(core, false, 0);
+	if (core) {
+		bool prepared = clk_core_is_prepared(core);
+
+		if (core->flags & CLK_GET_RATE_NOCACHE || !prepared) {
+			if (!prepared)
+				pr_debug("%s: rate requested for unprepared clock %s\n",
+					 __func__, core->name);
+			__clk_recalc_rates(core, false, 0);
+		}
+	}
 
 	return clk_core_get_rate_nolock(core);
 }
-- 
2.51.0


^ permalink raw reply related	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2025-10-29 18:17 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-03 22:29 [PATCH] clk: do not trust cached rates for disabled clocks rs
2025-10-07 23:58 ` Randolph Sapp
2025-10-16 11:23 ` Michael Walle
2025-10-17 18:09   ` Randolph Sapp
2025-10-21 22:17     ` Randolph Sapp
2025-10-22  6:23       ` Michael Walle
2025-10-22 23:18         ` Randolph Sapp
2025-10-23  6:44           ` Michael Walle
2025-10-23  8:36           ` Maxime Ripard
2025-10-23 22:55             ` Randolph Sapp
2025-10-24 11:23               ` Maxime Ripard
2025-10-27 23:44                 ` Randolph Sapp
2025-10-29  9:05                   ` Maxime Ripard
2025-10-29 18:17                     ` Randolph Sapp

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox