Skip to contentSkip to conversation

MIPS: OCTEON: compute the FDT CRC in device_tree_init()

PATCH New Orgad Shaneh 1 participant 1 message Oct 27 MIPS

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 MIPS: OCTEON: compute the FDT CRC in device_tree_init()

device_tree_init() assigns initial_boot_params directly and never calls early_init_dt_verify(), so of_fdt_crc32 stays 0 and every boot logs

OF: fdt: not creating '/sys/firmware/fdt': CRC check failed

whether the blob was passed by the bootloader, appended or built in. Call early_init_dt_verify() once the prune and the MAC address fill-in are done with the blob, so the CRC matches what of_fdt_raw_init() reads back. x86 had the same omission, fixed by commit 628df9dc5ad8 ("x86/devicetree: Initialize device tree before using it").

Fixes 08d53aa58cb1 ("of/fdt: export fdt blob as /sys/firmware/fdt")
Assisted-by LLM

---
Tested on a CN6335 board (internal device tree, Cavium U-Boot 1.1.1), in a 7.3-based tree: the warning is gone and /sys/firmware/fdt holds the 11551-byte blob. mips-next with cavium_octeon_defconfig prints the warning on the same board without this patch.

 arch/mips/cavium-octeon/setup.c | 2 ++
 1 file changed, 2 insertions(+)
arch/mips/cavium-octeon/setup.c +2 -0
index 7497be7b9431..fa8273799b94 100644
@@ -1213,6 +1213,8 @@ void __init device_tree_init(void)
 	}
 	if (fill_mac)
 		octeon_fill_mac_addresses();
+	/* After the edits above, so the CRC covers the final blob */
+	early_init_dt_verify(initial_boot_params, __pa(initial_boot_params));
 	unflatten_and_copy_device_tree();
 	init_octeon_system_type();
 }
Signature · 1 line
2.53.0