diff options
Diffstat (limited to 'arch/mips/mm/init.c')
| -rw-r--r-- | arch/mips/mm/init.c | 38 | 
1 files changed, 11 insertions, 27 deletions
diff --git a/arch/mips/mm/init.c b/arch/mips/mm/init.c index 67929251286..9b973e0af9c 100644 --- a/arch/mips/mm/init.c +++ b/arch/mips/mm/init.c @@ -29,6 +29,7 @@  #include <linux/pfn.h>  #include <linux/hardirq.h>  #include <linux/gfp.h> +#include <linux/kcore.h>  #include <asm/asm-offsets.h>  #include <asm/bootinfo.h> @@ -77,10 +78,9 @@ EXPORT_SYMBOL_GPL(empty_zero_page);  /*   * Not static inline because used by IP27 special magic initialization code   */ -unsigned long setup_zero_pages(void) +void setup_zero_pages(void)  { -	unsigned int order; -	unsigned long size; +	unsigned int order, i;  	struct page *page;  	if (cpu_has_vce) @@ -94,15 +94,10 @@ unsigned long setup_zero_pages(void)  	page = virt_to_page((void *)empty_zero_page);  	split_page(page, order); -	while (page < virt_to_page((void *)(empty_zero_page + (PAGE_SIZE << order)))) { -		SetPageReserved(page); -		page++; -	} - -	size = PAGE_SIZE << order; -	zero_page_mask = (size - 1) & PAGE_MASK; +	for (i = 0; i < (1 << order); i++, page++) +		mark_page_reserved(page); -	return 1UL << order; +	zero_page_mask = ((PAGE_SIZE << order) - 1) & PAGE_MASK;  }  #ifdef CONFIG_MIPS_MT_SMTC @@ -380,7 +375,7 @@ void __init mem_init(void)  	high_memory = (void *) __va(max_low_pfn << PAGE_SHIFT);  	totalram_pages += free_all_bootmem(); -	totalram_pages -= setup_zero_pages();	/* Setup zeroed pages.	*/ +	setup_zero_pages();	/* Setup zeroed pages.  */  	reservedpages = ram = 0;  	for (tmp = 0; tmp < max_low_pfn; tmp++) @@ -399,12 +394,8 @@ void __init mem_init(void)  			SetPageReserved(page);  			continue;  		} -		ClearPageReserved(page); -		init_page_count(page); -		__free_page(page); -		totalhigh_pages++; +		free_highmem_page(page);  	} -	totalram_pages += totalhigh_pages;  	num_physpages += totalhigh_pages;  #endif @@ -440,11 +431,8 @@ void free_init_pages(const char *what, unsigned long begin, unsigned long end)  		struct page *page = pfn_to_page(pfn);  		void *addr = phys_to_virt(PFN_PHYS(pfn)); -		ClearPageReserved(page); -		init_page_count(page);  		memset(addr, POISON_FREE_INITMEM, PAGE_SIZE); -		__free_page(page); -		totalram_pages++; +		free_reserved_page(page);  	}  	printk(KERN_INFO "Freeing %s: %ldk freed\n", what, (end - begin) >> 10);  } @@ -452,18 +440,14 @@ void free_init_pages(const char *what, unsigned long begin, unsigned long end)  #ifdef CONFIG_BLK_DEV_INITRD  void free_initrd_mem(unsigned long start, unsigned long end)  { -	free_init_pages("initrd memory", -			virt_to_phys((void *)start), -			virt_to_phys((void *)end)); +	free_reserved_area(start, end, POISON_FREE_INITMEM, "initrd");  }  #endif  void __init_refok free_initmem(void)  {  	prom_free_prom_memory(); -	free_init_pages("unused kernel memory", -			__pa_symbol(&__init_begin), -			__pa_symbol(&__init_end)); +	free_initmem_default(POISON_FREE_INITMEM);  }  #ifndef CONFIG_MIPS_PGD_C0_CONTEXT  |