malloc: Add a way to control the size of dlmalloc

There are quite a few options available which can reduce code size. Most
of them only make sense in SPL. Add a Kconfig option to enable a smaller
dlmalloc for U-Boot proper and SPL.

Signed-off-by: Simon Glass <simon.glass@canonical.com>
This commit is contained in:
Simon Glass
2025-12-01 00:47:48 +00:00
parent d8c064ab34
commit 9eb1b70a56

47
Kconfig
View File

@@ -464,6 +464,53 @@ config SYS_MALLOC_DEFAULT_TO_INIT
If such a scenario is sought choose yes.
config SYS_MALLOC_SMALL
bool "Optimise malloc for code size"
help
Enable code-size optimisations for dlmalloc. This:
- Disables tree bins for allocations >= 256 bytes, using simple
linked-list bins instead. This changes large-allocation performance
from O(log n) to O(n) but saves ~1.5-2KB.
- Simplifies memalign() by removing fallback retry logic that attempts
multiple allocation strategies when initial over-allocation fails.
This saves ~100-150 bytes.
- Disables in-place realloc optimisation, which resizes allocations
without copying if space permits. This saves ~200 bytes.
- Uses static malloc parameters instead of runtime-configurable ones.
These optimisations may increase fragmentation and reduce performance
for workloads with many large or aligned allocations, but are suitable
for most U-Boot use cases where code size is more important.
If unsure, say N.
config SPL_SYS_MALLOC_SMALL
bool "Optimise malloc for code size in SPL"
depends on SPL && !SPL_SYS_MALLOC_SIMPLE
default y
help
Enable code-size optimisations for dlmalloc in SPL. This:
- Disables tree bins for allocations >= 256 bytes, using simple
linked-list bins instead. This changes large-allocation performance
from O(log n) to O(n) but saves ~1.5-2KB.
- Simplifies memalign() by removing fallback retry logic. This saves
~100-150 bytes.
- Disables in-place realloc optimisation. This saves ~200 bytes.
- Uses static malloc parameters instead of runtime-configurable ones.
SPL typically has predictable memory usage where these optimisations
have minimal impact, making the code size savings worthwhile.
If unsure, say Y to minimize SPL code size.
config TOOLS_DEBUG
bool "Enable debug information for tools"
help