diff options
Diffstat (limited to 'mm/sparse.c')
-rw-r--r-- | mm/sparse.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/mm/sparse.c b/mm/sparse.c index db4867b62fff..20ca292d8f11 100644 --- a/mm/sparse.c +++ b/mm/sparse.c | |||
@@ -401,14 +401,14 @@ static void __init sparse_early_usemaps_alloc_node(void *data, | |||
401 | } | 401 | } |
402 | 402 | ||
403 | #ifdef CONFIG_SPARSEMEM_VMEMMAP | 403 | #ifdef CONFIG_SPARSEMEM_VMEMMAP |
404 | unsigned long __init section_map_size(void) | 404 | static unsigned long __init section_map_size(void) |
405 | 405 | ||
406 | { | 406 | { |
407 | return ALIGN(sizeof(struct page) * PAGES_PER_SECTION, PMD_SIZE); | 407 | return ALIGN(sizeof(struct page) * PAGES_PER_SECTION, PMD_SIZE); |
408 | } | 408 | } |
409 | 409 | ||
410 | #else | 410 | #else |
411 | unsigned long __init section_map_size(void) | 411 | static unsigned long __init section_map_size(void) |
412 | { | 412 | { |
413 | return PAGE_ALIGN(sizeof(struct page) * PAGES_PER_SECTION); | 413 | return PAGE_ALIGN(sizeof(struct page) * PAGES_PER_SECTION); |
414 | } | 414 | } |
@@ -433,10 +433,8 @@ void __init sparse_mem_maps_populate_node(struct page **map_map, | |||
433 | unsigned long map_count, int nodeid) | 433 | unsigned long map_count, int nodeid) |
434 | { | 434 | { |
435 | unsigned long pnum; | 435 | unsigned long pnum; |
436 | unsigned long size = section_map_size(); | ||
437 | int nr_consumed_maps = 0; | 436 | int nr_consumed_maps = 0; |
438 | 437 | ||
439 | sparse_buffer_init(size * map_count, nodeid); | ||
440 | for (pnum = pnum_begin; pnum < pnum_end; pnum++) { | 438 | for (pnum = pnum_begin; pnum < pnum_end; pnum++) { |
441 | if (!present_section_nr(pnum)) | 439 | if (!present_section_nr(pnum)) |
442 | continue; | 440 | continue; |
@@ -447,14 +445,13 @@ void __init sparse_mem_maps_populate_node(struct page **map_map, | |||
447 | pr_err("%s: sparsemem memory map backing failed some memory will not be available\n", | 445 | pr_err("%s: sparsemem memory map backing failed some memory will not be available\n", |
448 | __func__); | 446 | __func__); |
449 | } | 447 | } |
450 | sparse_buffer_fini(); | ||
451 | } | 448 | } |
452 | #endif /* !CONFIG_SPARSEMEM_VMEMMAP */ | 449 | #endif /* !CONFIG_SPARSEMEM_VMEMMAP */ |
453 | 450 | ||
454 | static void *sparsemap_buf __meminitdata; | 451 | static void *sparsemap_buf __meminitdata; |
455 | static void *sparsemap_buf_end __meminitdata; | 452 | static void *sparsemap_buf_end __meminitdata; |
456 | 453 | ||
457 | void __init sparse_buffer_init(unsigned long size, int nid) | 454 | static void __init sparse_buffer_init(unsigned long size, int nid) |
458 | { | 455 | { |
459 | WARN_ON(sparsemap_buf); /* forgot to call sparse_buffer_fini()? */ | 456 | WARN_ON(sparsemap_buf); /* forgot to call sparse_buffer_fini()? */ |
460 | sparsemap_buf = | 457 | sparsemap_buf = |
@@ -464,7 +461,7 @@ void __init sparse_buffer_init(unsigned long size, int nid) | |||
464 | sparsemap_buf_end = sparsemap_buf + size; | 461 | sparsemap_buf_end = sparsemap_buf + size; |
465 | } | 462 | } |
466 | 463 | ||
467 | void __init sparse_buffer_fini(void) | 464 | static void __init sparse_buffer_fini(void) |
468 | { | 465 | { |
469 | unsigned long size = sparsemap_buf_end - sparsemap_buf; | 466 | unsigned long size = sparsemap_buf_end - sparsemap_buf; |
470 | 467 | ||
@@ -494,8 +491,11 @@ static void __init sparse_early_mem_maps_alloc_node(void *data, | |||
494 | unsigned long map_count, int nodeid) | 491 | unsigned long map_count, int nodeid) |
495 | { | 492 | { |
496 | struct page **map_map = (struct page **)data; | 493 | struct page **map_map = (struct page **)data; |
494 | |||
495 | sparse_buffer_init(section_map_size() * map_count, nodeid); | ||
497 | sparse_mem_maps_populate_node(map_map, pnum_begin, pnum_end, | 496 | sparse_mem_maps_populate_node(map_map, pnum_begin, pnum_end, |
498 | map_count, nodeid); | 497 | map_count, nodeid); |
498 | sparse_buffer_fini(); | ||
499 | } | 499 | } |
500 | #else | 500 | #else |
501 | static struct page __init *sparse_early_mem_map_alloc(unsigned long pnum) | 501 | static struct page __init *sparse_early_mem_map_alloc(unsigned long pnum) |