[PATCH] tools: binman: fix changes not being written to source.dtb

Anshul Dalal anshuld at ti.com
Tue Jul 7 12:44:09 CEST 2026


In the current setup the changes done to the dtb by binman such as
bootph propagation are only made to the intermediary *.dtb.out but not
the final dtb.

This means the final dtb that's in *-binman.dtsi never gets the required
changes applied. Therefore this patch fixes the behaviour by writing to
the supplied dtb before exiting with a modified test to catch any future
regressions.

Signed-off-by: Anshul Dalal <anshuld at ti.com>
---
 tools/binman/control.py |  3 +++
 tools/binman/ftest.py   | 41 ++++++++++++++++++++++-------------------
 2 files changed, 25 insertions(+), 19 deletions(-)

diff --git a/tools/binman/control.py b/tools/binman/control.py
index 816f7c1eba26..a500e735f6ce 100644
--- a/tools/binman/control.py
+++ b/tools/binman/control.py
@@ -677,6 +677,9 @@ def PrepareImagesAndDtbs(dtb_fname, select_images, update_fdt, use_expanded, ind
         dtb_item.Sync(auto_resize=True)
         dtb_item.Pack()
         dtb_item.Flush()
+
+    # Copy the intermediary dtb ('u-boot.dtb.out') to the dtb supplied to binman
+    tools.write_file(dtb_fname, dtb.GetContents())
     return images
 
 def CheckForProblems(image):
diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py
index bf98b268ac15..d02ab3a87a5f 100644
--- a/tools/binman/ftest.py
+++ b/tools/binman/ftest.py
@@ -8532,25 +8532,28 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap
         """Test that bootph-* properties are propagated correctly to supernodes"""
         _, _, _, out_dtb_fname = self._DoReadFileDtb(
                 'fdt/bootph_prop.dts', use_real_dtb=True, update_dtb=True)
-        dtb = fdt.Fdt(out_dtb_fname)
-        dtb.Scan()
-        root = dtb.GetRoot()
-        parent_node = root.FindNode('dummy-parent')
-        subnode1 = parent_node.FindNode('subnode-1')
-        subnode2 = subnode1.FindNode('subnode-2')
-        subnode3 = subnode1.FindNode('subnode-3')
-        subnode4 = subnode3.FindNode('subnode-4')
-
-        self.assertIn('bootph-some-ram', subnode1.props,
-                      "Child node is missing 'bootph-some-ram' property")
-        self.assertIn('bootph-all', subnode1.props,
-                      "Child node is missing 'bootph-all' property")
-        self.assertIn('bootph-some-ram', parent_node.props,
-                      "Parent node is missing 'bootph-some-ram' property")
-        self.assertIn('bootph-all', parent_node.props,
-                      "Parent node is missing 'bootph-all' property")
-        self.assertEqual(len(subnode4.props), 0,
-                        "subnode shouldn't have any properties")
+        def assert_eq(fname: str):
+            dtb = fdt.Fdt(fname)
+            dtb.Scan()
+            root = dtb.GetRoot()
+            parent_node = root.FindNode('dummy-parent')
+            subnode1 = parent_node.FindNode('subnode-1')
+            subnode2 = subnode1.FindNode('subnode-2')
+            subnode3 = subnode1.FindNode('subnode-3')
+            subnode4 = subnode3.FindNode('subnode-4')
+
+            self.assertIn('bootph-some-ram', subnode1.props,
+                          "Child node is missing 'bootph-some-ram' property")
+            self.assertIn('bootph-all', subnode1.props,
+                          "Child node is missing 'bootph-all' property")
+            self.assertIn('bootph-some-ram', parent_node.props,
+                          "Parent node is missing 'bootph-some-ram' property")
+            self.assertIn('bootph-all', parent_node.props,
+                          "Parent node is missing 'bootph-all' property")
+            self.assertEqual(len(subnode4.props), 0,
+                            "subnode shouldn't have any properties")
+        assert_eq(out_dtb_fname)
+        assert_eq(tools.get_output_filename('source.dtb'))
 
 if __name__ == "__main__":
     unittest.main()

---
base-commit: a18265f1ccb7a272721ed4286ed3b5a6182ff424
change-id: 20260707-binman_bootph_fix-16a618090934

Best regards,
--  
Anshul Dalal <anshuld at ti.com>



More information about the U-Boot mailing list