Re: Could the DTS experts look at this?
From: David Gibson <hidden>
Date: 2008-02-12 23:26:39
[snip] On Tue, Feb 12, 2008 at 01:08:24PM -0600, Timur Tabi wrote:
Grant Likely wrote:quoted
On Feb 12, 2008 8:44 AM, Timur Tabi [off-list ref] wrote:quoted
Arnd Bergmann wrote:> I think itquoted
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.
I can pretty much guarantee you that someone will find that insufficient and want to expand the conditional representation. This way madness lies.
quoted
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.
No. As Grant says, that's not what the version number is for. It represents the version of the encoding, not the content. If you must version the content (which you should try really hard to avoid) the correct way is to add versioning properties to the root node.
quoted
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 bootloaderquoted
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.
No. a) the version identifier is not a mechanism for doing that and b) the conditional mechanism is inherently agent-specific, therefore in any case you *must* match an input incomplete tree (by which I mean *anything* that requires processing before it's ready for consumption by the kernel) to the specific bootloader or agent that will process it and pass to the kernel. -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson