Thread (1 message) 1 message, 1 author, 2011-02-08

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

From: David VomLehn <hidden>
Date: 2011-02-08 01:13:36

On Mon, Feb 07, 2011 at 04:01:28PM -0600, Jimi Xenidis wrote:
On Feb 7, 2011, at 3:56 PM, Grant Likely wrote:
quoted
On Mon, Feb 7, 2011 at 2:53 PM, Yoder Stuart-B08248
[off-list ref] wrote:
quoted
quoted
-----Original Message-----
From: glikely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org [mailto:glikely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org] On Behalf Of Grant
Likely
Sent: Monday, February 07, 2011 3:45 PM
To: Benjamin Herrenschmidt
Cc: parch-QRwYI7m9GJLYtjvyW6yDsg@public.gmane.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
[off-list ref] wrote:
quoted
quoted
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@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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help