mirror of
https://github.com/dgibson/dtc.git
synced 2025-10-13 08:17:40 -04:00
If the overlay's target is only created in a previous fragment, it
doesn't exist in the unmodified base device tree. For the phandle
overwrite check this can be ignored because in this case the base tree
doesn't contain a phandle that could be overwritten.
Adapt the corresponding check to not error out if that happens but just
continue with the next fragment.
This is currently triggered by
arch/arm64/boot/dts/renesas/salvator-panel-aa104xd12.dtso in the kernel
repository which creates /panel in its first fragment and modifies it in
its second.
Reported-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/all/CAL_JsqL9MPycDjqQfPNAuGfC6EMrdzUivr+fuOS7YgU3biGd4A@mail.gmail.com/
Fixes: 1fad065080
("libfdt: overlay: ensure that existing phandles are not overwritten")
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
Message-ID: <20240626075551.2493048-2-u.kleine-koenig@baylibre.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
90 lines
1.2 KiB
Text
90 lines
1.2 KiB
Text
/*
|
|
* Copyright (c) 2016 NextThing Co
|
|
* Copyright (c) 2016 Free Electrons
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0+
|
|
*/
|
|
|
|
/dts-v1/;
|
|
|
|
/ {
|
|
fragment@0 {
|
|
target-path = "/test-node";
|
|
|
|
__overlay__ {
|
|
test-int-property = <43>;
|
|
};
|
|
};
|
|
|
|
/* Test that we can replace a string by a longer one */
|
|
fragment@1 {
|
|
target-path = "/test-node";
|
|
|
|
__overlay__ {
|
|
test-str-property = "foobar";
|
|
};
|
|
};
|
|
|
|
/* Test that we add a new property */
|
|
fragment@2 {
|
|
target-path = "/test-node";
|
|
|
|
__overlay__ {
|
|
test-str-property-2 = "foobar2";
|
|
};
|
|
};
|
|
|
|
fragment@3 {
|
|
target-path = "/test-node";
|
|
|
|
__overlay__ {
|
|
new-node {
|
|
new-property;
|
|
};
|
|
};
|
|
};
|
|
|
|
fragment@4 {
|
|
target-path = "/";
|
|
|
|
__overlay__ {
|
|
local: new-local-node {
|
|
new-property;
|
|
};
|
|
};
|
|
};
|
|
|
|
fragment@5 {
|
|
target-path = "/";
|
|
|
|
__overlay__ {
|
|
test-several-phandle = <&local>, <&local>;
|
|
};
|
|
};
|
|
|
|
fragment@6 {
|
|
target-path = "/test-node";
|
|
|
|
__overlay__ {
|
|
sub-test-node {
|
|
new-sub-test-property;
|
|
};
|
|
};
|
|
};
|
|
|
|
fragment@7 {
|
|
target-path = "/new-local-node";
|
|
|
|
__overlay__ {
|
|
another-new-property;
|
|
};
|
|
};
|
|
|
|
__local_fixups__ {
|
|
fragment@5 {
|
|
__overlay__ {
|
|
test-several-phandle = <0 4>;
|
|
};
|
|
};
|
|
};
|
|
};
|