diff options
-rw-r--r-- | arch/x86/mm/discontig_32.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/arch/x86/mm/discontig_32.c b/arch/x86/mm/discontig_32.c index 42484d446d06..e2f0dd13a451 100644 --- a/arch/x86/mm/discontig_32.c +++ b/arch/x86/mm/discontig_32.c | |||
@@ -156,17 +156,20 @@ static void __init propagate_e820_map_node(int nid) | |||
156 | */ | 156 | */ |
157 | static void __init allocate_pgdat(int nid) | 157 | static void __init allocate_pgdat(int nid) |
158 | { | 158 | { |
159 | if (nid && node_has_online_mem(nid) && node_remap_start_vaddr[nid]) | 159 | char buf[16]; |
160 | |||
161 | if (node_has_online_mem(nid) && node_remap_start_vaddr[nid]) | ||
160 | NODE_DATA(nid) = (pg_data_t *)node_remap_start_vaddr[nid]; | 162 | NODE_DATA(nid) = (pg_data_t *)node_remap_start_vaddr[nid]; |
161 | else { | 163 | else { |
162 | unsigned long pgdat_phys; | 164 | unsigned long pgdat_phys; |
163 | pgdat_phys = find_e820_area(min_low_pfn<<PAGE_SHIFT, | 165 | pgdat_phys = find_e820_area(min_low_pfn<<PAGE_SHIFT, |
164 | (nid ? max_low_pfn:max_pfn_mapped)<<PAGE_SHIFT, | 166 | max_pfn_mapped<<PAGE_SHIFT, |
165 | sizeof(pg_data_t), | 167 | sizeof(pg_data_t), |
166 | PAGE_SIZE); | 168 | PAGE_SIZE); |
167 | NODE_DATA(nid) = (pg_data_t *)(pfn_to_kaddr(pgdat_phys>>PAGE_SHIFT)); | 169 | NODE_DATA(nid) = (pg_data_t *)(pfn_to_kaddr(pgdat_phys>>PAGE_SHIFT)); |
168 | reserve_early(pgdat_phys, pgdat_phys + sizeof(pg_data_t), | 170 | memset(buf, 0, sizeof(buf)); |
169 | "NODE_DATA"); | 171 | sprintf(buf, "NODE_DATA %d", nid); |
172 | reserve_early(pgdat_phys, pgdat_phys + sizeof(pg_data_t), buf); | ||
170 | } | 173 | } |
171 | printk(KERN_DEBUG "allocate_pgdat: node %d NODE_DATA %08lx\n", | 174 | printk(KERN_DEBUG "allocate_pgdat: node %d NODE_DATA %08lx\n", |
172 | nid, (unsigned long)NODE_DATA(nid)); | 175 | nid, (unsigned long)NODE_DATA(nid)); |