devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Stephen Warren <swarren@wwwdotorg.org>
To: Pantelis Antoniou <panto@antoniou-consulting.com>
Cc: David Gibson <david@gibson.dropbear.id.au>,
	Kevin Hilman <khilman@ti.com>, Matt Porter <mporter@ti.com>,
	Koen Kooi <koen@dominion.thruhere.net>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	Felipe Balbi <balbi@ti.com>, Deepak Saxena <dsaxena@linaro.org>,
	Scott Wood <scottwood@freescale.com>,
	Russ Dill <Russ.Dill@ti.com>,
	linux-omap@vger.kernel.org, devicetree-discuss@lists.ozlabs.org
Subject: Re: [RFC] Device Tree Overlays Proposal (Was Re: capebus moving omap_devices to mach-omap2)
Date: Tue, 13 Nov 2012 10:10:13 -0700	[thread overview]
Message-ID: <50A27EF5.7080806@wwwdotorg.org> (raw)
In-Reply-To: <BD20AE03-C138-4BC6-AE02-F162AF6840B2@antoniou-consulting.com>

On 11/13/2012 01:09 AM, Pantelis Antoniou wrote:
> On Nov 13, 2012, at 9:25 AM, David Gibson wrote:
...
>> 1) We annotate the base tree with some extra label information for
>> nodes which overlays are likely to want to reference by phandle.  e.g.
>>
>> 	beaglebone_pic: interrupt-controller@XXXXX {
>> 		...
>> 		phandle,symbolic-name = "beaglebone_pic";
>> 	};
>>
>> We could extend dtc to (optionally?) auto-generate those properties
>> from its existing label syntax.  Not sure if that's a good idea or
>> not yet.  In any case, we compile this augmented base tree to .dtb as
>> normal and boot our kernel with it.
> 
> I'm fine with that. You can auto-generate when there's a label to a node.
> The cape dt fragment will use the label name to reference a node.
> More details below...
> 
>> 2) The information for the capes/modules/whatever is
>> distributed/packaged as .dts, never .dtb.  When userspace detects the
>> new module (or the user explicitly tells it, if it's not probeable) it
>> picks up the correct dts and runs it through dtc in a special mode.
>> In this mode dtc takes the existing base tree (from /proc/device-tree,
>> say) as well as the new dts.  In this mode, dtc allocates phandles for
>> the new tree fragment so as not to collide with anything from the
>> supplied base tree (as well as avoiding internal conflicts,
>> obviously).  It also allows node references to the base tree by using
>> those label annotations from (1) to match symbolic names to the
>> phandle values in the base tree.
> 
> Not good to rely on userspace kicking off dtc and compiling from source.
> Some capes/expansion boards might have your root fs device, for example
> there is an eMMC cape coming up, while networking capes are common too.
> 
> However I have a compromise. 
> 
> I agree that compiling from source can be an option for a runtime definable 
> cape, but for built-in capes we could do a bit better.
> 
> In particular, I don't see any particular need to have a DT fragment
> reference anything that dependent of the runtime device tree. It should
> be possible to compile the DT fragment in kernel, against the generated
> flattened device tree, producing a flattened DT fragment with the phandles
> already resolved.
> 
> So the sequence could be something like this:
> 
> $ dtc -O dtb -o am335x-bone.dtb -b 0 am335x-bone.dts -@ ${LAST_PHANDLE_FILE}
> $ dtc -O dtbf -R am335x-bone.dtb -o weather-cape.dtb -b 0 weather-cape.dts -@ ${LAST_PHANDLE_FILE}
> $ dtc -O dtbf -R am335x-bone.dtb -o geiger-cape.dtb -b 0 geiger-cape.dts -@ ${LAST_PHANDLE_FILE}
> 
> The ${LAST_PHANDLE_FILE} can be updated with the last phandle value generated.

I'm not sure that will avoid phandle collisions though.

If you build everything at runtime, you'll always be compiling each new
partial .dtb based on the phandles actually in-use in the kernel's
current complete device tree. You can always easily avoid collisions
that way.

If you instead pre-compile both the based .dtb /and/ some partial .dtbs,
then you're essentially statically defining some phandle values, but
splitting those static assignments across 3 (in your example) different
.dtbs. However, what guarantees that those 3 .dtbs are already loaded
into the system when some fourth partial .dtb is loaded, such that the
static phandle assignments influence that fourth partial .dtb's runtime
compilation?

Put another way, what happens when you:

1) Boot the kernel using am335x-bone.dtb.
2) Incrementally load weather-cape.dtb. Don't incrementally load
geiger-cape.dtb for whatever reason.
3) Load runtime-compiled-cape.dtb. This avoids conflicts with the
already-loaded am335x-bone.dtb and weather-cape.dtb since
runtime-compiled-cape.dtb is compiled at runtime based on the currently
loaded .dtbs. However, it may well end up conflicting with
geiger-cape.dtb since that isn't loaded.
4) Now attempt to load geiger-cape.dtb - possible conflict.

