Re: RFC: Encoding property deletion in FDT

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



On 05/02/18 09:06, Phil Elwell wrote:
> Rob,
> 
> On 02/05/2018 16:49, Rob Herring wrote:
>> On Wed, May 2, 2018 at 4:19 AM, Phil Elwell <phil@xxxxxxxxxxxxxxx> wrote:
>>> David et al.,
>>>
>>> I've mentioned before the problem posed for overlays by boolean properties, i.e.
>>> that a boolean property that is "true" in a base DTB cannot be made "false" by an
>>> overlay because doing so requires that the property be deleted. A solution for this
>>> problem would be to define a new FDT tag - FDT_DEL_PROP, say - that is used to encode
>>> any /delete-property/ found in a node during overlay compilation. When the overlay is
>>> applied, the named property would be deleted if present.
>>>
>>> A heuristic would be needed to decide whether this property should be encoded or just
>>> acted on immediately - the use of the '-@' command line parameter would seem to fit the
>>> bill.
>>>
>>> Although one might consider extending this mechanism to cover node deletion, in practice
>>> I think this would be too problematic in terms of broken phandle references etc., and in
>>> most cases 'status = "disabled"' achieves the same objective, so I'm not proposing this
>>> be added.
>>>
>>> Is such a change something you would consider supporting, or do you have an alternative
>>> preferred solution?
>>
>> Can you give some examples of cases where you need this feature.
> 
> The case I've encountered is the "non-removable" flag on an SD interface, specifically
> the SD interface used for an SDIO link to a WiFi chip on the Raspberry Pi 3B, which is
> marked "non-removable" for operational reasons. Some users prefer to repurpose the SD
> interface to drive a second SD card on a different set of pins, which they could do using
> an overlay except for the "non-removable". The ugly workaround is to disable the original
> interface node and create a near-clone in the overlay without the unwanted property.
> 
>> I'm concerned about how an OS is supposed to deal with properties
>> disappearing. Do we need to start refcounting properties too? That's
>> not really a reason to not support this in dtc, but rather perhaps a
>> policy decision in the OS to not delete properties once a node is in
>> use/active. Would such a policy break your use case?
> 
> I agree that deletion of a property at run-time could prove awkward - if only booleans
> were implemented another way - but a non-run-time restriction wouldn't bother me since
> we can require users to only apply the overlay via the firmware.
> 
> Since writing the original email I've thought some more about the implementation, and
> perhaps a new tag is too disruptive a change. An alternative implementation would be to
> create a new node, in the same vein as "__symbols__", listing properties to delete in
> some suitable encoding.

The more I think about trying to encode property deletion in a separate section, apart
from the overlay fragment where the property is intended to be deleted, the more I
envision corner cases where the result of applying the overlay is ambiguous or
incorrect.  Unfortunately trying to describe any of the issues will result in me
writing a novel's worth of text, so I would rather avoid that.

> 
> Phil
> --
> To unsubscribe from this list: send the line "unsubscribe devicetree-compiler" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

--
To unsubscribe from this list: send the line "unsubscribe devicetree-compiler" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Device Tree]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux