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

Marek Vasut marex at denx.de
Sat Aug 29 09:56:44 CEST 2015


On Saturday, August 29, 2015 at 01:21:31 AM, Simon Glass wrote:
> Hi,
> 
> On 28 August 2015 at 02:41, Jian Luo <Jian.Luo4 at boschrexroth.de> 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>
> > ---
> > 
> >  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;
> > +
> > 
> >         board_init_r(NULL, 0);
> >  
> >  }
> > 
> > --
> > 1.9.1
> 
> This does not look like the root cause to me. global_data is zeroed by
> crt0.S if CONFIG_SPL_FRAMEWORK is set, which it seems to be for
> socfpga.
> 
> What boot path does 'warm reset' take?

Warm reset resets the CPU core(s) and jumps to 0x0 in SRAM (without re-reading
anything from the boot media).

> Also BTW it would be better if board_init_f() returned rather than
> calling board_init_r() directly.

I'm all for it, it'd trim down the stack utilisation slightly too.

Best regards,
Marek Vasut


More information about the U-Boot mailing list