[U-Boot] [PATCH] arm: socfpga: dm: Fix DM initialization failure after warm reset

Marek Vasut marex at denx.de
Fri Aug 28 11:24:12 CEST 2015


On Friday, August 28, 2015 at 10:41:50 AM, Jian Luo wrote:
> gd->dm_root is not cleared in SPL after warm reset.
> This might cause DM initilazation failure.
> 
> Signed-off-by: Jian Luo <jian.luo4 at boschrexroth.de>

Hi!

> ---
>   arch/arm/mach-socfpga/spl.c | 6 ++++++
>   1 file changed, 6 insertions(+)
> 
> diff --git a/arch/arm/mach-socfpga/spl.c b/arch/arm/mach-socfpga/spl.c
> index 13ec24b..59fe1f2 100644
> --- a/arch/arm/mach-socfpga/spl.c
> +++ b/arch/arm/mach-socfpga/spl.c
> @@ -181,5 +181,11 @@ void board_init_f(ulong dummy)
>          /* Configure simple malloc base pointer into RAM. */
>          gd->malloc_base = CONFIG_SYS_TEXT_BASE + (1024 * 1024);
> 
> +       /*
> +        * gd->dm_root might contain non-zero value after warm reset.
> +        * Clear it to avoid dm_init error
> +        */
> +       gd->dm_root = NULL;

Nit: The indent should be done with tabs, not spaces. I think the email
got messed up somewhere along the way.

The bigger concern I have is that if you look into arch/arm/lib/crt0.S ,
you will see that the entire global data are cleared there (_main, label
clr_gd: ) and this code is executed before the board_init_f() .

Can you try tracking it down a bit more? I suspect that you might see
dm_init_and_scan() returned error -22 , is that what you observe please?

>          board_init_r(NULL, 0);
>   }

Best regards,
Marek Vasut


More information about the U-Boot mailing list