[U-Boot] [PATCH 5/6] spl: support using full malloc with SYS_MALLOC_F_LEN

Simon Glass sjg at chromium.org
Tue Mar 19 01:24:16 UTC 2019


Hi Simon,

On Tue, 12 Mar 2019 at 05:35, Simon Goldschmidt
<simon.k.r.goldschmidt at gmail.com> wrote:
>
> Some platforms (like socfpga A10) need a big hep before SDRAM is available
> (e.g. because FAT is used). For such platforms, simple_malloc is often not
> a good option as it does not support freeing memory. These platforms often
> use the non-Kconfig defines CONFIG_SYS_SPL_MALLOC_START (and its SIZE).
>
> This patch allows enabling CONFIG_SPL_SYS_MALLOC_F_LEN while leaving
> CONFIG_SPL_SYS_MALLOC_SIMPLE disabled. In this case, the full malloc heap
> is made available as early as the simple_malloc heap would be normally.
>
> This way, platforms can drop the non-Kconfig options to set up the full
> heap and rely on the same automatically calculated heap allocation used
> for simple heap.
>
> Signed-off-by: Simon Goldschmidt <simon.k.r.goldschmidt at gmail.com>
> ---
>
>  common/spl/spl.c | 5 +++++
>  1 file changed, 5 insertions(+)
>
> diff --git a/common/spl/spl.c b/common/spl/spl.c
> index 88d4b8a9bf..b89340eb27 100644
> --- a/common/spl/spl.c
> +++ b/common/spl/spl.c
> @@ -383,8 +383,13 @@ static int spl_common_init(bool setup_malloc)
>  #ifdef CONFIG_MALLOC_F_ADDR
>                 gd->malloc_base = CONFIG_MALLOC_F_ADDR;
>  #endif
> +#if CONFIG_IS_ENABLED(SYS_MALLOC_SIMPLE)

Can we use if() instead of #if here?

>                 gd->malloc_limit = CONFIG_VAL(SYS_MALLOC_F_LEN);
>                 gd->malloc_ptr = 0;
> +#else
> +               mem_malloc_init(gd->malloc_base, CONFIG_VAL(SYS_MALLOC_F_LEN));
> +               gd->flags |= GD_FLG_FULL_MALLOC_INIT;
> +#endif
>         }
>  #endif
>         ret = bootstage_init(true);
> --
> 2.17.1
>

Also I feel some updates should be made to the README, or perhaps Kconfig help.

Regards,
Simon


More information about the U-Boot mailing list