Re: [PATCH/RFC] of: Shrink struct of_device_id
From: Geert Uytterhoeven <geert@linux-m68k.org>
Date: 2021-11-10 19:07:51
Also in:
linux-devicetree, linux-mips, linux-renesas-soc, linux-riscv, linuxppc-dev, lkml
Hi Rasmus, On Wed, Nov 10, 2021 at 5:51 PM Rasmus Villemoes [off-list ref] wrote:
On 10/11/2021 17.23, Geert Uytterhoeven wrote:quoted
Currently struct of_device_id is 196 (32-bit) or 200 (64-bit) bytes large. It contains fixed-size strings for a name, a type, and a compatible value, but the first two are barely used. OF device ID tables contain multiple entries, plus an empty sentinel entry. Statistics for my current kernel source tree: - 4487 tables with 16836 entries (3367200 bytes) - 176 names (average 6.7 max 23 chars) - 66 types (average 5.1 max 21 chars) - 12192 compatible values (average 18.0 max 45 chars) Taking into account the minimum needed size to store the strings, only 6.9% of the allocated space is used... Reduce kernel size by reducing the sizes of the fixed strings by one half.Tried something like this 2.5 years ago: https://lore.kernel.org/lkml/20190425203101.9403-1-linux@rasmusvillemoes.dk/ (local)
I wasn't aware of that. I reworked some code which used multiple
of_find_compatible_node() calls before, and noticed the end result
had grown a lot due to the sheer size of of_device_id
("[PATCH] soc: renesas: Consolidate product register handling",
https://lore.kernel.org/all/057721f46c7499de4133135488f0f3da7fb39265.1636570669.git.geert+renesas@glider.be (local)).
I think that there might be some not-in-tree code that relies on the existing layout. I considered adding a CONFIG_ knob, either for these sizes in particular, or more generally a def_bool y "CONFIG_LEGACY" which embedded folks that build the entire distro from source and don't have any legacy things can turn off, and then get more sensible defaults all around.
Most of that should have been gone since the #ifdef KERNEL was removed
from include/linux/mod_devicetable.h in commit 6543becf26fff612
("mod/file2alias: make modalias generation safe for cross compiling").
Of course you can never know for sure...
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel