Hi,

In the downstream Raspberry Pi kernel we are using configfs to apply overlays at
runtime, using a patchset from Pantelis that hasn't been accepted upstream yet.
Apart from the occasional need to adapt to upstream changes, this has been 
working
well for us.

A Raspberry Pi user recently noticed that this mechanism was failing for an 
overlay in
4.19. Although the overlay appeared to be applied successfully, pinctrl was 
reporting
that one of the two fragments contained an invalid phandle, and an examination 
of the
live DT agreed - the target of the reference, which was in the other fragment, 
was
missing the phandle property.

5.0 added two patches - [1] to stop blindly copying properties from the overlay 
fragments
into the live tree, and [2] to explicitly copy across the name and phandle 
properties.
These two commits should be treated as a pair; the former requires the 
properties that
are legitimately defined by an overlay to be added via a changeset, but this 
mechanism
deliberately skips the name and phandle; the latter addresses this shortcoming. 
However,
[1] was back-ported to 4.19 and 4.20 but [2] wasn't, hence the problem.

The effect can be seen in the "overlay" overlay in the unittest data. Although 
the
overlay appears to apply correctly, the hvac-large-1 node is lacking the 
phandle it
should have as a result of the hvac_2 label, and that leaves the hvac-provider 
property
of ride@200 with an unresolved phandle.

The obvious fix is to also back-port [2] to 4.19, but that leaves open the 
question of
whether either the overlay application mechanism or the unit test framework 
should have
detected the missing phandle.

Phil

[1] 8814dc46bd9e ("of: overlay: do not duplicate properties from overlay for 
new nodes")
[2] f96278810150 ("of: overlay: set node fields from properties when add new 
overlay node")

Reply via email to