diff options
Diffstat (limited to 'arch/ia64/mm/discontig.c')
-rw-r--r-- | arch/ia64/mm/discontig.c | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/arch/ia64/mm/discontig.c b/arch/ia64/mm/discontig.c index 544dc420c65e..d83125e1ed27 100644 --- a/arch/ia64/mm/discontig.c +++ b/arch/ia64/mm/discontig.c | |||
@@ -36,7 +36,6 @@ struct early_node_data { | |||
36 | struct ia64_node_data *node_data; | 36 | struct ia64_node_data *node_data; |
37 | unsigned long pernode_addr; | 37 | unsigned long pernode_addr; |
38 | unsigned long pernode_size; | 38 | unsigned long pernode_size; |
39 | struct bootmem_data bootmem_data; | ||
40 | unsigned long num_physpages; | 39 | unsigned long num_physpages; |
41 | #ifdef CONFIG_ZONE_DMA | 40 | #ifdef CONFIG_ZONE_DMA |
42 | unsigned long num_dma_physpages; | 41 | unsigned long num_dma_physpages; |
@@ -75,17 +74,17 @@ pg_data_t *pgdat_list[MAX_NUMNODES]; | |||
75 | static int __init build_node_maps(unsigned long start, unsigned long len, | 74 | static int __init build_node_maps(unsigned long start, unsigned long len, |
76 | int node) | 75 | int node) |
77 | { | 76 | { |
78 | unsigned long cstart, epfn, end = start + len; | 77 | unsigned long spfn, epfn, end = start + len; |
79 | struct bootmem_data *bdp = &mem_data[node].bootmem_data; | 78 | struct bootmem_data *bdp = &bootmem_node_data[node]; |
80 | 79 | ||
81 | epfn = GRANULEROUNDUP(end) >> PAGE_SHIFT; | 80 | epfn = GRANULEROUNDUP(end) >> PAGE_SHIFT; |
82 | cstart = GRANULEROUNDDOWN(start); | 81 | spfn = GRANULEROUNDDOWN(start) >> PAGE_SHIFT; |
83 | 82 | ||
84 | if (!bdp->node_low_pfn) { | 83 | if (!bdp->node_low_pfn) { |
85 | bdp->node_boot_start = cstart; | 84 | bdp->node_min_pfn = spfn; |
86 | bdp->node_low_pfn = epfn; | 85 | bdp->node_low_pfn = epfn; |
87 | } else { | 86 | } else { |
88 | bdp->node_boot_start = min(cstart, bdp->node_boot_start); | 87 | bdp->node_min_pfn = min(spfn, bdp->node_min_pfn); |
89 | bdp->node_low_pfn = max(epfn, bdp->node_low_pfn); | 88 | bdp->node_low_pfn = max(epfn, bdp->node_low_pfn); |
90 | } | 89 | } |
91 | 90 | ||
@@ -167,7 +166,7 @@ static void __init fill_pernode(int node, unsigned long pernode, | |||
167 | { | 166 | { |
168 | void *cpu_data; | 167 | void *cpu_data; |
169 | int cpus = early_nr_cpus_node(node); | 168 | int cpus = early_nr_cpus_node(node); |
170 | struct bootmem_data *bdp = &mem_data[node].bootmem_data; | 169 | struct bootmem_data *bdp = &bootmem_node_data[node]; |
171 | 170 | ||
172 | mem_data[node].pernode_addr = pernode; | 171 | mem_data[node].pernode_addr = pernode; |
173 | mem_data[node].pernode_size = pernodesize; | 172 | mem_data[node].pernode_size = pernodesize; |
@@ -222,20 +221,21 @@ static void __init fill_pernode(int node, unsigned long pernode, | |||
222 | static int __init find_pernode_space(unsigned long start, unsigned long len, | 221 | static int __init find_pernode_space(unsigned long start, unsigned long len, |
223 | int node) | 222 | int node) |
224 | { | 223 | { |
225 | unsigned long epfn; | 224 | unsigned long spfn, epfn; |
226 | unsigned long pernodesize = 0, pernode, pages, mapsize; | 225 | unsigned long pernodesize = 0, pernode, pages, mapsize; |
227 | struct bootmem_data *bdp = &mem_data[node].bootmem_data; | 226 | struct bootmem_data *bdp = &bootmem_node_data[node]; |
228 | 227 | ||
228 | spfn = start >> PAGE_SHIFT; | ||
229 | epfn = (start + len) >> PAGE_SHIFT; | 229 | epfn = (start + len) >> PAGE_SHIFT; |
230 | 230 | ||
231 | pages = bdp->node_low_pfn - (bdp->node_boot_start >> PAGE_SHIFT); | 231 | pages = bdp->node_low_pfn - bdp->node_min_pfn; |
232 | mapsize = bootmem_bootmap_pages(pages) << PAGE_SHIFT; | 232 | mapsize = bootmem_bootmap_pages(pages) << PAGE_SHIFT; |
233 | 233 | ||
234 | /* | 234 | /* |
235 | * Make sure this memory falls within this node's usable memory | 235 | * Make sure this memory falls within this node's usable memory |
236 | * since we may have thrown some away in build_maps(). | 236 | * since we may have thrown some away in build_maps(). |
237 | */ | 237 | */ |
238 | if (start < bdp->node_boot_start || epfn > bdp->node_low_pfn) | 238 | if (spfn < bdp->node_min_pfn || epfn > bdp->node_low_pfn) |
239 | return 0; | 239 | return 0; |
240 | 240 | ||
241 | /* Don't setup this node's local space twice... */ | 241 | /* Don't setup this node's local space twice... */ |
@@ -297,7 +297,7 @@ static void __init reserve_pernode_space(void) | |||
297 | bdp = pdp->bdata; | 297 | bdp = pdp->bdata; |
298 | 298 | ||
299 | /* First the bootmem_map itself */ | 299 | /* First the bootmem_map itself */ |
300 | pages = bdp->node_low_pfn - (bdp->node_boot_start>>PAGE_SHIFT); | 300 | pages = bdp->node_low_pfn - bdp->node_min_pfn; |
301 | size = bootmem_bootmap_pages(pages) << PAGE_SHIFT; | 301 | size = bootmem_bootmap_pages(pages) << PAGE_SHIFT; |
302 | base = __pa(bdp->node_bootmem_map); | 302 | base = __pa(bdp->node_bootmem_map); |
303 | reserve_bootmem_node(pdp, base, size, BOOTMEM_DEFAULT); | 303 | reserve_bootmem_node(pdp, base, size, BOOTMEM_DEFAULT); |
@@ -440,7 +440,7 @@ void __init find_memory(void) | |||
440 | efi_memmap_walk(find_max_min_low_pfn, NULL); | 440 | efi_memmap_walk(find_max_min_low_pfn, NULL); |
441 | 441 | ||
442 | for_each_online_node(node) | 442 | for_each_online_node(node) |
443 | if (mem_data[node].bootmem_data.node_low_pfn) { | 443 | if (bootmem_node_data[node].node_low_pfn) { |
444 | node_clear(node, memory_less_mask); | 444 | node_clear(node, memory_less_mask); |
445 | mem_data[node].min_pfn = ~0UL; | 445 | mem_data[node].min_pfn = ~0UL; |
446 | } | 446 | } |
@@ -460,14 +460,14 @@ void __init find_memory(void) | |||
460 | else if (node_isset(node, memory_less_mask)) | 460 | else if (node_isset(node, memory_less_mask)) |
461 | continue; | 461 | continue; |
462 | 462 | ||
463 | bdp = &mem_data[node].bootmem_data; | 463 | bdp = &bootmem_node_data[node]; |
464 | pernode = mem_data[node].pernode_addr; | 464 | pernode = mem_data[node].pernode_addr; |
465 | pernodesize = mem_data[node].pernode_size; | 465 | pernodesize = mem_data[node].pernode_size; |
466 | map = pernode + pernodesize; | 466 | map = pernode + pernodesize; |
467 | 467 | ||
468 | init_bootmem_node(pgdat_list[node], | 468 | init_bootmem_node(pgdat_list[node], |
469 | map>>PAGE_SHIFT, | 469 | map>>PAGE_SHIFT, |
470 | bdp->node_boot_start>>PAGE_SHIFT, | 470 | bdp->node_min_pfn, |
471 | bdp->node_low_pfn); | 471 | bdp->node_low_pfn); |
472 | } | 472 | } |
473 | 473 | ||