x86: don't reallocate pgt for node0
authorYinghai Lu <yhlu.kernel@gmail.com>
Tue, 1 Jul 2008 01:34:58 +0000 (18:34 -0700)
committerIngo Molnar <mingo@elte.hu>
Tue, 8 Jul 2008 11:16:15 +0000 (13:16 +0200)
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>
arch/x86/mm/discontig_32.c

index 42484d4..e2f0dd1 100644 (file)
@@ -156,17 +156,20 @@ static void __init propagate_e820_map_node(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];
        else {
                unsigned long pgdat_phys;
                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),
                                 PAGE_SIZE);
                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",
                nid, (unsigned long)NODE_DATA(nid));