From: Quentin Schulz <[email protected]>

The phandle property is a unique numerical identifier for a given node
such that it can be referenced by other nodes (Device Tree Specification
2.3.3 phandle).

Considering that when we generate the base and U-Boot augmented DTSes
for diffing, we actually resolve the phandle with dtc such that the
symbol is used instead of the phandle value. This means the phandle
value is now unused and unnecessary.

The issue with the phandle property is that it is not necessarily the
same between the base and U-Boot augmented DTs. For example, any new
Device Tree node with a label inserted in the U-Boot augmented DT before
the last (after sorting!) shared (with base DT) labeled Device Tree
node, will increment the phandle identifier by one for all nodes after
itself, meaning we now have a diff churn between base and U-Boot
augmented DTs only for the phandle property. This is typically the case
for binman-supporting architectures like Rockchip where the binman node
has a label for easy overriding from SoC/board DTSes and since /binman
appears pretty early in the DT when sorted, this means many phandle
properties are different.

This gets rid of all phandle = <0x>; properties before passing it to the
diff tool such that they aren't even taken into account.

Note the double dollar sign in the regex, this is due to Make special
meaning for $ which needs to be escaped such that it's passed to the
shell as a dollar sign.

Signed-off-by: Quentin Schulz <[email protected]>
---
The BRE (Basic Regular Expression) is quite awkward, but I think we
could simply ignore most [[:space:]]* if the output of dtc is guaranteed
stable.

Something like

'^[[:space:]]*phandle = <0x[[:xdigit:]]\+>;$$'

probably would be enough I guess?
---
 scripts/Makefile.lib | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index 377a4700b94..9f60965f816 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -437,7 +437,9 @@ cmd_dtc_diff = \
        $(DTC) -s -O dts -o [email protected] -b 0 \
                -i $(dir $<) -i $(u_boot_dtsi_loc) $(DTC_FLAGS) $(dtc-tmp) || \
                (echo "Check $(shell pwd)/$(pre-tmp) for errors" && false); \
-       (diff -Naru [email protected] [email protected] > [email protected] || true)
+       grep --invert-match 
'^[[:space:]]*phandle[[:space:]]*=[[:space:]]<[[:space:]]*0x[[:xdigit:]]\+[[:space:]]*>[[:space:]]*;[[:space:]]*$$'
 [email protected] > [email protected]; \
+       grep --invert-match 
'^[[:space:]]*phandle[[:space:]]*=[[:space:]]<[[:space:]]*0x[[:xdigit:]]\+[[:space:]]*>[[:space:]]*;[[:space:]]*$$'
 [email protected] > [email protected]; \
+       (diff -Naru [email protected] [email protected] > [email protected] || 
true)
 
 dtn-tmp = $(subst $(comma),_,$(dot-target).dtn.tmp)
 else

---
base-commit: cc5550e494693ee56e36ffd119523eeed427dfc2
change-id: 20260224-device-tree-debug-no-phandle-caf33b3bffa7

Best regards,
--  
Quentin Schulz <[email protected]>

Reply via email to