[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <axorlloo25pdox6kjl23l4kzosofxhqkygxbtcbtx3sbgj54m7@hn3jyf4oaeno>
Date: Thu, 27 Feb 2025 16:57:46 +0200
From: Dmitry Baryshkov <dmitry.baryshkov@...aro.org>
To: Nikita Travkin <nikita@...n.ru>
Cc: Bjorn Andersson <andersson@...nel.org>,
Konrad Dybcio <konradybcio@...nel.org>, Rob Herring <robh@...nel.org>,
Krzysztof Kozlowski <krzk+dt@...nel.org>, Conor Dooley <conor+dt@...nel.org>,
Bryan O'Donoghue <bryan.odonoghue@...aro.org>, Konrad Dybcio <konrad.dybcio@....qualcomm.com>,
linux-arm-msm@...r.kernel.org, devicetree@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 0/2] {vision/navigation}-mezzanine: Fix overlay root node
On Thu, Feb 27, 2025 at 02:01:41PM +0500, Nikita Travkin wrote:
> Dmitry Baryshkov писал(а) 27.02.2025 09:16:
> > On Wed, Feb 26, 2025 at 07:29:54PM +0500, Nikita Travkin wrote:
> >> While considering to propose WoA EL2 dt overlays upstream I was looking
> >> at existing overlays and noticed that some of them are broken: they put
> >> seemingly meaningful fixups into the overlay's "/" node, which places
> >> them into the overlay "metadata" itself, not into a fixup fragment to be
> >> applied to the actual dtb. This series fixes those two by changing to
> >> full path "&{/}" which should work as it was initially intended.
> >>
> >> See demonstration of the problem below:
> >>
> [...]
> >> $ dtc extra.dtbo
> >> /dts-v1/;
> >>
> >> / {
> >> foo;
> >>
> >> bar {
> >> baz;
> >> };
> >
> > Is this behaviour documented somewhere? I'd say, it would be a surprise
> > to me.
> >
>
> According to dtc docs [1],
>
> 3.b) The Device Tree fragments must be compiled with the same option but they
> must also have a tag (/plugin/) that allows undefined references to nodes
> that are not present at compilation time to be recorded so that the runtime
> loader can fix them.
>
> so per my understanding "plugin" directive only changes the meaning of
> references (i.e. stuff with "&"), to generate fragments/fixups, which
> are the only way libfdt combines overlays into the base dtb.
>
> I suppose the old way of "manually" writing fragments (and thus writing
> to / as raw nodes) was kept because phandle/path based updates were
> added later to dtc and many overlays were still defining raw fragments...
>
> "/" also allows one to write "raw" nodes into the overlay, which is
> sometimes used by downstreams. (i.e. they put custom extensions to the
> overlay format [2] or add metadata into / of the dtbo like "compatible"
> values to reject incompatible overlays from applying. [3]) This is
> actually why I started looking here in the first place as for woa el2
> overlays I was asked to add compatible metadata as, apparently, NixOS
> tooling requires it to validate the overlays [4].
I see. Thanks a lot for the explanation and for the pointers!
>
> [1] https://web.git.kernel.org/pub/scm/utils/dtc/dtc.git/tree/Documentation/dt-object-internal.txt#n120
> [2] https://github.com/raspberrypi/linux/blob/rpi-6.6.y/arch/arm/boot/dts/overlays/adafruit-st7735r-overlay.dts#L73
> [3] https://github.com/radxa-pkg/radxa-overlays/blob/main/arch/arm64/boot/dts/rockchip/overlays/rk3588-i2c0-m1.dts#L5
> [4] https://github.com/TravMurav/slbounce/blob/main/dtbo/x1e-el2.dtso#L12
>
> >>
> >> fragment@0 {
> >> target-path = "/";
> >>
> >> __overlay__ {
> >> whatever-comes-next-after-baz;
> >> };
> >> };
> >> };
> >>
> >> $ dtc combine.dtb
> >> /dts-v1/;
> >>
> >> / {
> >> whatever-comes-next-after-baz;
> >> compatible = "fake,board";
> >> fake,value = <0x2a>;
> >> };
> >>
> >> In the resulting dtb foo bar and baz are missing.
> >>
> >> Signed-off-by: Nikita Travkin <nikita@...n.ru>
> >> ---
> >> Nikita Travkin (2):
> >> arm64: dts: qcom: qrb5165-rb5-vision-mezzanine: Fix broken overlay root
> >> arm64: dts: qcom: sdm845-db845c-navigation-mezzanine: Fix the overlay root
> >>
> >> arch/arm64/boot/dts/qcom/qrb5165-rb5-vision-mezzanine.dtso | 2 +-
> >> arch/arm64/boot/dts/qcom/sdm845-db845c-navigation-mezzanine.dtso | 2 +-
> >> 2 files changed, 2 insertions(+), 2 deletions(-)
> >> ---
> >> base-commit: 8433c776e1eb1371f5cd40b5fd3a61f9c7b7f3ad
> >> change-id: 20250226-qcom-nonroot-overlays-bfe21d33be8c
> >>
> >> Best regards,
> >> --
> >> Nikita Travkin <nikita@...n.ru>
> >>
--
With best wishes
Dmitry
Powered by blists - more mailing lists