In commit 8a5a75e5e9e5 ("of/fdt: Make sure no-map does not remove already reserved regions") we returned -EBUSY when trying to mark regions as no-map when they're in the reserved memory node. This if condition will still trigger though if the DT has a /memreserve/ that completely subsumes the no-map memory carveouts in the reserved memory node. Let's only consider this to be a problem if we're trying to mark a region as no-map and it is actually memory. If it isn't memory, presumably it was removed from the memory map via /memreserve/ and thus can't be mapped anyway. This silences a warning seen at boot for me on sc7180-trogdor.dtsi boards that have /memreserve/ coming from the bootloader and those reserved regions overlap with the carveouts that we want to use in DT for other purposes like communicating with remote processors. Cc: Douglas Anderson <dianders@xxxxxxxxxxxx> Cc: Nicolas Boichat <drinkcat@xxxxxxxxxxxx> Cc: Quentin Perret <qperret@xxxxxxxxxx> Fixes: 8a5a75e5e9e5 ("of/fdt: Make sure no-map does not remove already reserved regions") Signed-off-by: Stephen Boyd <swboyd@xxxxxxxxxxxx> --- drivers/of/fdt.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c index ba17a80b8c79..be13b4b6c2d8 100644 --- a/drivers/of/fdt.c +++ b/drivers/of/fdt.c @@ -1161,7 +1161,8 @@ int __init __weak early_init_dt_reserve_memory_arch(phys_addr_t base, * If the memory is already reserved (by another region), we * should not allow it to be marked nomap. */ - if (memblock_is_region_reserved(base, size)) + if (memblock_is_region_memory(base, size) && + memblock_is_region_reserved(base, size)) return -EBUSY; return memblock_mark_nomap(base, size); base-commit: 6efb943b8616ec53a5e444193dccf1af9ad627b5 -- https://chromeos.dev