Given all of that, I'd assert that if you want to statically assign any
phandles, all static assignments need to be done in the base .dtb that
the kernel is loaded with, and not in any pre-compiled partial .dtbs.

So, if your root filesystem is on an eMMC cape, then you need to create
a board .dts file that /include/s the base board .dts and the cape .dts
files and boot the kernel with that.

Or, you get U-Boot/... to merge the relevant pre-compiled .dtbs and boot
the kernel with that.

Or I suppose you could have a well-known range of phandles for
pre-compiled .dtbs that the runtime dtc mode always avoided, preferably
without the need for explicit phandle-range statements in the .dts
files, e.g. driven by a dtc static-assignment-vs-dynamic-assignment
command-line option?

  parent reply	other threads:[~2012-11-13 17:10 UTC|newest]

Thread overview: 99+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-05 20:40 [RFC] Device Tree Overlays Proposal (Was Re: capebus moving omap_devices to mach-omap2) Grant Likely
     [not found] ` <CACxGe6vu8ek7-K-yDDMXyg9x-oKiFt_cSz+Pz-yZf5U5vwe=0g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-11-05 21:40   ` Tabi Timur-B04825
2012-11-05 23:22     ` Tony Lindgren
     [not found]       ` <20121105232218.GA8284-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
2012-11-09 12:06         ` Grant Likely
2012-11-06  0:07     ` Grant Likely
2012-11-06 10:31     ` Pantelis Antoniou
2012-11-07 22:35     ` Ryan Mallon
2012-11-08 13:28       ` Koen Kooi
2012-11-08 14:09         ` Timur Tabi
2012-11-08 17:00         ` Mitch Bradley
2012-11-06 22:37   ` Stephen Warren
     [not found]     ` <50999145.2070306-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-11-07  0:54       ` Mitch Bradley
2012-11-09 17:02         ` Grant Likely
2012-11-12 11:29           ` Pantelis Antoniou
2012-11-07  8:47     ` Pantelis Antoniou
2012-11-07 17:18       ` Stephen Warren
     [not found]         ` <509A97D0.5010006-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-11-07 22:08           ` Pantelis Antoniou
2012-11-09 16:28     ` Grant Likely
2012-11-09 23:23       ` Stephen Warren
2012-11-09 23:40         ` Grant Likely
2012-11-12 10:53           ` Koen Kooi
     [not found]         ` <509D9089.7020407-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-11-12 12:10           ` Pantelis Antoniou
2012-11-12 16:52             ` Stephen Warren
2012-11-13  7:25               ` David Gibson
     [not found]                 ` <20121113072517.GE25915-W9XWwYn+TF0XU02nzanrWNbf9cGiqdzd@public.gmane.org>
2012-11-13  8:09                   ` Pantelis Antoniou
2012-11-13 12:24                     ` Grant Likely
     [not found]                       ` <CACxGe6vQxmAk_joUYbaXw4r8J3_RbQt22zFg84ANvcw+ycCMHg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-11-13 13:38                         ` Pantelis Antoniou
2012-11-15  4:57                           ` David Gibson
2012-11-13 17:10                     ` Stephen Warren [this message]
     [not found]                     ` <BD20AE03-C138-4BC6-AE02-F162AF6840B2-wVdstyuyKrO8r51toPun2/C9HSW9iNxf@public.gmane.org>
2012-11-13 23:30                       ` David Gibson
2012-11-14  0:00                         ` Pantelis Antoniou
2012-11-13 16:57                 ` Stephen Warren
     [not found]                   ` <50A27BF1.4030502-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-11-13 18:10                     ` Mitch Bradley
     [not found]                       ` <50A28D03.7050002-D5eQfiDGL7eakBO8gow8eQ@public.gmane.org>
2012-11-13 18:29                         ` Stephen Warren
2012-11-13 19:09                           ` Mitch Bradley
2012-11-13 19:11                             ` Pantelis Antoniou
2012-11-17 22:27         ` Jean-Christophe PLAGNIOL-VILLARD
2012-11-20 17:09           ` Grant Likely
2012-11-11 20:47       ` Rob Landley
2012-11-12 12:50         ` Pantelis Antoniou
     [not found]           ` <ABAD0875-A618-405D-954F-CD76F09DDF04-wVdstyuyKrO8r51toPun2/C9HSW9iNxf@public.gmane.org>
