[PATCH] x86-64: Clean up the SRAT node list before computing the hash function
authorAndi Kleen <ak@suse.de>
Mon, 12 Sep 2005 16:49:25 +0000 (18:49 +0200)
committerLinus Torvalds <torvalds@g5.osdl.org>
Mon, 12 Sep 2005 17:50:58 +0000 (10:50 -0700)
Also use for_each_node_mask instead of hand crafted loops.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/x86_64/mm/srat.c

index 36bc7be..d66b814 100644 (file)
@@ -177,6 +177,14 @@ int __init acpi_scan_nodes(unsigned long start, unsigned long end)
        int i;
        if (acpi_numa <= 0)
                return -1;
+
+       /* First clean up the node list */
+       for_each_node_mask(i, nodes_parsed) {
+               cutoff_node(i, start, end);
+               if (nodes[i].start == nodes[i].end)
+                       node_clear(i, nodes_parsed);
+       }
+
        memnode_shift = compute_hash_shift(nodes, nodes_weight(nodes_parsed));
        if (memnode_shift < 0) {
                printk(KERN_ERR
@@ -184,16 +192,10 @@ int __init acpi_scan_nodes(unsigned long start, unsigned long end)
                bad_srat();
                return -1;
        }
-       for (i = 0; i < MAX_NUMNODES; i++) {
-               if (!node_isset(i, nodes_parsed))
-                       continue;
-               cutoff_node(i, start, end);
-               if (nodes[i].start == nodes[i].end) { 
-                       node_clear(i, nodes_parsed);
-                       continue;
-               }
+
+       /* Finally register nodes */
+       for_each_node_mask(i, nodes_parsed)
                setup_node_bootmem(i, nodes[i].start, nodes[i].end);
-       }
        for (i = 0; i < NR_CPUS; i++) { 
                if (cpu_to_node[i] == NUMA_NO_NODE)
                        continue;