diff options
Diffstat (limited to 'arch/arm/mm/init.c')
-rw-r--r-- | arch/arm/mm/init.c | 58 |
1 files changed, 7 insertions, 51 deletions
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c index 2ffee02d1d5c..6833cbead6cc 100644 --- a/arch/arm/mm/init.c +++ b/arch/arm/mm/init.c | |||
@@ -583,9 +583,6 @@ static void __init free_highpages(void) | |||
583 | */ | 583 | */ |
584 | void __init mem_init(void) | 584 | void __init mem_init(void) |
585 | { | 585 | { |
586 | unsigned long reserved_pages, free_pages; | ||
587 | struct memblock_region *reg; | ||
588 | int i; | ||
589 | #ifdef CONFIG_HAVE_TCM | 586 | #ifdef CONFIG_HAVE_TCM |
590 | /* These pointers are filled in on TCM detection */ | 587 | /* These pointers are filled in on TCM detection */ |
591 | extern u32 dtcm_end; | 588 | extern u32 dtcm_end; |
@@ -596,57 +593,16 @@ void __init mem_init(void) | |||
596 | 593 | ||
597 | /* this will put all unused low memory onto the freelists */ | 594 | /* this will put all unused low memory onto the freelists */ |
598 | free_unused_memmap(&meminfo); | 595 | free_unused_memmap(&meminfo); |
599 | 596 | free_all_bootmem(); | |
600 | totalram_pages += free_all_bootmem(); | ||
601 | 597 | ||
602 | #ifdef CONFIG_SA1111 | 598 | #ifdef CONFIG_SA1111 |
603 | /* now that our DMA memory is actually so designated, we can free it */ | 599 | /* now that our DMA memory is actually so designated, we can free it */ |
604 | free_reserved_area(__va(PHYS_PFN_OFFSET), swapper_pg_dir, 0, NULL); | 600 | free_reserved_area(__va(PHYS_PFN_OFFSET), swapper_pg_dir, -1, NULL); |
605 | #endif | 601 | #endif |
606 | 602 | ||
607 | free_highpages(); | 603 | free_highpages(); |
608 | 604 | ||
609 | reserved_pages = free_pages = 0; | 605 | mem_init_print_info(NULL); |
610 | |||
611 | for_each_bank(i, &meminfo) { | ||
612 | struct membank *bank = &meminfo.bank[i]; | ||
613 | unsigned int pfn1, pfn2; | ||
614 | struct page *page, *end; | ||
615 | |||
616 | pfn1 = bank_pfn_start(bank); | ||
617 | pfn2 = bank_pfn_end(bank); | ||
618 | |||
619 | page = pfn_to_page(pfn1); | ||
620 | end = pfn_to_page(pfn2 - 1) + 1; | ||
621 | |||
622 | do { | ||
623 | if (PageReserved(page)) | ||
624 | reserved_pages++; | ||
625 | else if (!page_count(page)) | ||
626 | free_pages++; | ||
627 | page++; | ||
628 | } while (page < end); | ||
629 | } | ||
630 | |||
631 | /* | ||
632 | * Since our memory may not be contiguous, calculate the | ||
633 | * real number of pages we have in this system | ||
634 | */ | ||
635 | printk(KERN_INFO "Memory:"); | ||
636 | num_physpages = 0; | ||
637 | for_each_memblock(memory, reg) { | ||
638 | unsigned long pages = memblock_region_memory_end_pfn(reg) - | ||
639 | memblock_region_memory_base_pfn(reg); | ||
640 | num_physpages += pages; | ||
641 | printk(" %ldMB", pages >> (20 - PAGE_SHIFT)); | ||
642 | } | ||
643 | printk(" = %luMB total\n", num_physpages >> (20 - PAGE_SHIFT)); | ||
644 | |||
645 | printk(KERN_NOTICE "Memory: %luk/%luk available, %luk reserved, %luK highmem\n", | ||
646 | nr_free_pages() << (PAGE_SHIFT-10), | ||
647 | free_pages << (PAGE_SHIFT-10), | ||
648 | reserved_pages << (PAGE_SHIFT-10), | ||
649 | totalhigh_pages << (PAGE_SHIFT-10)); | ||
650 | 606 | ||
651 | #define MLK(b, t) b, t, ((t) - (b)) >> 10 | 607 | #define MLK(b, t) b, t, ((t) - (b)) >> 10 |
652 | #define MLM(b, t) b, t, ((t) - (b)) >> 20 | 608 | #define MLM(b, t) b, t, ((t) - (b)) >> 20 |
@@ -712,7 +668,7 @@ void __init mem_init(void) | |||
712 | BUG_ON(PKMAP_BASE + LAST_PKMAP * PAGE_SIZE > PAGE_OFFSET); | 668 | BUG_ON(PKMAP_BASE + LAST_PKMAP * PAGE_SIZE > PAGE_OFFSET); |
713 | #endif | 669 | #endif |
714 | 670 | ||
715 | if (PAGE_SIZE >= 16384 && num_physpages <= 128) { | 671 | if (PAGE_SIZE >= 16384 && get_num_physpages() <= 128) { |
716 | extern int sysctl_overcommit_memory; | 672 | extern int sysctl_overcommit_memory; |
717 | /* | 673 | /* |
718 | * On a machine this small we won't get | 674 | * On a machine this small we won't get |
@@ -729,12 +685,12 @@ void free_initmem(void) | |||
729 | extern char __tcm_start, __tcm_end; | 685 | extern char __tcm_start, __tcm_end; |
730 | 686 | ||
731 | poison_init_mem(&__tcm_start, &__tcm_end - &__tcm_start); | 687 | poison_init_mem(&__tcm_start, &__tcm_end - &__tcm_start); |
732 | free_reserved_area(&__tcm_start, &__tcm_end, 0, "TCM link"); | 688 | free_reserved_area(&__tcm_start, &__tcm_end, -1, "TCM link"); |
733 | #endif | 689 | #endif |
734 | 690 | ||
735 | poison_init_mem(__init_begin, __init_end - __init_begin); | 691 | poison_init_mem(__init_begin, __init_end - __init_begin); |
736 | if (!machine_is_integrator() && !machine_is_cintegrator()) | 692 | if (!machine_is_integrator() && !machine_is_cintegrator()) |
737 | free_initmem_default(0); | 693 | free_initmem_default(-1); |
738 | } | 694 | } |
739 | 695 | ||
740 | #ifdef CONFIG_BLK_DEV_INITRD | 696 | #ifdef CONFIG_BLK_DEV_INITRD |
@@ -745,7 +701,7 @@ void free_initrd_mem(unsigned long start, unsigned long end) | |||
745 | { | 701 | { |
746 | if (!keep_initrd) { | 702 | if (!keep_initrd) { |
747 | poison_init_mem((void *)start, PAGE_ALIGN(end) - start); | 703 | poison_init_mem((void *)start, PAGE_ALIGN(end) - start); |
748 | free_reserved_area(start, end, 0, "initrd"); | 704 | free_reserved_area((void *)start, (void *)end, -1, "initrd"); |
749 | } | 705 | } |
750 | } | 706 | } |
751 | 707 | ||