[U-Boot] [RFC] ARM: Start using fdt_high for relocation
Albert ARIBAUD
albert.u.boot at aribaud.net
Fri Dec 6 20:28:04 CET 2013
Hi Tom,
On Fri, 6 Dec 2013 12:18:13 -0500, Tom Rini <trini at ti.com> wrote:
> On Fri, Dec 06, 2013 at 05:59:37PM +0100, Albert ARIBAUD wrote:
> > Hi Tom,
> >
> > On Fri, 6 Dec 2013 10:48:50 -0500, Tom Rini <trini at ti.com> wrote:
> >
> > > Hey all,
> > >
> > > I've been thinking. We've had a thread on i.MX platforms about fdt
> > > being overwritten and needing to be moved to another address. And I've
> > > also had an internal problem about fdt being overwritten. So, how about
> > > as a rule of thumb we start setting fdt_high (in configs) to
> > > memory-start + 512MiB, as that's the lowmem limit we should always have
> > > available. This will fix the problem of BSS overwriting the DT, which
> > > is the problem we won't catch in normal bootm/bootz usage. Thoughts?
> >
> > Not sure I'm getting the issue clear, and I would like to avoid (me and
> > others) having to switch back and forth between threads. Can you sketch
> > the failure scenario in a couple of lines?
>
> Sure. Lets take am335x_evm builds (so Beaglebone Black/White, etc).
> If you start enabling all of the tracing options in the kernel (function
> tracing, graphs, etc), you get an uncompressed kernel and BSS that will
> use up the first ~16MiB of DDR. We default to placing the DT at about
> 15MiB into memory. So the kernel runs, clears BSS and eats the DT.
> System now hangs, and depending on debug options set you may or may not
> see anything at all from the kernel. U-Boot couldn't detect this
> failure because we don't know how big the kernel BSS is, only how big
> the zImage is (and where it is) and how big the fdt is and where it is.
> No overlaps, go ahead and run.
Thanks.
The only issue I have with the RFC is that the +512 MiB value will only
work with targets which have more than 512 MiB DDR, right? But since
you're suggesting this should be set in configs, you are only suggesting
+512 MiB, and any target could actually specify a lower value as long as
it's greater than or eqal to 16 MiB. Correct?
Amicalement,
--
Albert.
More information about the U-Boot
mailing list