x86_64: Fix NUMA hash setup
PATCH 3/4 x86_64: Fix NUMA hash setup
Fix NUMA hash setup on x86-64
Signed-off-by Andi Kleen <[email protected]>
arch/x86_64/mm/k8topology.c +1 -1
@@ -148,7 +148,7 @@if (!found)return -1 ; - memnode_shift =compute_hash_shift (nodes); + memnode_shift =compute_hash_shift (nodes, numnodes);if (memnode_shift <0 ) {printk (KERN_ERR "No NUMA node hash function found. Contact maintainer\n" );return -1 ;
arch/x86_64/mm/srat.c +1 -1
@@ -166,7 +166,7 @@int i;if (acpi_numa <=0 )return -1 ; - memnode_shift =compute_hash_shift (nodes); + memnode_shift =compute_hash_shift (nodes,nodes_weight (nodes_parsed));if (memnode_shift <0 ) {printk (KERN_ERR "SRAT: No NUMA node hash function found. Contact maintainer\n" );
include/asm-x86_64/numa.h +1 -1
@@ -8,7 +8,7 @@u64 start,end; }; -extern int compute_hash_shift (struct node *nodes); +extern int compute_hash_shift (struct node *nodes,int numnodes);#define ZONE_ALIGN (1UL << (MAX_ORDER+PAGE_SHIFT))
arch/x86_64/mm/numa.c +3 -5
@@ -34,9 +34,7 @@int numa_off__initdata ; -unsigned long nodes_present; - -int __init compute_hash_shift (struct node *nodes) +int __init compute_hash_shift (struct node *nodes,int numnodes) {int i;int shift =24 ;
@@ -45,7 +43,7 @@/* When in doubt use brute force. */ while (shift <48 ) {memset (memnodemap,0xff ,sizeof (*memnodemap) *NODEMAPSIZE ); -for_each_online_node (i) { +for (i =0 ; i < numnodes; i++) {if (nodes[i].start == nodes[i].end)continue ; for (addr = nodes[i].start;
@@ -188,7 +186,7 @@ (nodes[i].end - nodes[i].start) >> 20);node_set_online (i); } - memnode_shift =compute_hash_shift (nodes); + memnode_shift =compute_hash_shift (nodes, numa_fake);if (memnode_shift <0 ) { memnode_shift =0 ;printk (KERN_ERR "No NUMA hash function found. Emulation disabled.\n" );