When CONFIG_SPL_MULTI_DTB_FIT is enabled, multiple device trees are
packed inside the multidtb.fit FIT image. While the individual DTBs
and the FIT image start address are 8-byte aligned, the DTBs embedded
within the FIT image are not guaranteed to maintain 8-byte alignment.
This misalignment causes -FDT_ERR_ALIGNMENT failure in
setup_multi_dtb_fit() when locating the next available DTB within the
FIT blob and setting gd->fdt_blob, because of the recent libfdt
hardening since commit 0535e46d55d7 ("scripts/dtc: Update to upstream
version v1.7.2-35-g52f07dcca47c")
The mkimage tool already supports enforcing this alignment via the -B
option, but users would have to specify it explicitly. This change
makes 8-byte alignment the default when using -b.
Reported-by: Anshul Dalal <[email protected]>
Closes: https://lore.kernel.org/u-boot/[email protected]
Fixes: 0535e46d55d7 ("scripts/dtc: Update to upstream version
v1.7.2-35-g52f07dcca47c")
Signed-off-by: Beleswar Padhi <[email protected]>
---
Testing Done:
1. Boot tested on all TI K3 platforms.
v3: Changelog:
1. Default to 8-byte alignment for DTBs in mkimage instead of
passing -B 0x8 in build command [Marek]
2. Remove previous R/Bs.
Link to v2:
https://lore.kernel.org/all/[email protected]/
v2: Changelog:
1. Carry R/B, Reported-by, Closes and Fixes tag.
Link to v1:
https://lore.kernel.org/all/[email protected]/
tools/mkimage.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/tools/mkimage.c b/tools/mkimage.c
index 3c43962807d..9ccda2e18e2 100644
--- a/tools/mkimage.c
+++ b/tools/mkimage.c
@@ -240,6 +240,8 @@ static void process_args(int argc, char **argv)
params.cmdname, optarg);
exit(EXIT_FAILURE);
}
+ /* Default to 8-byte alignment for DTBs as per spec */
+ params.bl_len = 0x8;
break;
case 'B':
params.bl_len = strtoull(optarg, &ptr, 16);
--
2.34.1