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 linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 16 Mar 2020 17:15:19 +0900 From: Joonsoo Kim <js1304@...il.com> To: Vlastimil Babka <vbabka@...e.cz> Cc: Srikar Dronamraju <srikar@...ux.vnet.ibm.com>, Sachin Sant <sachinp@...ux.vnet.ibm.com>, Michal Hocko <mhocko@...nel.org>, Linus Torvalds <torvalds@...ux-foundation.org>, LKML <linux-kernel@...r.kernel.org>, Linux Memory Management List <linux-mm@...ck.org>, Mel Gorman <mgorman@...e.de>, "Kirill A. Shutemov" <kirill@...temov.name>, Andrew Morton <akpm@...ux-foundation.org>, linuxppc-dev <linuxppc-dev@...ts.ozlabs.org>, Christopher Lameter <cl@...ux.com>, Joonsoo Kim <iamjoonsoo.kim@....com>, Kirill Tkhai <ktkhai@...tuozzo.com>, Michael Ellerman <mpe@...erman.id.au> Subject: Re: [PATCH 1/3] powerpc/numa: Set numa_node for all possible cpus 2020년 3월 13일 (금) 오후 8:38, Vlastimil Babka <vbabka@...e.cz>님이 작성: > > On 3/13/20 12:04 PM, Srikar Dronamraju wrote: > >> I lost all the memory about it. :) > >> Anyway, how about this? > >> > >> 1. make node_present_pages() safer > >> static inline node_present_pages(nid) > >> { > >> if (!node_online(nid)) return 0; > >> return (NODE_DATA(nid)->node_present_pages); > >> } > >> > > > > Yes this would help. > > Looks good, yeah. > > >> 2. make node_to_mem_node() safer for all cases > >> In ppc arch's mem_topology_setup(void) > >> for_each_present_cpu(cpu) { > >> numa_setup_cpu(cpu); > >> mem_node = node_to_mem_node(numa_mem_id()); > >> if (!node_present_pages(mem_node)) { > >> _node_numa_mem_[numa_mem_id()] = first_online_node; > >> } > >> } > >> > > > > But here as discussed above, we miss the case of possible but not present nodes. > > For such nodes, the above change may not update, resulting in they still > > having 0. And node 0 can be only possible but not present. Oops, I don't read full thread so miss the case. > So is there other way to do the setup so that node_to_mem_node() returns an > online+present node when called for any possible node? Two changes seems to be sufficient. 1. initialize all node's _node_numa_mem_[] = first_online_node in mem_topology_setup() 2. replace the node with online+present node for _node_to_mem_node_[] in set_cpu_numa_mem(). static inline void set_cpu_numa_mem(int cpu, int node) { per_cpu(_numa_mem_, cpu) = node; + if (!node_present_pages(node)) + node = first_online_node; _node_numa_mem_[cpu_to_node(cpu)] = node; } #endif With these two change, we can safely call node_to_mem_node() anywhere. Thanks.
Powered by blists - more mailing lists