Before commit 623f6c5b6ab7 ("boot: image-fdt: free old dtb
reservations"), boot_fdt_handle_region() filtered out -EEXIST and
-EINVAL when reserving an FDT memory region, treating both as benign.
That commit added the free/reserve toggle but dropped the filter, so
these now print as errors.

-EINVAL in particular is expected: when a reserved-memory region falls
outside the available memory LMB knows about, _lmb_alloc_addr() returns
-EINVAL. This happens when a carve-out described in the kernel DT lies
in a range the platform does not report as usable RAM, so its
reservation fails with -EINVAL and prints:

  ERROR: reserving fdt memory region failed (addr=91a80000 size=80000 flags=2): 
-22

on an otherwise clean boot. The region is still described in the
kernel DT and Linux reserves it itself, so U-Boot failing to track it
in LMB is harmless.

Restore the old filter, scoped to the reserve path: print the error
only when freeing, or when a reservation fails with something other
than -EEXIST or -EINVAL. The "free ||" guard keeps free-path failures
always visible.

Fixes: 623f6c5b6ab7 ("boot: image-fdt: free old dtb reservations")
Signed-off-by: Balaji Selvanathan <[email protected]>
---
 boot/image-fdt.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/boot/image-fdt.c b/boot/image-fdt.c
index 9e0e0f93edd..d4a588ec164 100644
--- a/boot/image-fdt.c
+++ b/boot/image-fdt.c
@@ -95,7 +95,7 @@ static void boot_fdt_handle_region(u64 addr, u64 size, u32 
flags, bool free)
                debug("   %s fdt memory region: addr=%llx size=%llx flags=%x\n",
                      free ? "freed" : "reserved", (unsigned long long)addr,
                      (unsigned long long)size, flags);
-       } else {
+       } else if (free || (ret != -EEXIST && ret != -EINVAL)) {
                printf("ERROR: %s fdt memory region failed (addr=%llx size=%llx 
flags=%x): %ld\n",
                       free ? "freeing" : "reserving", (unsigned long long)addr,
                       (unsigned long long)size, flags, ret);

---
base-commit: 28515d7ff5285e0b942f15577e3198f15c667a25
change-id: 20260810-suppress-fdt-res-error-7f7e67d2a91c

Best regards,
-- 
Balaji Selvanathan <[email protected]>

Reply via email to