Преглед на файлове

x86: don't reallocate pgt for node0

kva ram already mapped right after away, so don't need to get that for low ram.
avoid wasting one copy of pgdat.

also add node id in early_res name in case we get it from find_e820_area.

Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Yinghai Lu преди 17 години
родител
ревизия
996cf4438f
променени са 1 файла, в които са добавени 7 реда и са изтрити 4 реда
  1. 7 4
      arch/x86/mm/discontig_32.c

+ 7 - 4
arch/x86/mm/discontig_32.c

@@ -156,17 +156,20 @@ 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) && node_remap_start_vaddr[nid])
+	char buf[16];
+
+	if (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 {
 		unsigned long pgdat_phys;
 		unsigned long pgdat_phys;
 		pgdat_phys = find_e820_area(min_low_pfn<<PAGE_SHIFT,
 		pgdat_phys = find_e820_area(min_low_pfn<<PAGE_SHIFT,
-				 (nid ? max_low_pfn:max_pfn_mapped)<<PAGE_SHIFT,
+				 max_pfn_mapped<<PAGE_SHIFT,
 				 sizeof(pg_data_t),
 				 sizeof(pg_data_t),
 				 PAGE_SIZE);
 				 PAGE_SIZE);
 		NODE_DATA(nid) = (pg_data_t *)(pfn_to_kaddr(pgdat_phys>>PAGE_SHIFT));
 		NODE_DATA(nid) = (pg_data_t *)(pfn_to_kaddr(pgdat_phys>>PAGE_SHIFT));
-		reserve_early(pgdat_phys, pgdat_phys + sizeof(pg_data_t),
-			      "NODE_DATA");
+		memset(buf, 0, sizeof(buf));
+		sprintf(buf, "NODE_DATA %d",  nid);
+		reserve_early(pgdat_phys, pgdat_phys + sizeof(pg_data_t), buf);
 	}
 	}
 	printk(KERN_DEBUG "allocate_pgdat: node %d NODE_DATA %08lx\n",
 	printk(KERN_DEBUG "allocate_pgdat: node %d NODE_DATA %08lx\n",
 		nid, (unsigned long)NODE_DATA(nid));
 		nid, (unsigned long)NODE_DATA(nid));