Xilinx devicetrees

Stephen Neuendorffer stephen.neuendorffer at xilinx.com
Thu Nov 29 04:28:09 EST 2007


 

> -----Original Message-----
> From: 
> linuxppc-embedded-bounces+stephen=neuendorffer.name at ozlabs.org
>  
> [mailto:linuxppc-embedded-bounces+stephen=neuendorffer.name at oz
labs.org] On Behalf Of John Williams
> Sent: Tuesday, November 27, 2007 4:53 PM
> To: Stephen Neuendorffer
> Cc: Michal Simek; linuxppc-embedded
> Subject: Re: Xilinx devicetrees
> 
> Stephen Neuendorffer wrote:
> 
> >>From: John Williams [mailto:jwilliams at itee.uq.edu.au] 
> 
> >>MicroBlaze is a highly configurable CPU in terms of its 
> >>instruction set, 
> >>features and so on.  To make use of this, it is essential that each 
> >>kernel image be compiled to match the CPU configuration.  While a 
> >>generic kernel, making use of no features (MUL, DIV, Shift, 
> >>MSR ops etc) 
> >>would run on any CPU, performance would be abysmal.
> > 
> > I think the userspace is actually much more critical than 
> the kernel for
> > most of these things (with the exception of msrset/msrclr, and the
> > barrel shifter perhaps).  Unfortunately, even if you implement an
> > alternatives-style mechanism for the kernel, you're still hosed for
> > userspace.  
> 
> I haven't benchmarks each option on the kernel - you are right that 
> shift is a big one, but mul I think is also important, given 
> that every 
> array access generates an integer multiply,

Good point.

> 
> Once I a big enough system, it's just unfeasible to
> > recompile everything anyway.  I think this is where 
> autoconfig starts to
> > break down.
> 
> I'm not sure I agree, here, given that most people building 
> MicroBlaze 
> systems are doing so with uClinux-dist (or PetaLinux), you 
> can do a full 
> rebuilt, kernel libs apps, in a couple of minutes.  Much shorter than 
> sythnesis and P&R, that's for sure (and runtime is linear in size, 
> unlike P&R :)

Let's not bash the P&R guys too much...  You try working on a problem
that is known to be insolvable, and where no matter how many people you
make happier, you'll always get bashed by the guy whose design no longer
meets timing. :)

> > It's not nice, I agree.  I think the key principle should be that I
> > should be able to get a system working as quickly as possible, and I
> > might optimize things later.  One thing that device trees 
> will allow is
> > for *all* the drivers to get compiled in to the kernel, and 
> only as a
> > late stage operation does a designer need to start throwing 
> things away.
> > Using traps I can easily start with a 'kitchen sink' 
> design, and start
> > discarding processor features, relying on the traps.  When I get low
> > enough down on the performance curve, I can uas an autoconfig-type
> > mechanism to regain a little of what I lost by optimizing 
> away the trap
> > overhead. 
> 
> OK, but now we have a kernel dependent on *3* files - a DTS, a 
> Kconfig.auto, and (indirectly) the bitstream itself.

The kernel might be generated from them, but it is not *dependent* on
them.  The same kernel can run on other hardware, with other dts's.  If
there was a traps mechanism (or alternatives), then it could also run on
other designs with different processor features.

> Another thing I suggested to Michal recently, perhaps we need 
> kernel/lib/libof to store common OF / DT handling code.  Much better 
> than duplicating it accross microblaze and PPC, and maybe 
> other arch's 
> would also see the light..  That would also add a claim for 
> the DTC to 
> go in scripts/

There's some shared code in 2.6.24-rc in drivers/of.  Now that things
are settling down in terms of bugs, I'll probably transition to pushing
a 2.6.24-rc branch soon.  However, the few brief conversations I've had
suggest that what microblaze might need or want has very little
influence until it is visible in mainline.  Once that happens, I think
it will be easy to justify putting code like libfdt and some of the
kernel of/dt code in a common place.  

So, John: would you care to make a goal (for say 2.6.25 or 26) of
working with me to get the microblaze into mainline?  I think the
community exists to keep things maintained, but I'm guessing that it
would help to have an existing LKMLer or two take a look over the code.
Given the move towards device trees, getting someone from powerpc would
seem to be natural.  Anybody interested?

Steve



More information about the Linuxppc-embedded mailing list