From 94a09715bf4c8dfdefbefcd341d0c9da04c5a6c1 Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Tue, 11 Aug 2026 23:16:49 +0000 Subject: boot: image-fdt: Restore suppression of irrelevant ERROR message The commit 623f6c5b6ab7 ("boot: image-fdt: free old dtb reservations") removed the suppression of ERROR messages when -EINVAL was returned due to the memory region not being part of the LMB memory map. This causes an irrelevant ERROR message during boot, e.g.: Model: Radxa ROCK 3B [...] ERROR: reserving fdt memory region failed (addr=10f000 size=100 flags=2): -22 or Model: Rockchip RK3288 Asus Tinker Board S [...] ERROR: reserving fdt memory region failed (addr=fe000000 size=1000000 flags=4): -22 FDT correctly contains reserved-memory for 10f000 or fe000000 and U-Boot correctly does not make these regions available in the LMB memory map: memory[0] [0x200000-0xefffffff], 0xefe00000 bytes, flags: none memory[1] [0x100000000-0x1ffffffff], 0x100000000 bytes, flags: none or memory[0] [0x0-0x7fffffff], 0x80000000 bytes, flags: none With lmb_alloc_mem() and lmb_free() both returning -EFAULT when the requested memory region is not part of the LMB memory map it should be safe to ignore these errors when FDT memreserve and reserved-memory is being processed. Print -EFAULT errors using a debug message to restore suppression of this irrelevant ERROR message when memory region is not part of the LMB memory map. Fixes: 623f6c5b6ab7 ("boot: image-fdt: free old dtb reservations") Signed-off-by: Jonas Karlman Reviewed-by: Randolph Sapp --- boot/image-fdt.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/boot/image-fdt.c b/boot/image-fdt.c index 9e0e0f93edd..956a3d97c42 100644 --- a/boot/image-fdt.c +++ b/boot/image-fdt.c @@ -91,10 +91,10 @@ static void boot_fdt_handle_region(u64 addr, u64 size, u32 flags, bool free) ret = lmb_alloc_mem(LMB_MEM_ALLOC_ADDR, 0, &rsv_addr, size, flags); - if (!ret) { - debug(" %s fdt memory region: addr=%llx size=%llx flags=%x\n", - free ? "freed" : "reserved", (unsigned long long)addr, - (unsigned long long)size, flags); + if (!ret || ret == -EFAULT) { + debug(" %s fdt memory region%s: addr=%llx size=%llx flags=%x ret=%ld\n", + free ? "free" : "reserve", ret ? " failed" : "", + (unsigned long long)addr, (unsigned long long)size, flags, ret); } else { printf("ERROR: %s fdt memory region failed (addr=%llx size=%llx flags=%x): %ld\n", free ? "freeing" : "reserving", (unsigned long long)addr, -- cgit v1.3.1