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 f1f7409a418..cd76c454942 100644 --- a/arch/powerpc/mm/mem.c +++ b/arch/powerpc/mm/mem.c @@ -352,13 +352,9 @@ void __init mem_init(void)  			struct page *page = pfn_to_page(pfn);  			if (memblock_is_reserved(paddr))  				continue; -			ClearPageReserved(page); -			init_page_count(page); -			__free_page(page); -			totalhigh_pages++; +			free_highmem_page(page);  			reservedpages--;  		} -		totalram_pages += totalhigh_pages;  		printk(KERN_DEBUG "High memory: %luk\n",  		       totalhigh_pages << (PAGE_SHIFT-10));  	} @@ -405,39 +401,14 @@ void __init mem_init(void)  void free_initmem(void)  { -	unsigned long addr; -  	ppc_md.progress = ppc_printk_progress; - -	addr = (unsigned long)__init_begin; -	for (; addr < (unsigned long)__init_end; addr += PAGE_SIZE) { -		memset((void *)addr, POISON_FREE_INITMEM, PAGE_SIZE); -		ClearPageReserved(virt_to_page(addr)); -		init_page_count(virt_to_page(addr)); -		free_page(addr); -		totalram_pages++; -	} -	pr_info("Freeing unused kernel memory: %luk freed\n", -		((unsigned long)__init_end - -		(unsigned long)__init_begin) >> 10); +	free_initmem_default(POISON_FREE_INITMEM);  }  #ifdef CONFIG_BLK_DEV_INITRD  void __init free_initrd_mem(unsigned long start, unsigned long end)  { -	if (start >= end) -		return; - -	start = _ALIGN_DOWN(start, PAGE_SIZE); -	end = _ALIGN_UP(end, PAGE_SIZE); -	pr_info("Freeing initrd memory: %ldk freed\n", (end - start) >> 10); - -	for (; start < end; start += PAGE_SIZE) { -		ClearPageReserved(virt_to_page(start)); -		init_page_count(virt_to_page(start)); -		free_page(start); -		totalram_pages++; -	} +	free_reserved_area(start, end, 0, "initrd");  }  #endif  |