Re: [PATCH] clk: add new Kconfig to control default behavior of disabling unused clocks
From: Maxime Ripard
Date: Tue Mar 17 2026 - 09:21:58 EST
On Tue, Mar 17, 2026 at 03:03:01PM +0200, Abel Vesa wrote:
> On 26-03-17 08:26:27, Brian Masney wrote:
> > Hi Hans,
> >
> > On Tue, Mar 17, 2026 at 01:16:33PM +0100, Hans de Goede wrote:
> > > On 17-Mar-26 13:14, Abel Vesa wrote:
> > > > On 26-03-17 08:30:24, Maxime Ripard wrote:
> > > >> On Mon, Mar 16, 2026 at 06:33:45PM -0400, Brian Masney wrote:
> > > >>> At the 2023 Linux Plumbers Conference in Richmond VA, there was a
> > > >>> discussion about how large number of systems need to boot with
> > > >>> clk_ignore_unused. Per the discussions at the conference, the existing
> > > >>> behavior in the clk core is broken, and there is a desire to completely
> > > >>> remove this functionality.
> > > >>
> > > >> Broken how?
> > > >>
> > > >> clk_ignore_unused is to a point where it's seriously cargo-culted and
> > > >> documented as a silver bullet, when in reality it's just a debug tool
> > > >> for broken drivers, and the driver must be fixed.
> > > >>
> > > >> But nobody is actually fixing it.
> > > >>
> > > >> See
> > > >> https://fedoraproject.org/wiki/Changes/Automatic_DTB_selection_for_aarch64_EFI_systems#How_To_Test
> > > >> for example. The affected clock could be marked as CLK_IS_CRITICAL, and
> > > >> fedora wouldn't have to package anything, change anything, etc. But no,
> > > >> the problem is clk_ignore_unused.
> > > >
> > > > Nope. Don't ever mark clocks as critical unless system crashes without
> > > > them.
> > > >
> > > > Here is an example or why clocks cannot be marked as critical but need
> > > > to be kept by the clk_ignore_unused: display driver probes later.
> > > > If you mark it as critical you just made the clock stay enabled even
> > > > when display is off.
> > > >
> > > > And this is just one example.
> > >
> > > Interesting, so maybe we need a new way flag to mark clocks as not to
> > > be turned off when turning unused clocks off, which does not block
> > > them getting disabled normally later ?
> > >
> > > (I was under the mistaken impression this is what CLK_IS_CRITICAL did)
> >
> > There's a separate flag CLK_IGNORE_UNUSED that can be used instead.
>
> But figuring out which clock needs to stay enabled until whatever
> consumer module is provided and probes is a mess.
And yet, plenty of platforms are doing it just fine.
> The solution is drop the clk_ignore_unused and rely on the sync_state of
> each provider to do the job. Sync state isn't reached until all
> providers probes, therefore the clocks stay on until then.
The problem here isn't that providers have to be there, you said it
yourself, it's about when consumers will be loaded and get their clock.
Either way, sync_states don't seem to move forward much when it comes to
clocks, so it might be something that we converge to eventually, but it
won't help this patch today.
Maxime
Attachment:
signature.asc
Description: PGP signature