[PATCH] dlmalloc: Add an option to default malloc to init

Marek marek.bykowski at gmail.com
Tue Apr 21 02:21:36 CEST 2020


>
> Can you please showcase using this feature somewhere?  Thanks!
>

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


More information about the U-Boot mailing list