[PATCH v6 2/3] common: board: make initcalls static
Simon Glass
sjg at chromium.org
Tue Jun 3 17:22:01 CEST 2025
Hi Jerome,
On Fri, 4 Apr 2025 at 07:50, Jerome Forissier
<jerome.forissier at linaro.org> wrote:
>
> Change board_init_f(), board_init_f_r() and board_init_r() to make
> static calls instead of iterating over the init_sequence_f,
> init_sequence_f_r and init_sequence_r arrays, respectively. This makes
> the code a simpler (and even more so when initcall_run_list() is
> later removed) and it reduces the binary size as well. Tested with
> xilinx_zynqmp_kria_defconfig; bloat-o-meter results:
>
> - With LTO
> add/remove: 106/196 grow/shrink: 10/28 up/down: 31548/-33829 (-2281)
> Total: Before=1070471, After=1068190, chg -0.21%
> - Without LTO
> add/remove: 0/54 grow/shrink: 3/0 up/down: 2322/-2832 (-510)
> Total: Before=1121723, After=1121213, chg -0.05%
>
> Execution time does not change in a noticeable way.
>
> Signed-off-by: Jerome Forissier <jerome.forissier at linaro.org>
> ---
> arch/sh/lib/board.c | 9 +-
> common/board_f.c | 223 ++++++++++++++++----------------
> common/board_r.c | 247 ++++++++++++++++++------------------
> include/initcall.h | 27 ++++
> test/py/tests/test_trace.py | 8 +-
> 5 files changed, 273 insertions(+), 241 deletions(-)
>
[..]
> diff --git a/common/board_f.c b/common/board_f.c
> index baf98fb8ec8..a1bb8a01be5 100644
> --- a/common/board_f.c
> +++ b/common/board_f.c
[..]
> @@ -1049,8 +1056,8 @@ void board_init_f(ulong boot_flags)
> /*
> * For now this code is only used on x86.
> *
> - * init_sequence_f_r is the list of init functions which are run when
> - * U-Boot is executing from Flash with a semi-limited 'C' environment.
> + * Run init functions which are run when U-Boot is executing from Flash with a
> + * semi-limited 'C' environment.
> * The following limitations must be considered when implementing an
> * '_f_r' function:
> * - 'static' variables are read-only
> @@ -1063,18 +1070,16 @@ void board_init_f(ulong boot_flags)
> * NOTE: At present only x86 uses this route, but it is intended that
> * all archs will move to this when generic relocation is implemented.
> */
> -static const init_fnc_t init_sequence_f_r[] = {
> -#if !CONFIG_IS_ENABLED(X86_64)
> - init_cache_f_r,
> +static void initcall_run_f_r(void)
> +{
> +#if CONFIG_IS_ENABLED(X86_64)
This is reversing the condition, which breaks link and coral in my lab.
> + INITCALL(init_cache_f_r);
> #endif
> -
> - NULL,
> -};
> +}
Regards,
Simon
More information about the U-Boot
mailing list