From: Peng Fan <peng.fan@xxxxxxx> mem=[X][G|M] is broken on NXP i.MX ARM64 platform, there is cases that even type.cnt is 1, but total_size is not 0 because regions are merged into 1. So only check 'cnt' is not enough, total_size also needs to be taked into consideration, othersize bootargs 'mem=[X][G|B]' not work anymore. Fixes: e888fa7bb882 ("memblock: Check memory add/cap ordering") Cc: Mike Rapoport <rppt@xxxxxxxxxx> Cc: Geert Uytterhoeven <geert+renesas@xxxxxxxxx> Cc: David Hildenbrand <david@xxxxxxxxxx> Signed-off-by: Peng Fan <peng.fan@xxxxxxx> --- mm/memblock.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/memblock.c b/mm/memblock.c index 184dcd2e5d99..ab67b82a9cce 100644 --- a/mm/memblock.c +++ b/mm/memblock.c @@ -1687,7 +1687,7 @@ void __init memblock_cap_memory_range(phys_addr_t base, phys_addr_t size) if (!size) return; - if (memblock.memory.cnt <= 1) { + if (memblock_memory->cnt <= 1 && !memblock_memory->total_size) { pr_warn("%s: No memory registered yet\n", __func__); return; } -- 2.30.0