[U-Boot] [PATCH v2 01/11] ARM: fix relocation on ARM926EJS

Tom Rini trini at ti.com
Mon Sep 17 19:32:15 CEST 2012


On Mon, Sep 17, 2012 at 12:23:53PM -0500, Scott Wood wrote:
> On 09/17/2012 12:18:31 PM, Tom Rini wrote:
> >On Sun, Sep 16, 2012 at 05:36:47PM +0200, Marek Vasut wrote:
> >> Dear Jos? Miguel Gon?alves,
> >>
> >> > On 09/16/2012 11:06 AM, Marek Vasut wrote:
> >> > > Dear Jos? Miguel Gon?alves,
> >> > >
> >> > >> On 09/15/2012 07:03 PM, Marek Vasut wrote:
> >> > >>> Dear Jos? Miguel Gon?alves,
> >> > >>>
> >> > >>>> Jumping to board_init_r is not performed due to a bug on
> >address
> >> > >>>> computation.
> >> > >>>
> >> > >>> Is your CONFIG_SYS_TEXT_BASE configured correctly? I don't
> >detect any
> >> > >>> misbehavior on my arm926 boards.
> >> > >>
> >> > >> Maybe because you are not using it to build an SPL?
> >> > >
> >> > > I do ... and I use CONFIG_SPL_TEXT_BASE properly .
> >> >
> >> > >> Please check the same chunk of code in other start.S for
> >arm1176 and
> >> > >> armv7. They have the same code that I put for arm926ejs.
> >> > >
> >> > > Please wait and please first explain what is the issue.
> >> >
> >> > The issue is what I've explained in the patch comments.
> >>
> >> "Jumping to board_init_r is not performed due to a bug on
> >address computation."
> >>
> >> Ok, I don't know how to replicate the bug from this comment or
> >what effects it
> >> causes or ... well, anything. So please, try to be more
> >elaborate in your patch
> >> description next time. Anyway ..
> >>
> >> > Without this
> >> > change the code never reaches board_init_r in the SPL and I
> >think I have
> >> > all the configurations correctly set.
> >>
> >> I wonder why you'd ever want to reach board_init_r in the SPL.
> >SPL is there only
> >> to load the real U-Boot from whatever media, so you usually use
> >either NAND SPL
> >
> >Here's a good point for me to jump in, I think.  There's two things to
> >understand:
> >- In the current in-tree SPL implementations the code flow is
> >  board_init_f calls relocate_code() to clear the BSS _and_ get
> >our jump
> >  to board_init_r.  It does not actually relocate the running U-Boot,
> >  just clears the BSS.  board_init_r is what calls the things to load
> >  and boot the next stage (U-Boot or Linux).
> >
> >- In my series this has been changed slightly to be board_init_f calls
> >  memset and then board_init_r directly.  So this patch should not be
> >  needed once rebased on that series.
> 
> So you've removed the ability to relocate at all?  What about
> hardware where you boot from an I/O buffer, that you need to get out
> of in order to load more pages?

Then you do that instead.  Getting from board_init_f to _r is setup at
the arch level, weakly, and with what it must perform documented.

-- 
Tom


More information about the U-Boot mailing list