diff options
author | Jiang Liu <liuj97@gmail.com> | 2013-04-29 18:06:26 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-04-29 18:54:29 -0400 |
commit | 83db0384a92ac4e52dccd275bc1a58dca86d629d (patch) | |
tree | b09b3200b227acac7f5be12d58a9878a40be3e8e /arch/arm64/mm/init.c | |
parent | f3beeb4a51d3aa16571e6c3774b929209e9956bf (diff) |
mm/ARM: use common help functions to free reserved pages
Use common help functions to free reserved pages.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/arm64/mm/init.c')
-rw-r--r-- | arch/arm64/mm/init.c | 26 |
1 files changed, 2 insertions, 24 deletions
diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c index 800aac306a08..f497ca77925a 100644 --- a/arch/arm64/mm/init.c +++ b/arch/arm64/mm/init.c | |||
@@ -197,24 +197,6 @@ void __init bootmem_init(void) | |||
197 | max_pfn = max_low_pfn = max; | 197 | max_pfn = max_low_pfn = max; |
198 | } | 198 | } |
199 | 199 | ||
200 | static inline int free_area(unsigned long pfn, unsigned long end, char *s) | ||
201 | { | ||
202 | unsigned int pages = 0, size = (end - pfn) << (PAGE_SHIFT - 10); | ||
203 | |||
204 | for (; pfn < end; pfn++) { | ||
205 | struct page *page = pfn_to_page(pfn); | ||
206 | ClearPageReserved(page); | ||
207 | init_page_count(page); | ||
208 | __free_page(page); | ||
209 | pages++; | ||
210 | } | ||
211 | |||
212 | if (size && s) | ||
213 | pr_info("Freeing %s memory: %dK\n", s, size); | ||
214 | |||
215 | return pages; | ||
216 | } | ||
217 | |||
218 | /* | 200 | /* |
219 | * Poison init memory with an undefined instruction (0x0). | 201 | * Poison init memory with an undefined instruction (0x0). |
220 | */ | 202 | */ |
@@ -405,9 +387,7 @@ void __init mem_init(void) | |||
405 | void free_initmem(void) | 387 | void free_initmem(void) |
406 | { | 388 | { |
407 | poison_init_mem(__init_begin, __init_end - __init_begin); | 389 | poison_init_mem(__init_begin, __init_end - __init_begin); |
408 | totalram_pages += free_area(__phys_to_pfn(__pa(__init_begin)), | 390 | free_initmem_default(0); |
409 | __phys_to_pfn(__pa(__init_end)), | ||
410 | "init"); | ||
411 | } | 391 | } |
412 | 392 | ||
413 | #ifdef CONFIG_BLK_DEV_INITRD | 393 | #ifdef CONFIG_BLK_DEV_INITRD |
@@ -418,9 +398,7 @@ void free_initrd_mem(unsigned long start, unsigned long end) | |||
418 | { | 398 | { |
419 | if (!keep_initrd) { | 399 | if (!keep_initrd) { |
420 | poison_init_mem((void *)start, PAGE_ALIGN(end) - start); | 400 | poison_init_mem((void *)start, PAGE_ALIGN(end) - start); |
421 | totalram_pages += free_area(__phys_to_pfn(__pa(start)), | 401 | free_reserved_area(start, end, 0, "initrd"); |
422 | __phys_to_pfn(__pa(end)), | ||
423 | "initrd"); | ||
424 | } | 402 | } |
425 | } | 403 | } |
426 | 404 | ||