From: Mike Rapoport <rppt@xxxxxxxxxxxxx> Hi, Commit 73a6e474cb37 ("mm: memmap_init: iterate over memblock regions rather that check each PFN") exposed several issues with the memory map initialization and these patches fix those issues. Initially there were crashes during compaction that Qian Cai reported back in April [1]. It seemed back then that the probelm was fixed, but a few weeks ago Andrea Arcangeli hit the same bug [2] and after a long discussion between us [3] I think these patches are the proper fix. v2 changes: * added patch that adds all regions in memblock.reserved that do not overlap with memblock.memory to memblock.memory in the beginning of free_area_init() [1] https://lore.kernel.org/lkml/8C537EB7-85EE-4DCF-943E-3CC0ED0DF56D@xxxxxx [2] https://lore.kernel.org/lkml/20201121194506.13464-1-aarcange@xxxxxxxxxx [3] https://lore.kernel.org/mm-commits/20201206005401.qKuAVgOXr%akpm@xxxxxxxxxxxxxxxxxxxx Mike Rapoport (2): mm: memblock: enforce overlap of memory.memblock and memory.reserved mm: fix initialization of struct page for holes in memory layout include/linux/memblock.h | 1 + mm/memblock.c | 24 ++++++ mm/page_alloc.c | 159 ++++++++++++++++++--------------------- 3 files changed, 97 insertions(+), 87 deletions(-) -- 2.28.0