[U-Boot-Users] [PATCH] Add Flat OF tree support.

Wolfgang Denk wd at denx.de
Sun Sep 4 15:06:55 CEST 2005

In message <200509041336.52311.pantelis.antoniou at gmail.com> you wrote:
> > Where is this done? I don't see it. And "after" does not  help  -  an
> > old  kernel  is still expecting it right at the address pointed to by
> > r3.
> A new kernel detects a OF flat tree by the magic signature, and fallbacks
> to bd_t in that case.

Yes - but what about old kernels?

> > 1) CONFIG_OF_FLAT_TREE is not defined; we pass a bd_t to the  kernel,
> >    and everything is as before. Only kernels expecting an bd_t can be
> >    booted.
> No, newer kernels detect that the OF tree is missing and use the bd_t
> as before.

OK. So an old version of  U-Boot  is  compatible  with  old  and  new
kernels. At least for some transition period. Good.

> > 2) CONFIG_OF_FLAT_TREE is defined; we pass an OF tree to the  kernel.
> >    No  backward  compatibility is provided: kernels expecting an bd_t
> >    will crash miserably. Only kernels expecting an  OF  tree  can  be
> >    booted.
> There is a reason for that. As you well know as per the ppc64 docs

No matter what the reason is...  It  is  an  indispensable  practical
requirement  that  we  will  have  to be able to install a version of
U-Boot on a certain hardware which can boot both old and new kernels.

> > Yes, but I don't see where the "transition period" is implemented.
> >
> > I would expect that (when CONFIG_OF_FLAT_TREE is enabled) there is an
> > environment variable that allows to switch  between  boot  interfaces
> > (similar  to  the  clock_in_mhz  variable),  so that one and the same
> > U-Boot image can boot both older and newer kernels?
> >
> > Am I missing something?
> OK, that's reasonable.

Can you please implement that?

> No. A pre-build blob does not contain the full environment.
> The specs are clear; at least the chosen node must reflect current
> settings.

It was one of Ben's major arguments in  this  debate  that  we  might
leave  out  of  this  OFT  building code and just load a small binary
blob; IIRC he was talking about less than 0.5 kB ...

> Combined patch follows.


> +#if defined(CONFIG_MPC5xxx)
> +	BDM(mbar_base),
> +#endif
> +#if defined(CONFIG_MPC5xxx)
> +	BDM(ipbfreq),
> +	BDM(pcifreq),
> +#endif

Did you just miss this (in which case I will  clean  it  up),  or  is
there  any  technical  reason for not combining these two groups into

Best regards,

Wolfgang Denk

Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Computers make excellent and efficient servants, but I have  no  wish
to  serve under them. Captain, a starship also runs on loyalty to one
man. And nothing can replace it or him.
	-- Spock, "The Ultimate Computer", stardate 4729.4

More information about the U-Boot mailing list