From 1caf36ce3b4b8bd1838aa989f013be361774f0e1 Mon Sep 17 00:00:00 2001 From: Guennadi Liakhovetski Date: Mon, 25 Nov 2024 15:52:29 +0200 Subject: [PATCH] llext: remove LIB_MANAGER_BSS We don't need to store .bss address and size until the module is freed since .bss is allocated together with .data and we only need its size when initialising it, not when freeing module memory. Remove it to save memory. Signed-off-by: Guennadi Liakhovetski --- src/include/sof/lib_manager.h | 1 - src/library_manager/llext_manager.c | 11 ++--------- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/src/include/sof/lib_manager.h b/src/include/sof/lib_manager.h index 592207a8c650..eb7bc21856d2 100644 --- a/src/include/sof/lib_manager.h +++ b/src/include/sof/lib_manager.h @@ -87,7 +87,6 @@ enum { LIB_MANAGER_TEXT, LIB_MANAGER_DATA, LIB_MANAGER_RODATA, - LIB_MANAGER_BSS, LIB_MANAGER_N_SEGMENTS, }; diff --git a/src/library_manager/llext_manager.c b/src/library_manager/llext_manager.c index 93269df47fd0..387545fa11ae 100644 --- a/src/library_manager/llext_manager.c +++ b/src/library_manager/llext_manager.c @@ -146,8 +146,8 @@ static int llext_manager_load_module(const struct llext *ext, const struct llext /* .bss, should be within writable data above */ void __sparse_cache *bss_addr = (void __sparse_cache *) - ctx->segment[LIB_MANAGER_BSS].addr; - size_t bss_size = ctx->segment[LIB_MANAGER_BSS].size; + ebl->loader.sects[LLEXT_MEM_BSS].sh_addr; + size_t bss_size = ebl->loader.sects[LLEXT_MEM_BSS].sh_size; int ret; /* Check, that .bss is within .data */ @@ -282,13 +282,6 @@ static int llext_manager_link(struct llext_buf_loader *ebl, uintptr_t dram_base, ctx->segment[LIB_MANAGER_DATA].addr, ctx->segment[LIB_MANAGER_DATA].size); - ctx->segment[LIB_MANAGER_BSS].addr = ebl->loader.sects[LLEXT_MEM_BSS].sh_addr; - ctx->segment[LIB_MANAGER_BSS].size = ebl->loader.sects[LLEXT_MEM_BSS].sh_size; - - tr_dbg(&lib_manager_tr, ".bss: start: %#lx size %#x", - ctx->segment[LIB_MANAGER_BSS].addr, - ctx->segment[LIB_MANAGER_BSS].size); - ssize_t binfo_o = llext_find_section(&ebl->loader, ".mod_buildinfo"); if (binfo_o >= 0)