[U-Boot] rockchip: rk3288: init malloc_base, limit, ptr before spl_init

Simon Glass sjg at chromium.org
Wed Feb 22 04:00:09 UTC 2017


Hi Eddie,

On 21 February 2017 at 01:15, Eddie Cai <eddie.cai.linux at gmail.com> wrote:
> Andrew F. Davis's below patch broke rk3288 based board. that is because we call
> spl_init in board_init_f which is at very early stage. What Andrew want to fix
> is calling spl_init very late. That patch will make malloc_base, limit, ptr not
> initualized in spl_init when we call spl_init in board_init_f.  It seems
> impossible to meet two requirement in spl_init. So i simply init malloc_base,
> limit, ptr before spl_init.
>
> commit b3d2861eb20a795b99292b823c923935df26dfc6
> Author: Andrew F. Davis <afd at ti.com>
> Date:   Fri Jan 27 10:39:19 2017 -0600
>
>     spl: Remove overwrite of relocated malloc limit
>
> Signed-off-by: Eddie Cai <eddie.cai.linux at gmail.com>
> ---
>  arch/arm/mach-rockchip/rk3288-board-spl.c | 10 ++++++++++
>  1 file changed, 10 insertions(+)
>
> diff --git a/arch/arm/mach-rockchip/rk3288-board-spl.c b/arch/arm/mach-rockchip/rk3288-board-spl.c
> index 930939a..1f3170d 100644
> --- a/arch/arm/mach-rockchip/rk3288-board-spl.c
> +++ b/arch/arm/mach-rockchip/rk3288-board-spl.c
> @@ -184,6 +184,16 @@ void board_init_f(ulong dummy)
>         debug_uart_init();
>  #endif
>
> +#if defined(CONFIG_SYS_MALLOC_F_LEN)
> +#ifdef CONFIG_MALLOC_F_ADDR
> +       gd->malloc_base = CONFIG_MALLOC_F_ADDR;
> +#endif
> +#ifdef CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN
> +       gd->malloc_limit = CONFIG_SYS_MALLOC_F_LEN;
> +#endif
> +       gd->malloc_ptr = 0;
> +#endif
> +

Yuck we should not repeat this code. Can we instead have two versions
of spl_init()? Perhaps call the one that always sets things up
spl_early_init() since it is called before board_init_r()?

>         ret = spl_init();
>         if (ret) {
>                 debug("spl_init() failed: %d\n", ret);
> --
> 2.7.4
>

Regards,
Simon


More information about the U-Boot mailing list