
On Sun, 24 Nov 2024 at 20:38, Caleb Connolly caleb.connolly@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:
- when using MULTI_DTB_FIT as this needs a working malloc (especially for compressed FIT).
- 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).
Move the initf_malloc() call earlier so that malloc is available during fdtdec_setup().
Signed-off-by: Caleb Connolly caleb.connolly@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
Reviewed-by: Ilias Apalodimas ilias.apalodimas@linaro.org