• Mike Rapoport (IBM)'s avatar
    x86/mm: Drop the 4 MB restriction on minimal NUMA node memory size · a1e2b8b3
    Mike Rapoport (IBM) authored
    Qi Zheng reported crashes in a production environment and provided a
    simplified example as a reproducer:
    
     |  For example, if we use Qemu to start a two NUMA node kernel,
     |  one of the nodes has 2M memory (less than NODE_MIN_SIZE),
     |  and the other node has 2G, then we will encounter the
     |  following panic:
     |
     |    BUG: kernel NULL pointer dereference, address: 0000000000000000
     |    <...>
     |    RIP: 0010:_raw_spin_lock_irqsave+0x22/0x40
     |    <...>
     |    Call Trace:
     |      <TASK>
     |      deactivate_slab()
     |      bootstrap()
     |      kmem_cache_init()
     |      start_kernel()
     |      secondary_startup_64_no_verify()
    
    The crashes happen because of inconsistency between the nodemask that
    has nodes with less than 4MB as memoryless, and the actual memory fed
    into the core mm.
    
    The commit:
    
      9391a3f9 ("[PATCH] x86_64: Clear more state when ignoring empty node in SRAT parsing")
    
    ... that introduced minimal size of a NUMA node does not explain why
    a node size cannot be less than 4MB and what boot failures this
    restriction might fix.
    
    Fixes have been submitted to the core MM code to tighten up the
    memory topologies it accepts and to not crash on weird input:
    
      mm: page_alloc: skip memoryless nodes entirely
      mm: memory_hotplug: drop memoryless node from fallback lists
    
    Andrew has accepted them into the -mm tree, but there are no
    stable SHA1's yet.
    
    This patch drops the limitation for minimal node size on x86:
    
      - which works around the crash without the fixes to the core MM.
      - makes x86 topologies less weird,
      - removes an arbitrary and undocumented limitation on NUMA topologies.
    
    [ mingo: Improved changelog clarity. ]
    Reported-by: default avatarQi Zheng <zhengqi.arch@bytedance.com>
    Tested-by: default avatarMario Casquero <mcasquer@redhat.com>
    Signed-off-by: default avatarMike Rapoport (IBM) <rppt@kernel.org>
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    Acked-by: default avatarDavid Hildenbrand <david@redhat.com>
    Acked-by: default avatarMichal Hocko <mhocko@suse.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Rik van Riel <riel@surriel.com>
    Link: https://lore.kernel.org/r/ZS+2qqjEO5/867br@gmail.com
    a1e2b8b3
numa.h 2.14 KB