[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