diff options
Diffstat (limited to 'arch/powerpc/mm/mem.c')
-rw-r--r-- | arch/powerpc/mm/mem.c | 35 |
1 files changed, 3 insertions, 32 deletions
diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c index f1f7409a4183..cd76c454942f 100644 --- a/arch/powerpc/mm/mem.c +++ b/arch/powerpc/mm/mem.c | |||
@@ -352,13 +352,9 @@ void __init mem_init(void) | |||
352 | struct page *page = pfn_to_page(pfn); | 352 | struct page *page = pfn_to_page(pfn); |
353 | if (memblock_is_reserved(paddr)) | 353 | if (memblock_is_reserved(paddr)) |
354 | continue; | 354 | continue; |
355 | ClearPageReserved(page); | 355 | free_highmem_page(page); |
356 | init_page_count(page); | ||
357 | __free_page(page); | ||
358 | totalhigh_pages++; | ||
359 | reservedpages--; | 356 | reservedpages--; |
360 | } | 357 | } |
361 | totalram_pages += totalhigh_pages; | ||
362 | printk(KERN_DEBUG "High memory: %luk\n", | 358 | printk(KERN_DEBUG "High memory: %luk\n", |
363 | totalhigh_pages << (PAGE_SHIFT-10)); | 359 | totalhigh_pages << (PAGE_SHIFT-10)); |
364 | } | 360 | } |
@@ -405,39 +401,14 @@ void __init mem_init(void) | |||
405 | 401 | ||
406 | void free_initmem(void) | 402 | void free_initmem(void) |
407 | { | 403 | { |
408 | unsigned long addr; | ||
409 | |||
410 | ppc_md.progress = ppc_printk_progress; | 404 | ppc_md.progress = ppc_printk_progress; |
411 | 405 | free_initmem_default(POISON_FREE_INITMEM); | |
412 | addr = (unsigned long)__init_begin; | ||
413 | for (; addr < (unsigned long)__init_end; addr += PAGE_SIZE) { | ||
414 | memset((void *)addr, POISON_FREE_INITMEM, PAGE_SIZE); | ||
415 | ClearPageReserved(virt_to_page(addr)); | ||
416 | init_page_count(virt_to_page(addr)); | ||
417 | free_page(addr); | ||
418 | totalram_pages++; | ||
419 | } | ||
420 | pr_info("Freeing unused kernel memory: %luk freed\n", | ||
421 | ((unsigned long)__init_end - | ||
422 | (unsigned long)__init_begin) >> 10); | ||
423 | } | 406 | } |
424 | 407 | ||
425 | #ifdef CONFIG_BLK_DEV_INITRD | 408 | #ifdef CONFIG_BLK_DEV_INITRD |
426 | void __init free_initrd_mem(unsigned long start, unsigned long end) | 409 | void __init free_initrd_mem(unsigned long start, unsigned long end) |
427 | { | 410 | { |
428 | if (start >= end) | 411 | free_reserved_area(start, end, 0, "initrd"); |
429 | return; | ||
430 | |||
431 | start = _ALIGN_DOWN(start, PAGE_SIZE); | ||
432 | end = _ALIGN_UP(end, PAGE_SIZE); | ||
433 | pr_info("Freeing initrd memory: %ldk freed\n", (end - start) >> 10); | ||
434 | |||
435 | for (; start < end; start += PAGE_SIZE) { | ||
436 | ClearPageReserved(virt_to_page(start)); | ||
437 | init_page_count(virt_to_page(start)); | ||
438 | free_page(start); | ||
439 | totalram_pages++; | ||
440 | } | ||
441 | } | 412 | } |
442 | #endif | 413 | #endif |
443 | 414 | ||