From: Nikita Travkin <nikita@trvn.ru>
To: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Cc: Bjorn Andersson <andersson@kernel.org>,
Konrad Dybcio <konradybcio@kernel.org>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Bryan O'Donoghue <bryan.odonoghue@linaro.org>,
Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>,
linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 0/2] {vision/navigation}-mezzanine: Fix overlay root node
Date: Thu, 27 Feb 2025 14:01:41 +0500 [thread overview]
Message-ID: <62a53d3222dfc516accd8dcd5e1adca0@trvn.ru> (raw)
In-Reply-To: <vq5dcsi55aqn56h6ihysqk4lainhmjbyvot3jiqkxm3i7igsak@da5u6ro7rkvg>
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].
[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@trvn.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@trvn.ru>
>>
next prev parent reply other threads:[~2025-02-27 9:01 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-26 14:29 [PATCH 0/2] {vision/navigation}-mezzanine: Fix overlay root node Nikita Travkin
2025-02-26 14:29 ` [PATCH 1/2] arm64: dts: qcom: qrb5165-rb5-vision-mezzanine: Fix broken overlay root Nikita Travkin
2025-02-26 19:22 ` Rob Herring
2025-02-27 9:18 ` Nikita Travkin
2025-02-26 14:29 ` [PATCH 2/2] arm64: dts: qcom: sdm845-db845c-navigation-mezzanine: Fix the " Nikita Travkin
2025-02-27 4:16 ` [PATCH 0/2] {vision/navigation}-mezzanine: Fix overlay root node Dmitry Baryshkov
2025-02-27 9:01 ` Nikita Travkin [this message]
2025-02-27 14:57 ` Dmitry Baryshkov
2025-02-27 11:12 ` Bryan O'Donoghue
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=62a53d3222dfc516accd8dcd5e1adca0@trvn.ru \
--to=nikita@trvn.ru \
--cc=andersson@kernel.org \
--cc=bryan.odonoghue@linaro.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.baryshkov@linaro.org \
--cc=konrad.dybcio@oss.qualcomm.com \
--cc=konradybcio@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=robh@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox