[PATCH 2/5] [PPC] Merge common virtex header files

Grant Likely grant.likely at secretlab.ca
Tue May 1 16:54:07 EST 2007


On 4/30/07, David H. Lynch Jr. <dhlii at dlasys.net> wrote:
> Peter Korsgaard wrote:
> > GL> Alternate suggestion: Can we change virtex support to use the
> > GL> structure defined in ppcboot.h instead?  (I've actually got that
> > GL> change in my tree and was planning on posting it for review today
> > GL> or tomorrow).  bd_t is a stinking ugly mess, but things would be
> > GL> better if we standardize all virtex platforms on the stinking ugly
> > GL> mess shared by almost all the other ppc embedded board ports.
> >
> > That's where the ugly mess pops up - RedBoot uses another
> > (incompatible) bd_t definition than U-boot, E.G:
> >
> > typedef struct bd_info {
> >       unsigned int   bi_tag;        /* Should be 0x42444944 "BDID" */
> >
> snip
> >
> >       int            bi_flashwidth; /* Width (8,16,32,64) */
> >       unsigned char *bi_cmdline;    /* Pointer to command line */
> > } bd_t;
> >
> > I should probably migrate to U-boot anyway, but still ..
> >
>
>     Can we please not standardize on some specific implimentation of
> bd_info ?
>
>     We have our own bootloader - actually a monitor. It does alot of
> things besides boot Linux.
>     and it does so in less than 16K.
>     our bd_info struct is used to pass info to OS's besides Linux.
>     It does not have all the crap the u-boot bd_info has in it that has
> no meaning for us.
>     But it does have some things that are very specific to our
> hardware/firmware.

I understand your concerns.  Here are my thoughts when I put together
this patch:

- Only the ML300 and ML403 board ports are in mainline.  There has
been no serious push to get other Virtex platforms supported from
mainline; so patches need to be applied *regardless* for any boards
other than the ml300 and ml403 ref designs.  Patching to a different
bd_t is trivial.
- Even ml300 and ml403 ports in mainline don't work for anything other
than zImage.  The custom bd_t doesn't buy us anything.
- bd_t is a truly awful solution to the problem of passing information
from bootloader to kernel.  In arch/ppc, we cannot get away from it,
so I want to minimize it's stinkyness as much as possible.  By moving
from the custom virtex bd_t to the one in ppcboot.h at least makes it
work with one of the boot loaders (u-boot).
3. Unfortunately, even in moving to arch/powerpc we're still stuck
with bd_t as long as we continue to support older boot loaders (via
the boot wrapper).  As such, I'm actively discouraging the practice of
board specific bd_t.  Between now and the move to arch/powerpc there
will be plenty of people starting new virtex board ports, and I want
to make it clear that custom bd_t's are strongly discouraged.
However, if you already have a board port w/ a different bd_t, then
it's still no problem.  It is trivial to conditionally omit
#include<ppcboot.h> in favor of a different bd_t.

>     Besides, I am not current on the powerpc tree but isn't this kind of
> thing what device trees are
>     supposed to be about and don't we have to do that anyway to migrate
> to the powerpc tree ?

Yes, the ideal is that a single kernel image will be bootable on any
Virtex FPGA design if it is passed the correct device tree by a
compliant boot loader, but we're not there yet and I don't want to
make the situation any worse between now and then.

Cheers,
g.

-- 
Grant Likely, B.Sc. P.Eng.
Secret Lab Technologies Ltd.
grant.likely at secretlab.ca
(403) 399-0195



More information about the Linuxppc-embedded mailing list