diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-10-27 19:37:06 +0100 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-10-28 13:54:43 +0100 |
commit | d0e775afb94d9b61ba6c63299169ef7a87b68189 (patch) | |
tree | 39e9739f198e892d91d84792f56007f409906102 /arch/arm/mm/init.c | |
parent | 47ea3c15498154f634c304e08dee284efdd7dceb (diff) | |
download | op-kernel-dev-d0e775afb94d9b61ba6c63299169ef7a87b68189.zip op-kernel-dev-d0e775afb94d9b61ba6c63299169ef7a87b68189.tar.gz |
ARM: move freeing of highmem pages out of mem_init()
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mm/init.c')
-rw-r--r-- | arch/arm/mm/init.c | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c index 58b90ad..1b4e0ab 100644 --- a/arch/arm/mm/init.c +++ b/arch/arm/mm/init.c @@ -436,6 +436,22 @@ static void __init free_unused_memmap(struct meminfo *mi) } } +static void __init free_highpages(void) +{ +#ifdef CONFIG_HIGHMEM + int i; + + /* set highmem page free */ + for_each_bank (i, &meminfo) { + unsigned long start = bank_pfn_start(&meminfo.bank[i]); + unsigned long end = bank_pfn_end(&meminfo.bank[i]); + if (start >= max_low_pfn + PHYS_PFN_OFFSET) + totalhigh_pages += free_area(start, end, NULL); + } + totalram_pages += totalhigh_pages; +#endif +} + /* * mem_init() marks the free areas in the mem_map and tells us how much * memory is free. This is done after various parts of the system have @@ -465,16 +481,7 @@ void __init mem_init(void) __phys_to_pfn(__pa(swapper_pg_dir)), NULL); #endif -#ifdef CONFIG_HIGHMEM - /* set highmem page free */ - for_each_bank (i, &meminfo) { - unsigned long start = bank_pfn_start(&meminfo.bank[i]); - unsigned long end = bank_pfn_end(&meminfo.bank[i]); - if (start >= max_low_pfn + PHYS_PFN_OFFSET) - totalhigh_pages += free_area(start, end, NULL); - } - totalram_pages += totalhigh_pages; -#endif + free_highpages(); reserved_pages = free_pages = 0; |