x86: cope with no remap space being allocated for a numa node
authorAndy Whitcroft <apw@shadowen.org>
Tue, 20 May 2008 10:01:19 +0000 (11:01 +0100)
committerIngo Molnar <mingo@elte.hu>
Tue, 20 May 2008 12:10:50 +0000 (14:10 +0200)
When allocating the pgdat's for numa nodes on x86_32 we attempt to place
them in the numa remap space for that node.  However should the node not
have any remap space allocated (such as due to having non-ram pages in
the remap location in the node) then we will incorrectly place the pgdat
at zero.  Check we have remap available, falling back to node 0 memory
where we do not.

Signed-off-by: Andy Whitcroft <apw@shadowen.org>
Acked-by: Mel Gorman <mel@csn.ul.ie>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/mm/discontig_32.c

index 026201f143a8f5c2c162998759b08caf022a61fe..435c343c14bcf147a8ccfd14cbb5907128f27478 100644 (file)
@@ -156,7 +156,7 @@ static void __init propagate_e820_map_node(int nid)
  */
 static void __init allocate_pgdat(int nid)
 {
-       if (nid && node_has_online_mem(nid))
+       if (nid && node_has_online_mem(nid) && node_remap_start_vaddr[nid])
                NODE_DATA(nid) = (pg_data_t *)node_remap_start_vaddr[nid];
        else {
                NODE_DATA(nid) = (pg_data_t *)(pfn_to_kaddr(min_low_pfn));