All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] x86/mm: drop 4MB restriction on minimal NUMA node size
@ 2023-10-17  6:22 Mike Rapoport
  2023-10-17  7:28 ` David Hildenbrand
                   ` (2 more replies)
  0 siblings, 3 replies; 12+ messages in thread
From: Mike Rapoport @ 2023-10-17  6:22 UTC (permalink / raw)
  To: x86
  Cc: Andrew Morton, Andy Lutomirski, Borislav Petkov, Dave Hansen,
	David Hildenbrand, H. Peter Anvin, Ingo Molnar, Michal Hocko,
	Mike Rapoport, Peter Zijlstra, Qi Zheng, Thomas Gleixner,
	linux-kernel, linux-mm

From: "Mike Rapoport (IBM)" <rppt@kernel.org>

Qi Zheng reports crashes in a production environment and provides 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:

  [    0.149844] BUG: kernel NULL pointer dereference, address: 0000000000000000
  [    0.150783] #PF: supervisor write access in kernel mode
  [    0.151488] #PF: error_code(0x0002) - not-present page
  <...>
  [    0.156056] RIP: 0010:_raw_spin_lock_irqsave+0x22/0x40
  <...>
  [    0.169781] Call Trace:
  [    0.170159]  <TASK>
  [    0.170448]  deactivate_slab+0x187/0x3c0
  [    0.171031]  ? bootstrap+0x1b/0x10e
  [    0.171559]  ? preempt_count_sub+0x9/0xa0
  [    0.172145]  ? kmem_cache_alloc+0x12c/0x440
  [    0.172735]  ? bootstrap+0x1b/0x10e
  [    0.173236]  bootstrap+0x6b/0x10e
  [    0.173720]  kmem_cache_init+0x10a/0x188
  [    0.174240]  start_kernel+0x415/0x6ac
  [    0.174738]  secondary_startup_64_no_verify+0xe0/0xeb
  [    0.175417]  </TASK>
  [    0.175713] Modules linked in:
  [    0.176117] CR2: 0000000000000000

The crashes happen because of inconsistency between nodemask that has
nodes with less than 4MB as memoryless and the actual memory fed into
core mm.

The commit 9391a3f9c7f1 ("[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.

Since then a lot has changed and core mm won't confuse badly about small
node sizes.

Drop the limitation for the minimal node size.

Reported-by: Qi Zheng <zhengqi.arch@bytedance.com>
Signed-off-by: Mike Rapoport (IBM) <rppt@kernel.org>
Acked-by: David Hildenbrand <david@redhat.com>
Acked-by: Michal Hocko <mhocko@suse.com>
Link: https://lore.kernel.org/all/20230212110305.93670-1-zhengqi.arch@bytedance.com/
---
 arch/x86/include/asm/numa.h | 7 -------
 arch/x86/mm/numa.c          | 7 -------
 2 files changed, 14 deletions(-)

diff --git a/arch/x86/include/asm/numa.h b/arch/x86/include/asm/numa.h
index e3bae2b60a0d..ef2844d69173 100644
--- a/arch/x86/include/asm/numa.h
+++ b/arch/x86/include/asm/numa.h
@@ -12,13 +12,6 @@
 
 #define NR_NODE_MEMBLKS		(MAX_NUMNODES*2)
 
-/*
- * Too small node sizes may confuse the VM badly. Usually they
- * result from BIOS bugs. So dont recognize nodes as standalone
- * NUMA entities that have less than this amount of RAM listed:
- */
-#define NODE_MIN_SIZE (4*1024*1024)
-
 extern int numa_off;
 
 /*
diff --git a/arch/x86/mm/numa.c b/arch/x86/mm/numa.c
index 2aadb2019b4f..55e3d895f15c 100644
--- a/arch/x86/mm/numa.c
+++ b/arch/x86/mm/numa.c
@@ -601,13 +601,6 @@ static int __init numa_register_memblks(struct numa_meminfo *mi)
 		if (start >= end)
 			continue;
 
-		/*
-		 * Don't confuse VM with a node that doesn't have the
-		 * minimum amount of memory:
-		 */
-		if (end && (end - start) < NODE_MIN_SIZE)
-			continue;
-
 		alloc_node_data(nid);
 	}
 

base-commit: 94f6f0550c625fab1f373bb86a6669b45e9748b3
-- 
2.39.2



^ permalink raw reply related	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2023-10-20  8:59 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-10-17  6:22 [PATCH] x86/mm: drop 4MB restriction on minimal NUMA node size Mike Rapoport
2023-10-17  7:28 ` David Hildenbrand
2023-10-17  7:35   ` David Hildenbrand
2023-10-17  7:52   ` Mike Rapoport
2023-10-18 10:42 ` [PATCH v2] x86/mm: Drop 4MB restriction on minimal NUMA node memory size Ingo Molnar
2023-10-18 12:26   ` Qi Zheng
2023-10-18 12:44     ` Ingo Molnar
2023-10-18 13:20       ` Qi Zheng
2023-10-20  8:46         ` Ingo Molnar
2023-10-20  8:59           ` Ingo Molnar
2023-10-19  9:35   ` Mike Rapoport
2023-10-18 11:55 ` [PATCH] x86/mm: drop 4MB restriction on minimal NUMA node size Mario Casquero

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.