[U-Boot-Users] builtin OF tree dtb gone

Timur Tabi timur at freescale.com
Mon Jan 22 22:03:18 CET 2007

Pantelis Antoniou wrote:
> On 17 Δεκ 2006, at 10:40 ΠΜ, Joakim Tjernlund wrote:
>>> -----Original Message-----
>>> From: glikely at gmail.com [mailto:glikely at gmail.com] On Behalf
>>> Of Grant Likely
>>> Sent: den 17 december 2006 16:11
>>> To: Joakim Tjernlund
>>> Cc: wd at denx.de; u-boot-users at lists.sourceforge.net
>>> Subject: Re: [U-Boot-Users] builtin OF tree dtb gone
>>> On 12/17/06, Joakim Tjernlund <joakim.tjernlund at transmode.se> wrote:
>>>> "in some setups", that's the point. Our setup works fine with
>>>> an embedded OF tree in u-boot. If I am to adapt to this new
>>>> method of supplying the OF tree, not only will I have to repartion
>>>> the flash to fit the tree in there, I also need to make sure
>>>> that some 15-20 people learns this new concept for no real gain.
>>>> It is nothing wrong with having the ability provide a OF tree
>>>> at boot time, but forcing everyone to do so is. The
>>>> most flexible way is to have both.
>>> This shouldn't be too big a deal.  Add the code back for linking the
>>> .dtb into the image.  Look in common/boot.c and add a check for if  
>>> the
>>> third bootm parameter is '-'.  If it is, then use the builtin section
>>> for the .dtb address.  Then you can either use the builtin  
>>> version, or
>>> pass a new one.  We're not talking a lot of code here.
>> I am looking at this now. I have a DTB linked into uboot at address
>> 0xffc9d90(near end of my 256MB RAM when u-boot has relocated itself).
>> Passing this address to bootm $loadaddr - 0xffc9d90 makes the
>> kernel SEGV because the kernel can't access data that high up in RAM
>> early in the boot process.
>> Seems to that the u-boot should copy the DTB to an address that
>> the kernel can access before passing control the kernel. How
>> else is one supposed to have a DTB in flash that is even higher up
>> in the address space?
>> Maybe I have misunderstood something, but I can't se what presently.
> Yes, the DTB must be placed low-enough in the boot memory to be  
> accessed.
> I'm pretty sure that the original implementation I did made this work.
> In fact I'm surprised that the flash pointing thingy even works for  
> anyone.
> Most of powerpc kernels need the initial OF tree to be under the 8MB.

Really?  The current code puts the OF tree right before the initrd, which is 
located at the top of RAM:

    Booting using flat device tree at 0xfe250000
    Loading Ramdisk to 0fda2000, end 0ff752ef ... OK
    Loading Device Tree to 0fd9e000, end 0fd9f48a ...

Address 0fd9e000 is passed to the kernel.

Now granted, I have another bug where function ft_setup() doesn't work at all, 
but I don't think that's related.

Timur Tabi
Linux Kernel Developer @ Freescale

More information about the U-Boot mailing list