x86, srat: do not register nodes beyond e820 map
authorDavid Rientjes <[email protected]>
Tue, 5 May 2009 19:50:02 +0000 (12:50 -0700)
committerIngo Molnar <[email protected]>
Wed, 6 May 2009 08:49:07 +0000 (10:49 +0200)
The mem= option will truncate the memory map at a specified address so
it's not possible to register nodes with memory beyond the e820 upper
bound.

unparse_node() is only called when then node had memory associated with
it, although with the mem= option it is no longer addressable.

[ Impact: fix boot hang on certain (large) systems ]

Reported-by: "Zhang, Yanmin" <[email protected]>
Signed-off-by: David Rientjes <[email protected]>
Acked-by: Jack Steiner <[email protected]>
LKML-Reference: <alpine.DEB.2.00.0905051248150[email protected]>
Signed-off-by: Ingo Molnar <[email protected]>
arch/x86/mm/srat_64.c

index 33c5fa57e43d22ce822249e9b918075684b29d44..01765955baaf66922ad70a959c9875f60fcad56e 100644 (file)
@@ -361,6 +361,7 @@ static void __init unparse_node(int node)
 {
        int i;
        node_clear(node, nodes_parsed);
+       node_clear(node, cpu_nodes_parsed);
        for (i = 0; i < MAX_LOCAL_APIC; i++) {
                if (apicid_to_node[i] == node)
                        apicid_to_node[i] = NUMA_NO_NODE;