
Can you please showcase using this feature somewhere? Thanks!
-- Tom
Yes. First of all, sincere apology for such a massive delay in it. I got snowed with the corporation work of mine.
So here is my go at showcasing it. We are in SPL U-Boot running code from within the static memory: arch/arm/cpu/armv8/start.S:reset vector -> arch/arm/cpu/armv8/start.S:main() -> arch/arm/lib/crt0_64.S:board_init_f() -> /board/<my_board>/common/spl.c:board_init_f()
board_init_f() does mem_malloc_init(malloc_start_in_static, size). It needs the malloc for SPI flash to load off some proprietary stuff. Note the size of the static memory is limited, so is our malloc size.
Then along it does the DDR memory initialization. Now we have much greater memory and can move our malloc allocator onto it. So again it does mem_malloc_init() but this time with an address in the DDR memory and a much greater size. And this is where this feature comes in hand. Just calling in mem_malloc_init() with the updated start addr and the size isn't enough. It also mandates resetting the malloc, namely defaulting its bins, and some bookkeeping.
I know there is an early malloc available I can use as the first one but that requires managing the two mallocs. This patch proposes to use a single malloc suite (dlmalloc) and use it freely around when and how it is needed.
Marek