[U-Boot] [PATCH 1/2] microblaze: spl: Do not call mem_malloc_init and use early alloc

Simon Glass sjg at chromium.org
Mon Dec 14 04:47:10 CET 2015


Hi Michal,

On 3 February 2015 at 08:39, Michal Simek <michal.simek at xilinx.com> wrote:
>
> This patch has some parts connected together:
> - Use _gd in bss section which is automatically cleared
>   Location at SPL_MALLOC_END wasn't cleared at all
> - Use MALLOC_F_LEN(early alloc) instead of FULL MALLOC
>   (mem_malloc_init is not called at all)
> - Simplify malloc and stack init.
>   At the end of SPL addr is malloc area and below is stack
>
> Signed-off-by: Michal Simek <michal.simek at xilinx.com>
> ---
>
>  arch/microblaze/cpu/start.S          |  6 +++++-
>  include/configs/microblaze-generic.h | 32 +++++++++++---------------------
>  2 files changed, 16 insertions(+), 22 deletions(-)
>
> diff --git a/arch/microblaze/cpu/start.S b/arch/microblaze/cpu/start.S
> index cf9ee7e3e6ad..953d3a15eef2 100644
> --- a/arch/microblaze/cpu/start.S
> +++ b/arch/microblaze/cpu/start.S
> @@ -162,7 +162,11 @@ clear_bss:
>  #endif
>         brai    board_init_f
>  #else
> -       addi    r31, r0, CONFIG_SYS_SPL_MALLOC_END
> +       addi    r31, r0, _gd
> +#if defined(CONFIG_SYS_MALLOC_F_LEN)
> +       addi    r6, r0, CONFIG_SPL_STACK_ADDR
> +       swi     r6, r31, GD_MALLOC_BASE
> +#endif
>         brai    board_init_r
>  #endif
>  1:     bri     1b
> diff --git a/include/configs/microblaze-generic.h b/include/configs/microblaze-generic.h
> index 770acbea691b..166ab4f05654 100644
> --- a/include/configs/microblaze-generic.h
> +++ b/include/configs/microblaze-generic.h
> @@ -113,7 +113,12 @@
>  #endif
>
>  #define CONFIG_SYS_MALLOC_LEN  0xC0000
> -#define CONFIG_SYS_MALLOC_F_LEN        1024
> +#ifndef CONFIG_SPL_BUILD
> +# define CONFIG_SYS_MALLOC_F_LEN       1024
> +#else
> +# define CONFIG_SYS_MALLOC_SIMPLE
> +# define CONFIG_SYS_MALLOC_F_LEN       0x150
> +#endif

These should be set via Kconfig - e.g. default values for your arch,
or perhaps individual values in the defconfig files. At present this
breaks when driver model is enabled by default.

Can you please take a look?

>
>  /* Stack location before relocation */
>  #define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_TEXT_BASE
> @@ -426,25 +431,11 @@
>  /* BRAM start */
>  #define CONFIG_SYS_INIT_RAM_ADDR       0x0
>  /* BRAM size - will be generated */
> -#define CONFIG_SYS_INIT_RAM_SIZE       0x10000
> -/* Stack pointer prior relocation, must situated at on-chip RAM */
> -#define CONFIG_SYS_SPL_MALLOC_END      (CONFIG_SYS_INIT_RAM_ADDR + \
> -                                        CONFIG_SYS_INIT_RAM_SIZE - \
> -                                        GENERATED_GBL_DATA_SIZE)
> +#define CONFIG_SYS_INIT_RAM_SIZE       0x100000
>
> -#define CONFIG_SYS_SPL_MALLOC_SIZE     0x100
> -
> -/*
> - * The main reason to do it in this way is that MALLOC_START
> - * can't be defined - common/spl/spl.c
> - */
> -#if (CONFIG_SYS_SPL_MALLOC_SIZE != 0)
> -# define CONFIG_SYS_SPL_MALLOC_START   (CONFIG_SYS_SPL_MALLOC_END - \
> -                                        CONFIG_SYS_SPL_MALLOC_SIZE)
> -# define CONFIG_SPL_STACK_ADDR         CONFIG_SYS_SPL_MALLOC_START
> -#else
> -# define CONFIG_SPL_STACK_ADDR         CONFIG_SYS_SPL_MALLOC_END
> -#endif
> +# define CONFIG_SPL_STACK_ADDR         (CONFIG_SYS_INIT_RAM_ADDR + \
> +                                        CONFIG_SYS_INIT_RAM_SIZE - \
> +                                        CONFIG_SYS_MALLOC_F_LEN)
>
>  /* Just for sure that there is a space for stack */
>  #define CONFIG_SPL_STACK_SIZE          0x100
> @@ -453,8 +444,7 @@
>
>  #define CONFIG_SPL_MAX_FOOTPRINT       (CONFIG_SYS_INIT_RAM_SIZE - \
>                                          CONFIG_SYS_INIT_RAM_ADDR - \
> -                                        GENERATED_GBL_DATA_SIZE - \
> -                                        CONFIG_SYS_SPL_MALLOC_SIZE - \
> +                                        CONFIG_SYS_MALLOC_F_LEN - \
>                                          CONFIG_SPL_STACK_SIZE)
>
>  #endif /* __CONFIG_H */
> --
> 1.8.2.3

Regards,
Simon


More information about the U-Boot mailing list