lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Fri, 1 May 2020 08:41:28 +0530 From: Srikar Dronamraju <srikar@...ux.vnet.ibm.com> To: Andrew Morton <akpm@...ux-foundation.org> Cc: Srikar Dronamraju <srikar@...ux.vnet.ibm.com>, linuxppc-dev@...ts.ozlabs.org, linux-mm@...ck.org, linux-kernel@...r.kernel.org, Michal Hocko <mhocko@...e.com>, Mel Gorman <mgorman@...e.de>, Vlastimil Babka <vbabka@...e.cz>, "Kirill A. Shutemov" <kirill@...temov.name>, Christopher Lameter <cl@...ux.com>, Michael Ellerman <mpe@...erman.id.au>, Linus Torvalds <torvalds@...ux-foundation.org>, Gautham R Shenoy <ego@...ux.vnet.ibm.com> Subject: [PATCH v3 3/3] mm/page_alloc: Keep memoryless cpuless node 0 offline Currently Linux kernel with CONFIG_NUMA on a system with multiple possible nodes, marks node 0 as online at boot. However in practice, there are systems which have node 0 as memoryless and cpuless. This can cause numa_balancing to be enabled on systems with only one node with memory and CPUs. The existence of this dummy node which is cpuless and memoryless node can confuse users/scripts looking at output of lscpu / numactl. By marking, N_ONLINE as NODE_MASK_NONE, lets stop assuming that Node 0 is always online. v5.7-rc3 available: 2 nodes (0,2) node 0 cpus: node 0 size: 0 MB node 0 free: 0 MB node 2 cpus: 0 1 2 3 4 5 6 7 node 2 size: 32625 MB node 2 free: 31490 MB node distances: node 0 2 0: 10 20 2: 20 10 proc and sys files ------------------ /sys/devices/system/node/online: 0,2 /proc/sys/kernel/numa_balancing: 1 /sys/devices/system/node/has_cpu: 2 /sys/devices/system/node/has_memory: 2 /sys/devices/system/node/has_normal_memory: 2 /sys/devices/system/node/possible: 0-31 v5.7-rc3 + patch ------------------ available: 1 nodes (2) node 2 cpus: 0 1 2 3 4 5 6 7 node 2 size: 32625 MB node 2 free: 31487 MB node distances: node 2 2: 10 proc and sys files ------------------ /sys/devices/system/node/online: 2 /proc/sys/kernel/numa_balancing: 0 /sys/devices/system/node/has_cpu: 2 /sys/devices/system/node/has_memory: 2 /sys/devices/system/node/has_normal_memory: 2 /sys/devices/system/node/possible: 0-31 Note: On Powerpc, cpu_to_node of possible but not present cpus would previously return 0. Hence this commit depends on commit ("powerpc/numa: Set numa_node for all possible cpus") and commit ("powerpc/numa: Prefer node id queried from vphn"). Without the 2 commits, Powerpc system might crash. Cc: linuxppc-dev@...ts.ozlabs.org Cc: linux-mm@...ck.org Cc: linux-kernel@...r.kernel.org Cc: Michal Hocko <mhocko@...e.com> Cc: Mel Gorman <mgorman@...e.de> Cc: Vlastimil Babka <vbabka@...e.cz> Cc: "Kirill A. Shutemov" <kirill@...temov.name> Cc: Christopher Lameter <cl@...ux.com> Cc: Michael Ellerman <mpe@...erman.id.au> Cc: Andrew Morton <akpm@...ux-foundation.org> Cc: Linus Torvalds <torvalds@...ux-foundation.org> Cc: Gautham R Shenoy <ego@...ux.vnet.ibm.com> Signed-off-by: Srikar Dronamraju <srikar@...ux.vnet.ibm.com> --- Changelog v1:->v2: - Rebased to v5.7-rc3 Link v2: https://lore.kernel.org/linuxppc-dev/20200428093836.27190-1-srikar@linux.vnet.ibm.com/t/#u mm/page_alloc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 69827d4fa052..03b89592af04 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -116,8 +116,10 @@ EXPORT_SYMBOL(latent_entropy); */ nodemask_t node_states[NR_NODE_STATES] __read_mostly = { [N_POSSIBLE] = NODE_MASK_ALL, +#ifdef CONFIG_NUMA + [N_ONLINE] = NODE_MASK_NONE, +#else [N_ONLINE] = { { [0] = 1UL } }, -#ifndef CONFIG_NUMA [N_NORMAL_MEMORY] = { { [0] = 1UL } }, #ifdef CONFIG_HIGHMEM [N_HIGH_MEMORY] = { { [0] = 1UL } }, -- 2.20.1
Powered by blists - more mailing lists