[Power.org:parch] devicetree: Musings on reserved regions

David VomLehn dvomlehn at cisco.com
Tue Feb 8 12:13:36 EST 2011


On Mon, Feb 07, 2011 at 04:01:28PM -0600, Jimi Xenidis wrote:
> On Feb 7, 2011, at 3:56 PM, Grant Likely wrote:
> > 
> > On Mon, Feb 7, 2011 at 2:53 PM, Yoder Stuart-B08248
> > <B08248 at freescale.com> wrote:
> >> 
> >> 
> >>> -----Original Message-----
> >>> From: glikely at secretlab.ca [mailto:glikely at secretlab.ca] On Behalf Of Grant
> >>> Likely
> >>> Sent: Monday, February 07, 2011 3:45 PM
> >>> To: Benjamin Herrenschmidt
> >>> Cc: parch at power.org; devicetree-discuss; David Gibson; Yoder Stuart-B08248;
> >>> McClintock Matthew-B29882; Wood Scott-B07421
> >>> Subject: Re: [Power.org:parch] devicetree: Musings on reserved regions
> >>> 
> >>> On Mon, Feb 7, 2011 at 2:39 PM, Benjamin Herrenschmidt
> >>> <benh at kernel.crashing.org> wrote:
> >>>> 
> >>>>> In addition to the reserved regions block in the header, define a set
> >>>>> of properties in the memory node that specify the reserved regions
> >>>>> with the name reflecting the usage.
> >>>>> For example:
> >>>>> 
> >>>>>       memory at 0 {
> >>>>>               device_type = "memory";
> >>>>>               reg = <0 0x40000000>;
> >>>>>               reserved-ramdisk = <0xc00000 0x200000>; /* 2MB ramdisk
> >>>>> */
> >>>>>               reserved-dtb = <0xbf0000 0x1000>; /* devicetree */
> >>>>>               reserved-fb0 = 0x1000000 0x400000>; /* framebuffer */
> >>>>>       };

This is covering pretty much the same territory that I went through, mostly
on this mailing list, a few months ago. The "reserved-" prefix is a Bad Thing
because there is no way to search for a property with a given prefix, nor
do I think there should be such a thing because it defeats the whole purpose
of having properties common to all devices of a given type.

Also, most reserved things (and I'm dealing with quite a few of them) are
associated with a particular device. One common exception is the device
tree itself.  Another is the bootloader, if it sticks around for a while
like a BIOS.

Given that you've got memory reserved for a device, it should really have
a name. If your framebuffer can move, you better be able to find it! So, I
came up with (in crude BNF):

cisco,static-bufs = "\"" <name> "\"" "," "<" <start> <size> ">"
	( [ , ] "\"" <name> "\"" "," "<" <start> <size> ">" )* ;

For example:

cisco,static-bufs = "buf1", <0x12345678 111>,
	"buf2", <0x87654321 222>;

This property can appear under any device. As currently implemented, all
buffer names must be unique device tree-wide, but that allows scoping per
device later, if desired.

This does end up with the start and size values generally being unaligned,
but as I understand it, if you mix items like this, it's just the way it
works. The code to parse this is really simple and doesn't involve adding
an API to look for properties starting with some string.

As far as the device tree and bootloader memory are concerned, well, we could
make them pseudo-devices.

(I'm *not* proposing cisco,static-bufs be the name of this property,
just tossing out another direction).
-- 
David VL


More information about the devicetree-discuss mailing list