[PATCH] common/board_f: init malloc earlier

Simon Glass sjg at chromium.org
Tue Nov 26 01:32:34 CET 2024


Hi Caleb,

On Sun, 24 Nov 2024 at 11:38, Caleb Connolly <caleb.connolly at linaro.org> wrote:
>
> Currently the early malloc initialisation is done partially in
> board_init_f_init_reserve() (on arm64 at least), which configures
> gd->malloc_base. But it isn't actually usable until initf_malloc() is
> called which doesn't happen until after fdtdec_setup().
>
> This causes problems in a few scenarios:
>
> 1. when using MULTI_DTB_FIT as this needs a working malloc (especially
>    for compressed FIT).

Hmmm, how does this work today?

> 2. Some platforms may need to allocate memory as part of memory map
>    initialisation (e.g. Qualcomm will need this to parse the memory map
>    from SMEM).

That really needs to be tidied up. When does this fixup need to be
done? I imagine it is somewhere prior to setup_dest_addr() ? Perhaps
we could introduce an event to do 'memory map' stuff?

Regards,
Simon


>
> Move the initf_malloc() call earlier so that malloc is available during
> fdtdec_setup().
>
> Signed-off-by: Caleb Connolly <caleb.connolly at linaro.org>
> ---
>  common/board_f.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/common/board_f.c b/common/board_f.c
> index 98dc2591e1d0..bddfa6b992b9 100644
> --- a/common/board_f.c
> +++ b/common/board_f.c
> @@ -867,15 +867,15 @@ static int initf_upl(void)
>  }
>
>  static const init_fnc_t init_sequence_f[] = {
>         setup_mon_len,
> +       initf_malloc,
>  #ifdef CONFIG_OF_CONTROL
>         fdtdec_setup,
>  #endif
>  #ifdef CONFIG_TRACE_EARLY
>         trace_early_init,
>  #endif
> -       initf_malloc,
>         initf_upl,
>         log_init,
>         initf_bootstage,        /* uses its own timer, so does not need DM */
>         event_init,
> --
> 2.47.0
>


More information about the U-Boot mailing list