From: Timur Tabi <timur@freescale.com>
To: Grant Likely <grant.likely@secretlab.ca>
Cc: linuxppc-dev@ozlabs.org, Arnd Bergmann <arnd@arndb.de>,
David Gibson <david@gibson.dropbear.id.au>
Subject: Re: Could the DTS experts look at this?
Date: Tue, 12 Feb 2008 13:08:24 -0600 [thread overview]
Message-ID: <47B1EEA8.4040904@freescale.com> (raw)
In-Reply-To: <fa686aa40802121058u6c6e4ba9s3ced2e35950745ea@mail.gmail.com>
Grant Likely wrote:
> On Feb 12, 2008 8:44 AM, Timur Tabi <timur@freescale.com> wrote:
>> Arnd Bergmann wrote:
>>
>>> On Tuesday 12 February 2008, David Gibson wrote:
>>>> Or to expand. It's relatively easy now to just include multiple nodes
>>>> in the tree and either delete or nop some of them out conditionally
>>>> using libfdt.
>> Yes, but what better place to store the conditions than in the device tree
>> itself? How would libfdt know where the conditions are? Do you want to have
>> two binary blobs?
>
> The transient state of the dts before it is handed to the kernel
> proper is almost irrelevant. It is totally reasonable to add in
> whatever properties/nodes that are needed to *eventually* describe the
> hardware correctly. Heck, we already do this will all dts files that
> go through u-boot is a simple sense. We put placeholder properties
> for mac addresses and bus frequencies, but u-boot fills them in.
I agree with that.
> However, if a designer does write a device tree containing more nodes
> than is needed, then it is also the responsibility of that designer to
> make sure the boot loader can use that tree to generate a real
> description of hardware.
No problem here.
> This requires coordination and
> documentation, but id does not requires special formatting or
> versioning of the device tree blob.
Unless the mechanism by which the designer ensures that the boot loader presents
a proper device tree to the kernel requires special versioning.
> The dtb is a data structure, not a programming language.
But we have a problem with the current device tree definition that makes it
difficult to use in real-world situations. The current "solution" is to have
multiple DTBs, each one covering a different variant of the hardware. My
proposal is to expand the definition of the DTB to allow the boot loader to
modify it in a standard manner. I believe that such a change would be both
useful and not problematic.
> I think it
> is a slippery slope to try and encode conditionals into the structure;
Perhaps, which is why I said it should be simple conditionals - two values and a
comparison.
> but it is entirely reasonable to encode *data* into the dt that helps
> make those conditional decisions.
That's okay too, except that if we just add additional nodes that describe
conditions, then we need to make sure that whatever parses that DTB must also
parse those additional nodes. The only way to do that is create a new version
number, like 18, which is marked as being incompatible with the current version
(17). Otherwise, a person could pass that DTB to an old version of U-Boot, and
U-boot will just pass it on to the kernel as-is.
> We've already got that issue. If you pass the device tree for the
> wrong board it will still validate correctly, but the board is not
> going to boot.
There's nothing stopping U-Boot today from scanning the device tree and making
sure the SOC's compatible node is correct. That's not currently done, but it
could be.
> The device tree must match what the bootloader
> expects. Changing the version number will do nothing to help this.
> The version number ensures that the tree is parsable. It does not
> ensure that it is correct.
I think you're missing the point. If we add conditional expressions to the
device tree (whether attached to a node or as part of a separate node or
whatever), we must also add a mechanism to ensure that these conditions are
parsed by the boot loader. As far as I know, the only mechanism that can do
this is the version identifier.
--
Timur Tabi
Linux kernel developer at Freescale
next prev parent reply other threads:[~2008-02-12 19:08 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-02-08 23:30 Could the DTS experts look at this? Sean MacLennan
2008-02-10 5:47 ` Arnd Bergmann
2008-02-10 6:05 ` Sean MacLennan
2008-02-11 17:57 ` Timur Tabi
2008-02-11 23:54 ` David Gibson
2008-02-11 23:56 ` David Gibson
2008-02-12 0:21 ` Arnd Bergmann
2008-02-12 0:36 ` David Gibson
2008-02-12 18:51 ` Scott Wood
2008-02-12 23:17 ` David Gibson
2008-02-12 23:41 ` Timur Tabi
2008-02-12 23:50 ` David Gibson
2008-02-12 15:44 ` Timur Tabi
2008-02-12 18:58 ` Grant Likely
2008-02-12 19:08 ` Timur Tabi [this message]
2008-02-12 19:34 ` Grant Likely
2008-02-12 19:45 ` Timur Tabi
2008-02-12 20:43 ` Grant Likely
2008-02-12 23:35 ` David Gibson
2008-02-12 23:50 ` Timur Tabi
2008-02-13 0:10 ` Grant Likely
2008-02-12 23:26 ` David Gibson
2008-02-12 23:47 ` Timur Tabi
2008-02-13 0:08 ` David Gibson
2008-02-13 0:15 ` Grant Likely
2008-02-12 23:21 ` David Gibson
2008-02-11 0:14 ` David Gibson
2008-02-11 2:40 ` Sean MacLennan
2008-02-11 3:11 ` David Gibson
2008-02-11 3:49 ` Sean MacLennan
2008-02-11 23:59 ` David Gibson
2008-02-12 1:07 ` Sean MacLennan
2008-02-12 0:20 ` David Gibson
2008-02-12 0:41 ` Sean MacLennan
2008-02-12 0:48 ` David Gibson
2008-02-12 18:52 ` Scott Wood
2008-02-12 19:03 ` Grant Likely
2008-02-12 19:10 ` Scott Wood
2008-02-17 10:22 ` David Woodhouse
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=47B1EEA8.4040904@freescale.com \
--to=timur@freescale.com \
--cc=arnd@arndb.de \
--cc=david@gibson.dropbear.id.au \
--cc=grant.likely@secretlab.ca \
--cc=linuxppc-dev@ozlabs.org \
/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).