|
@@ -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)
|