diff options
Diffstat (limited to 'arch/ia64')
-rw-r--r-- | arch/ia64/mm/discontig.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/arch/ia64/mm/discontig.c b/arch/ia64/mm/discontig.c index 2fcf8464331e..d83125e1ed27 100644 --- a/arch/ia64/mm/discontig.c +++ b/arch/ia64/mm/discontig.c | |||
@@ -74,17 +74,17 @@ pg_data_t *pgdat_list[MAX_NUMNODES]; | |||
74 | 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, |
75 | int node) | 75 | int node) |
76 | { | 76 | { |
77 | unsigned long cstart, epfn, end = start + len; | 77 | unsigned long spfn, epfn, end = start + len; |
78 | struct bootmem_data *bdp = &bootmem_node_data[node]; | 78 | struct bootmem_data *bdp = &bootmem_node_data[node]; |
79 | 79 | ||
80 | epfn = GRANULEROUNDUP(end) >> PAGE_SHIFT; | 80 | epfn = GRANULEROUNDUP(end) >> PAGE_SHIFT; |
81 | cstart = GRANULEROUNDDOWN(start); | 81 | spfn = GRANULEROUNDDOWN(start) >> PAGE_SHIFT; |
82 | 82 | ||
83 | if (!bdp->node_low_pfn) { | 83 | if (!bdp->node_low_pfn) { |
84 | bdp->node_boot_start = cstart; | 84 | bdp->node_min_pfn = spfn; |
85 | bdp->node_low_pfn = epfn; | 85 | bdp->node_low_pfn = epfn; |
86 | } else { | 86 | } else { |
87 | bdp->node_boot_start = min(cstart, bdp->node_boot_start); | 87 | bdp->node_min_pfn = min(spfn, bdp->node_min_pfn); |
88 | bdp->node_low_pfn = max(epfn, bdp->node_low_pfn); | 88 | bdp->node_low_pfn = max(epfn, bdp->node_low_pfn); |
89 | } | 89 | } |
90 | 90 | ||
@@ -221,20 +221,21 @@ static void __init fill_pernode(int node, unsigned long pernode, | |||
221 | 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, |
222 | int node) | 222 | int node) |
223 | { | 223 | { |
224 | unsigned long epfn; | 224 | unsigned long spfn, epfn; |
225 | unsigned long pernodesize = 0, pernode, pages, mapsize; | 225 | unsigned long pernodesize = 0, pernode, pages, mapsize; |
226 | struct bootmem_data *bdp = &bootmem_node_data[node]; | 226 | struct bootmem_data *bdp = &bootmem_node_data[node]; |
227 | 227 | ||
228 | spfn = start >> PAGE_SHIFT; | ||
228 | epfn = (start + len) >> PAGE_SHIFT; | 229 | epfn = (start + len) >> PAGE_SHIFT; |
229 | 230 | ||
230 | pages = bdp->node_low_pfn - (bdp->node_boot_start >> PAGE_SHIFT); | 231 | pages = bdp->node_low_pfn - bdp->node_min_pfn; |
231 | mapsize = bootmem_bootmap_pages(pages) << PAGE_SHIFT; | 232 | mapsize = bootmem_bootmap_pages(pages) << PAGE_SHIFT; |
232 | 233 | ||
233 | /* | 234 | /* |
234 | * Make sure this memory falls within this node's usable memory | 235 | * Make sure this memory falls within this node's usable memory |
235 | * since we may have thrown some away in build_maps(). | 236 | * since we may have thrown some away in build_maps(). |
236 | */ | 237 | */ |
237 | if (start < bdp->node_boot_start || epfn > bdp->node_low_pfn) | 238 | if (spfn < bdp->node_min_pfn || epfn > bdp->node_low_pfn) |
238 | return 0; | 239 | return 0; |
239 | 240 | ||
240 | /* Don't setup this node's local space twice... */ | 241 | /* Don't setup this node's local space twice... */ |
@@ -296,7 +297,7 @@ static void __init reserve_pernode_space(void) | |||
296 | bdp = pdp->bdata; | 297 | bdp = pdp->bdata; |
297 | 298 | ||
298 | /* First the bootmem_map itself */ | 299 | /* First the bootmem_map itself */ |
299 | pages = bdp->node_low_pfn - (bdp->node_boot_start>>PAGE_SHIFT); | 300 | pages = bdp->node_low_pfn - bdp->node_min_pfn; |
300 | size = bootmem_bootmap_pages(pages) << PAGE_SHIFT; | 301 | size = bootmem_bootmap_pages(pages) << PAGE_SHIFT; |
301 | base = __pa(bdp->node_bootmem_map); | 302 | base = __pa(bdp->node_bootmem_map); |
302 | reserve_bootmem_node(pdp, base, size, BOOTMEM_DEFAULT); | 303 | reserve_bootmem_node(pdp, base, size, BOOTMEM_DEFAULT); |
@@ -466,7 +467,7 @@ void __init find_memory(void) | |||
466 | 467 | ||
467 | init_bootmem_node(pgdat_list[node], | 468 | init_bootmem_node(pgdat_list[node], |
468 | map>>PAGE_SHIFT, | 469 | map>>PAGE_SHIFT, |
469 | bdp->node_boot_start>>PAGE_SHIFT, | 470 | bdp->node_min_pfn, |
470 | bdp->node_low_pfn); | 471 | bdp->node_low_pfn); |
471 | } | 472 | } |
472 | 473 | ||