瀏覽代碼

x86: cope with no remap space being allocated for a numa node

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>
Andy Whitcroft 17 年之前
父節點
當前提交
84d6bd0e27
共有 1 個文件被更改,包括 1 次插入1 次删除
  1. 1 1
      arch/x86/mm/discontig_32.c

+ 1 - 1
arch/x86/mm/discontig_32.c

@@ -156,7 +156,7 @@ static void __init propagate_e820_map_node(int nid)
  */
  */
 static void __init allocate_pgdat(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];
 		NODE_DATA(nid) = (pg_data_t *)node_remap_start_vaddr[nid];
 	else {
 	else {
 		NODE_DATA(nid) = (pg_data_t *)(pfn_to_kaddr(min_low_pfn));
 		NODE_DATA(nid) = (pg_data_t *)(pfn_to_kaddr(min_low_pfn));