From d2f0eadb199b3682f40c0b824a099308ac450832 Mon Sep 17 00:00:00 2001 From: Tom Rini Date: Wed, 19 Nov 2025 08:55:28 -0600 Subject: [PATCH 1/4] ls1012afrdm: Stop disabling device tree relocation Remove setting of fdt_high to ~0, which disables device tree relocation, from the default environment. Doing so prevents U-Boot from correcting problems such as having an unaligned device tree and leads to various failure modes in the OS. Signed-off-by: Tom Rini Signed-off-by: Peng Fan --- include/configs/ls1012afrdm.h | 1 - 1 file changed, 1 deletion(-) diff --git a/include/configs/ls1012afrdm.h b/include/configs/ls1012afrdm.h index 4243a21f1f1..8059092fac8 100644 --- a/include/configs/ls1012afrdm.h +++ b/include/configs/ls1012afrdm.h @@ -19,7 +19,6 @@ #undef CFG_EXTRA_ENV_SETTINGS #define CFG_EXTRA_ENV_SETTINGS \ "verify=no\0" \ - "fdt_high=0xffffffffffffffff\0" \ "kernel_addr=0x01000000\0" \ "scriptaddr=0x80000000\0" \ "fdtheader_addr_r=0x80100000\0" \ From a23a1e8ca53cd37216f3f5e0ea530e3645ec6f2f Mon Sep 17 00:00:00 2001 From: Tom Rini Date: Wed, 19 Nov 2025 08:55:30 -0600 Subject: [PATCH 2/4] ls1043a: Stop disabling device tree relocation Remove setting of fdt_high to ~0, which disables device tree relocation, from the default environment. Doing so prevents U-Boot from correcting problems such as having an unaligned device tree and leads to various failure modes in the OS. Signed-off-by: Tom Rini Signed-off-by: Peng Fan --- include/configs/ls1043a_common.h | 1 - 1 file changed, 1 deletion(-) diff --git a/include/configs/ls1043a_common.h b/include/configs/ls1043a_common.h index a02c752bbcf..4c695388d2f 100644 --- a/include/configs/ls1043a_common.h +++ b/include/configs/ls1043a_common.h @@ -90,7 +90,6 @@ /* Initial environment variables */ #define CFG_EXTRA_ENV_SETTINGS \ "hwconfig=fsl_ddr:bank_intlv=auto\0" \ - "fdt_high=0xffffffffffffffff\0" \ "initrd_high=0xffffffffffffffff\0" \ "kernel_addr=0x61000000\0" \ "scriptaddr=0x80000000\0" \ From e672d4a472279477d7f0c3c2c17721f12eb09158 Mon Sep 17 00:00:00 2001 From: Francois Berder Date: Sat, 22 Nov 2025 13:26:07 +0100 Subject: [PATCH 3/4] board: freescale: Fix error handling in ls1088a board setup - Add missing checks after calloc - Fix memory leak when handling calloc failure Signed-off-by: Francois Berder Signed-off-by: Peng Fan --- board/freescale/ls1088a/ls1088a.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/board/freescale/ls1088a/ls1088a.c b/board/freescale/ls1088a/ls1088a.c index 9606434e8ff..51ec055be63 100644 --- a/board/freescale/ls1088a/ls1088a.c +++ b/board/freescale/ls1088a/ls1088a.c @@ -948,7 +948,14 @@ int ft_board_setup(void *blob, struct bd_info *bd) total_memory_banks = CONFIG_NR_DRAM_BANKS + mc_memory_bank; base = calloc(total_memory_banks, sizeof(u64)); + if (!base) + return -ENOMEM; + size = calloc(total_memory_banks, sizeof(u64)); + if (!size) { + free(base); + return -ENOMEM; + } /* fixup DT for the two GPP DDR banks */ for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) { From ff7c10d89b1509d3843d2bbb37e357aa1ca55210 Mon Sep 17 00:00:00 2001 From: "Anthony Pighin (Nokia)" Date: Wed, 3 Dec 2025 16:25:39 +0000 Subject: [PATCH 4/4] armv8/fsl-layerscape: fdt: Remove offline cores from cooling device maps Some processor families use a generic device tree, and rely on u-boot fixups to massage that for lower core count personalities (i.e. NXP LX2* family). For example, the LX2160A device tree will be used and then modified to offline non-existent cores when running on an 8-core LX2080A. However, the cooling maps still contain references to the non-existent core phandles, resulting in: OF: /thermal-zones/cluster6-7-thermal/cooling-maps/map0: could not find phandle 15 Rebuild the cooling maps as non-existent cores are deleted. Signed-off-by: Anthony Pighin Signed-off-by: Peng Fan --- arch/arm/cpu/armv8/fsl-layerscape/fdt.c | 57 +++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c index e8d2339f1a3..bd33969d569 100644 --- a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c +++ b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #ifdef CONFIG_FSL_LSCH3 #include @@ -48,6 +49,61 @@ int fdt_fixup_phy_connection(void *blob, int offset, phy_interface_t phyc) } #ifdef CONFIG_MP +static void fdt_fixup_thermal_cooling_device(void *blob, int cpu_off) +{ + int cnt, idx, len; + int map, maps; + int offline, phandle; + int ret; + int zone, zones; + u32 *tbl; + struct fdtdec_phandle_args dev; + + zones = fdt_subnode_offset(blob, 0, "thermal-zones"); + if (zones < 0) + return; + + offline = fdt_get_phandle(blob, cpu_off); + fdt_for_each_subnode(zone, blob, zones) { + maps = fdt_subnode_offset(blob, zone, "cooling-maps"); + if (maps < 0) + continue; + fdt_for_each_subnode(map, blob, maps) { + if (!fdt_getprop(blob, map, "cooling-device", &len)) + continue; + cnt = fdtdec_parse_phandle_with_args(blob, map, + "cooling-device", + "#cooling-cells", + 0, -1, NULL); + if (cnt <= 0) + continue; + tbl = (u32 *)malloc(len); + if (!tbl) + return; + idx = 0; + for (int i = 0; i < cnt; i++) { + ret = fdtdec_parse_phandle_with_args(blob, map, + "cooling-device", + "#cooling-cells", + 0, i, + &dev); + if (ret < 0) + goto skip_update; + phandle = fdt_get_phandle(blob, dev.node); + if (phandle == offline) + continue; + tbl[idx++] = cpu_to_fdt32(phandle); + for (int j = 0; j < dev.args_count; j++) + tbl[idx++] = cpu_to_fdt32(dev.args[j]); + } + fdt_setprop(blob, map, "cooling-device", tbl, + (idx*sizeof(*tbl))); +skip_update: + free(tbl); + } + } +} + void ft_fixup_cpu(void *blob) { int off; @@ -73,6 +129,7 @@ void ft_fixup_cpu(void *blob) if (reg) { core_id = fdt_read_number(reg, addr_cells); if (!test_bit(id_to_core(core_id), &mask)) { + fdt_fixup_thermal_cooling_device(blob, off); fdt_del_node(blob, off); off = off_prev; }