]> Pileus Git - ~andy/linux/blobdiff - arch/x86/mm/init_64.c
Merge remote-tracking branch 'asoc/fix/wm8994' into asoc-linus
[~andy/linux] / arch / x86 / mm / init_64.c
index b7bdf7bebf3b7192895af20a6f8340e78b53ae73..104d56a9245f1ea071009dc49e3bd25a2c48383b 100644 (file)
@@ -712,36 +712,22 @@ EXPORT_SYMBOL_GPL(arch_add_memory);
 
 static void __meminit free_pagetable(struct page *page, int order)
 {
-       struct zone *zone;
-       bool bootmem = false;
        unsigned long magic;
        unsigned int nr_pages = 1 << order;
 
        /* bootmem page has reserved flag */
        if (PageReserved(page)) {
                __ClearPageReserved(page);
-               bootmem = true;
 
                magic = (unsigned long)page->lru.next;
                if (magic == SECTION_INFO || magic == MIX_SECTION_INFO) {
                        while (nr_pages--)
                                put_page_bootmem(page++);
                } else
-                       __free_pages_bootmem(page, order);
+                       while (nr_pages--)
+                               free_reserved_page(page++);
        } else
                free_pages((unsigned long)page_address(page), order);
-
-       /*
-        * SECTION_INFO pages and MIX_SECTION_INFO pages
-        * are all allocated by bootmem.
-        */
-       if (bootmem) {
-               zone = page_zone(page);
-               zone_span_writelock(zone);
-               zone->present_pages += nr_pages;
-               zone_span_writeunlock(zone);
-               totalram_pages += nr_pages;
-       }
 }
 
 static void __meminit free_pte_table(pte_t *pte_start, pmd_t *pmd)
@@ -1058,9 +1044,6 @@ static void __init register_page_bootmem_info(void)
 
 void __init mem_init(void)
 {
-       long codesize, reservedpages, datasize, initsize;
-       unsigned long absent_pages;
-
        pci_iommu_alloc();
 
        /* clear_bss() already clear the empty_zero_page */
@@ -1068,29 +1051,14 @@ void __init mem_init(void)
        register_page_bootmem_info();
 
        /* this will put all memory onto the freelists */
-       totalram_pages = free_all_bootmem();
-
-       absent_pages = absent_pages_in_range(0, max_pfn);
-       reservedpages = max_pfn - totalram_pages - absent_pages;
+       free_all_bootmem();
        after_bootmem = 1;
 
-       codesize =  (unsigned long) &_etext - (unsigned long) &_text;
-       datasize =  (unsigned long) &_edata - (unsigned long) &_etext;
-       initsize =  (unsigned long) &__init_end - (unsigned long) &__init_begin;
-
        /* Register memory areas for /proc/kcore */
        kclist_add(&kcore_vsyscall, (void *)VSYSCALL_START,
                         VSYSCALL_END - VSYSCALL_START, KCORE_OTHER);
 
-       printk(KERN_INFO "Memory: %luk/%luk available (%ldk kernel code, "
-                        "%ldk absent, %ldk reserved, %ldk data, %ldk init)\n",
-               nr_free_pages() << (PAGE_SHIFT-10),
-               max_pfn << (PAGE_SHIFT-10),
-               codesize >> 10,
-               absent_pages << (PAGE_SHIFT-10),
-               reservedpages << (PAGE_SHIFT-10),
-               datasize >> 10,
-               initsize >> 10);
+       mem_init_print_info(NULL);
 }
 
 #ifdef CONFIG_DEBUG_RODATA