Re: [PATCH 6/9] clk: Allow the common clk framework to be selectable

From: Greg Ungerer
Date: Tue Apr 07 2020 - 01:07:13 EST


Hi Arnd, Stephen

On 6/4/20 5:35 pm, Arnd Bergmann wrote:
On Mon, Apr 6, 2020 at 5:01 AM Stephen Boyd <sboyd@xxxxxxxxxx> wrote:
Quoting Arnd Bergmann (2020-04-05 05:45:20)
On Sun, Apr 5, 2020 at 4:51 AM Stephen Boyd <sboyd@xxxxxxxxxx> wrote:
There's one snag with doing this, and that's making sure that randconfig
builds don't select this option when some architecture or platform
implements 'struct clk' outside of the common clk framework. Introduce a
new config option 'HAVE_LEGACY_CLK' to indicate those platforms that
haven't migrated to the common clk framework and therefore shouldn't be
allowed to select this new config option. Also add a note that we hope
one day to remove this config entirely.

Good idea!

I've looked through the individual ones and commented a bit on
what I think may or may not happen with them.

ralink SOC_MT7621 is the only one that I think you got wrong,
as it already has common-clk support.

Ah I missed that it was inside a big if RALINK. Thanks. I suppose I
should just remove the select then for that config and not worry about
the duplication of clkdev and common clk configs.

Won't that cause build failures in those configurations that have
both implementations?

According to the Makefile, the clk.c file is built whenever CONFIG_MIPS_GIC
is unset, so I think we need

select HAVE_LEGACY_CLK if !MIPS_GIC

or maybe move the select into the per-chip configs that need it:
RT288X, RT305X, RT3883, and MT7620.

diff --git a/arch/m68k/Kconfig.cpu b/arch/m68k/Kconfig.cpu
index 60ac1cd8b96f..bd2d29c22a10 100644
--- a/arch/m68k/Kconfig.cpu
+++ b/arch/m68k/Kconfig.cpu

text data bss dec hex filename
1934726 263616 83284 2281626 22d09a obj/vmlinux-before
1971989 266192 83308 2321489 236c51 obj/vmlinux-after

The coldfire clock implementation looks rather simple compared
to chips from the 2010s: most chips have only fixed clocks,
and three of them have one of two registers of clock gates.

It shouldn't be hard to convert, but enabling common-clk will
cause a noticeable kernel size increase on the fairly limited
hardware.

Simply enabling COMMON_CLK in m5475evb_defconfig
results in a 1.7% or 40KB growth in kernel size, plus there
would be additional dynamic memory usage:
There could certainly be some work done to reduce the code size of the
CCF. I haven't looked but perhaps we could save some memory by making
the basic types selectable too and then push a bunch of kconfig updates
through for that.

Right, that might help. Another possibility would be to support both
the common clk layer and the custom clk implementation on coldfire
until we remove the other custom implementations, by which point
even fewer people will care about coldfire.

Let's see what Geert and Greg think would be the best path for coldfire,
maybe the added 40KB is less of a problem after all.

Losing another 40k is not ideal, but not the end of the world.
It would not stop me running it on any platforms I regularly
run on. For sure some of the really old hardware just doesn't
have the RAM to spare.

Any way, I say we have to move forward and and move to using
the common clock framework for ColdFire sooner than later.

Regards
Greg