Re: [PATCH 1/4] mm/page_alloc: always initialize memory map for the holes
From: Guenter Roeck <linux@roeck-us.net>
Date: 2021-07-31 16:56:08
Also in:
lkml
Hi, On Wed, Jul 14, 2021 at 03:37:36PM +0300, Mike Rapoport wrote:
From: Mike Rapoport <redacted> Currently memory map for the holes is initialized only when SPARSEMEM memory model is used. Yet, even with FLATMEM there could be holes in the physical memory layout that have memory map entries. For instance, the memory reserved using e820 API on i386 or "reserved-memory" nodes in device tree would not appear in memblock.memory and hence the struct pages for such holes will be skipped during memory map initialization. These struct pages will be zeroed because the memory map for FLATMEM systems is allocated with memblock_alloc_node() that clears the allocated memory. While zeroed struct pages do not cause immediate problems, the correct behaviour is to initialize every page using __init_single_page(). Besides, enabling page poison for FLATMEM case will trigger PF_POISONED_CHECK() unless the memory map is properly initialized. Make sure init_unavailable_range() is called for both SPARSEMEM and FLATMEM so that struct pages representing memory holes would appear as PG_Reserved with any memory layout. Signed-off-by: Mike Rapoport <redacted>
This patch causes microblaze petalogix-ml605 qemu emulations to fail silently (no console output). Reverting it fixes the problem. Guenter --- Bisect log: # bad: [8d4b477da1a807199ca60e0829357ce7aa6758d5] Add linux-next specific files for 20210730 # good: [ff1176468d368232b684f75e82563369208bc371] Linux 5.14-rc3 git bisect start 'HEAD' 'v5.14-rc3' # good: [8f3eb1f5c702ef868d89799b03c21d122f2fe197] Merge remote-tracking branch 'bpf-next/for-next' git bisect good 8f3eb1f5c702ef868d89799b03c21d122f2fe197 # good: [32286c7080c56c835f25302c38eebccf41b7b576] Merge remote-tracking branch 'tip/auto-latest' git bisect good 32286c7080c56c835f25302c38eebccf41b7b576 # good: [70c40604c7d393f95171f49717a27bf8e05b5439] Merge remote-tracking branch 'dmaengine/next' git bisect good 70c40604c7d393f95171f49717a27bf8e05b5439 # good: [b038834891b35ec410693028a500f769db132a81] Merge remote-tracking branch 'rust/rust-next' git bisect good b038834891b35ec410693028a500f769db132a81 # bad: [d8f4e506a9ba375110945d75573b3304491e6350] memory-hotplug.rst: complete admin-guide overhaul git bisect bad d8f4e506a9ba375110945d75573b3304491e6350 # good: [bef692dcfb7cdb5c960abfc31e2386a0ff41af54] lazy tlb: shoot lazies, a non-refcounting lazy tlb option git bisect good bef692dcfb7cdb5c960abfc31e2386a0ff41af54 # bad: [5fcd957e2f0dc4cb25a6ee60ebfb1200de09c9d1] mm-migrate-demote-pages-during-reclaim-v11 git bisect bad 5fcd957e2f0dc4cb25a6ee60ebfb1200de09c9d1 # good: [8c2a82ab20eb09d217446989ae209f5ff19a64ac] mm/vmalloc: use batched page requests in bulk-allocator git bisect good 8c2a82ab20eb09d217446989ae209f5ff19a64ac # bad: [c36a5446e29f1461780b06785769b9402522f847] mm/page_alloc.c: fix 'zone_id' may be used uninitialized in this function warning git bisect bad c36a5446e29f1461780b06785769b9402522f847 # good: [05e358c552628e26be3985933bea88e7512414c0] mm/kasan: move kasan.fault to mm/kasan/report.c git bisect good 05e358c552628e26be3985933bea88e7512414c0 # bad: [b467ff7f560908e60ca181658b7ee48e5da94da1] microblaze: simplify pte_alloc_one_kernel() git bisect bad b467ff7f560908e60ca181658b7ee48e5da94da1 # bad: [d2a572bf593a57246827bd79c91fe2ee6b7af1f0] mm/page_alloc: always initialize memory map for the holes git bisect bad d2a572bf593a57246827bd79c91fe2ee6b7af1f0 # first bad commit: [d2a572bf593a57246827bd79c91fe2ee6b7af1f0] mm/page_alloc: always initialize memory map for the holes