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")