2012-11-12 16:54             ` Stephen Warren
2012-11-12 11:23       ` Pantelis Antoniou
2012-11-12 16:49         ` Stephen Warren
2012-11-12 17:00           ` Pantelis Antoniou
2012-11-12 17:10             ` Stephen Warren
2012-11-12 17:19               ` Pantelis Antoniou
2012-11-12 17:29                 ` Stephen Warren
2012-11-12 17:38                   ` Pantelis Antoniou
2012-11-12 20:16         ` Russ Dill
2012-11-12 16:45       ` Stephen Warren
2012-11-12 11:03   ` Koen Kooi
2012-11-06 10:30 ` Pantelis Antoniou
2012-11-06 11:14   ` Grant Likely
2012-11-06 18:35     ` Tony Lindgren
2012-11-06 19:29       ` Russ Dill
     [not found]         ` <CA+Bv8XZOt7h3dtDsk1SaR71J3tYFOTsPJSjZLSP3RVuLdYdFDg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-11-06 19:41           ` Pantelis Antoniou
2012-11-06 22:17             ` Stephen Warren
2012-11-06 19:34     ` Pantelis Antoniou
2012-11-06 20:45       ` Grant Likely
2012-11-06 20:50         ` Grant Likely
2012-11-07  8:06         ` Pantelis Antoniou
2012-11-07 15:33           ` Alan Tull
2012-11-09 17:03           ` Grant Likely
2012-11-07  8:13         ` Pantelis Antoniou
     [not found]           ` <5ED17D42-07B8-4D4F-B54F-82B4CC60584C-wVdstyuyKrO8r51toPun2/C9HSW9iNxf@public.gmane.org>
2012-11-07 10:19             ` Benoit Cousson
2012-11-07 11:02               ` Pantelis Antoniou
     [not found]                 ` <A6697FB9-3614-4027-A71B-59C7556005BF-wVdstyuyKrO8r51toPun2/C9HSW9iNxf@public.gmane.org>
2012-11-07 11:12                   ` Benoit Cousson
2012-11-07 11:23                     ` Pantelis Antoniou
2012-11-09 20:33                 ` Grant Likely
2012-11-12 11:34                   ` Pantelis Antoniou
2012-11-12 13:01                     ` Grant Likely
2012-11-07 17:25               ` Stephen Warren
     [not found]                 ` <509A9984.3000709-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-11-07 22:10                   ` Pantelis Antoniou
2012-11-08 10:36                 ` Cousson, Benoit
2012-11-09  5:32   ` Joel A Fernandes
2012-11-09 14:29     ` David Gibson
2012-11-10  3:15       ` Joel A Fernandes
2012-11-09 21:22     ` Grant Likely
     [not found]       ` <CACxGe6vL9gbAKyDWcZWWAQ4WO=nTgdAioXS-h2e1jtJK9pmZUg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-11-12 11:47         ` Pantelis Antoniou
2012-11-13  3:59       ` Joel A Fernandes
2012-11-09 22:59     ` Stephen Warren
     [not found]   ` <-4237940489086529028@unknownmsgid>
     [not found]     ` <559B8433-67C3-4A1A-A5D6-859907655176@antoniou-consulting.com>
     [not found]       ` <559B8433-67C3-4A1A-A5D6-859907655176-wVdstyuyKrO8r51toPun2/C9HSW9iNxf@public.gmane.org>
2012-11-10  3:36         ` Joel A Fernandes
2012-11-12 12:48           ` Pantelis Antoniou
2012-11-13  2:28           ` David Gibson
2012-11-09  2:26 ` David Gibson
2012-11-09 15:40   ` Pantelis Antoniou
     [not found]     ` <A97699E9-6C57-4A56-BC45-86A57CF2496F-wVdstyuyKrO8r51toPun2/C9HSW9iNxf@public.gmane.org>
2012-11-13  0:03       ` David Gibson
2012-11-09 21:08   ` Grant Likely
     [not found]     ` <CACxGe6v7q2=Dxn6BE_V-w9CEKxAsZ6zQd5Uqm4TeYGYCCu76cg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-11-13  0:05       ` David Gibson
2012-11-09 21:42   ` Grant Likely
     [not found]     ` <CACxGe6vQ50aS0Fe7QvTHKfV=EDpsZoLC7SOxXLGc0pkMvyk5DQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-11-13  1:05       ` David Gibson
2012-11-13  5:22         ` Stephen Warren
     [not found]           ` <50A1D8FF.7060104-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-11-13  6:54             ` David Gibson
2012-11-09 22:57   ` Stephen Warren
2012-11-09 23:27     ` Grant Likely
2012-11-12 12:05     ` Pantelis Antoniou
     [not found]   ` <20121109022624.GI23553-W9XWwYn+TF0XU02nzanrWNbf9cGiqdzd@public.gmane.org>
2012-11-09 23:14     ` Stephen Warren
2012-11-09 23:06 ` Stephen Warren
2012-11-09 23:32   ` Grant Likely

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=50A27EF5.7080806@wwwdotorg.org \
    --to=swarren@wwwdotorg.org \
    --cc=Russ.Dill@ti.com \
    --cc=balbi@ti.com \
    --cc=david@gibson.dropbear.id.au \
    --cc=devicetree-discuss@lists.ozlabs.org \
    --cc=dsaxena@linaro.org \
    --cc=khilman@ti.com \
    --cc=koen@dominion.thruhere.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=mporter@ti.com \
    --cc=panto@antoniou-consulting.com \
    --cc=scottwood@freescale.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).