Re: [PATCH] clk: add new Kconfig to control default behavior of disabling unused clocks
From: Abel Vesa
Date: Tue Mar 17 2026 - 09:11:10 EST
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.
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.