Hey Anshul,
Thanks for the patch
On 07/07/26 16:14, Anshul Dalal wrote:
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 <[email protected]>
---
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())
The write happens after AddMissingProperties() has run, so source.dtb
/u-boot.dtb ends up with zero-valued offset/size/image-pos placeholders
for every binman entry node - properties that only get their real values
later in SetCalculatedProperties(), which only ever writes to
u-boot.dtb.out.
For the bootph use case this is harmless since nothing reads those
layout properties from u-boot.dtb. I think a cleaner placement is right
after the scan_and_prop_bootph block, before AddMissingProperties() is
called:
if scan_and_prop_bootph(dtb.GetRoot()):
dtb.Sync(True)
+ dtb.Sync(True)
+ dtb.Pack()
+ tools.write_file(dtb_fname, dtb.GetContents())
images = _ReadImageDesc(node, use_expanded)
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')
Nit: I think subnode 2 is not being used anywhere.
Regards,
Moteen
+
+ 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 <[email protected]>