diff options
Diffstat (limited to 'arch/x86/mm/init_64.c')
-rw-r--r-- | arch/x86/mm/init_64.c | 54 |
1 files changed, 0 insertions, 54 deletions
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c index 470cc4704a9a..c8813aa39740 100644 --- a/arch/x86/mm/init_64.c +++ b/arch/x86/mm/init_64.c | |||
@@ -606,63 +606,9 @@ kernel_physical_mapping_init(unsigned long start, | |||
606 | void __init initmem_init(void) | 606 | void __init initmem_init(void) |
607 | { | 607 | { |
608 | memblock_x86_register_active_regions(0, 0, max_pfn); | 608 | memblock_x86_register_active_regions(0, 0, max_pfn); |
609 | init_memory_mapping_high(); | ||
610 | } | 609 | } |
611 | #endif | 610 | #endif |
612 | 611 | ||
613 | struct mapping_work_data { | ||
614 | unsigned long start; | ||
615 | unsigned long end; | ||
616 | unsigned long pfn_mapped; | ||
617 | }; | ||
618 | |||
619 | static int __init_refok | ||
620 | mapping_work_fn(unsigned long start_pfn, unsigned long end_pfn, void *datax) | ||
621 | { | ||
622 | struct mapping_work_data *data = datax; | ||
623 | unsigned long pfn_mapped; | ||
624 | unsigned long final_start, final_end; | ||
625 | |||
626 | final_start = max_t(unsigned long, start_pfn<<PAGE_SHIFT, data->start); | ||
627 | final_end = min_t(unsigned long, end_pfn<<PAGE_SHIFT, data->end); | ||
628 | |||
629 | if (final_end <= final_start) | ||
630 | return 0; | ||
631 | |||
632 | pfn_mapped = init_memory_mapping(final_start, final_end); | ||
633 | |||
634 | if (pfn_mapped > data->pfn_mapped) | ||
635 | data->pfn_mapped = pfn_mapped; | ||
636 | |||
637 | return 0; | ||
638 | } | ||
639 | |||
640 | static unsigned long __init_refok | ||
641 | init_memory_mapping_active_regions(unsigned long start, unsigned long end) | ||
642 | { | ||
643 | struct mapping_work_data data; | ||
644 | |||
645 | data.start = start; | ||
646 | data.end = end; | ||
647 | data.pfn_mapped = 0; | ||
648 | |||
649 | work_with_active_regions(MAX_NUMNODES, mapping_work_fn, &data); | ||
650 | |||
651 | return data.pfn_mapped; | ||
652 | } | ||
653 | |||
654 | void __init_refok init_memory_mapping_high(void) | ||
655 | { | ||
656 | if (max_pfn > max_low_pfn) { | ||
657 | max_pfn_mapped = init_memory_mapping_active_regions(1UL<<32, | ||
658 | max_pfn<<PAGE_SHIFT); | ||
659 | /* can we preserve max_low_pfn ? */ | ||
660 | max_low_pfn = max_pfn; | ||
661 | |||
662 | memblock.current_limit = get_max_mapped(); | ||
663 | } | ||
664 | } | ||
665 | |||
666 | void __init paging_init(void) | 612 | void __init paging_init(void) |
667 | { | 613 | { |
668 | unsigned long max_zone_pfns[MAX_NR_ZONES]; | 614 | unsigned long max_zone_pfns[MAX_NR_ZONES]; |