
Hi Caleb,
On Sun, 24 Nov 2024 at 11: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).
Hmmm, how does this work today?
- 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@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