Commit 80d6170a289a1201480242d3570c5d7606ea1de9
1 parent
d6517c4c19
Exists in
ti-lsk-linux-4.1.y
and in
10 other branches
CRIS: Update init memory handling
- Add free_initrd_mem as found by Guenter Roeck <linux@roeck-us.net> - Add free_init_pages - Export empty_zero_page symbol Signed-off-by: Jesper Nilsson <jesper.nilsson@axis.com>
Showing 1 changed file with 33 additions and 5 deletions Side-by-side Diff
arch/cris/mm/init.c
... | ... | @@ -11,13 +11,15 @@ |
11 | 11 | #include <linux/gfp.h> |
12 | 12 | #include <linux/init.h> |
13 | 13 | #include <linux/bootmem.h> |
14 | +#include <linux/proc_fs.h> | |
15 | +#include <linux/kcore.h> | |
14 | 16 | #include <asm/tlb.h> |
15 | 17 | #include <asm/sections.h> |
16 | 18 | |
17 | 19 | unsigned long empty_zero_page; |
20 | +EXPORT_SYMBOL(empty_zero_page); | |
18 | 21 | |
19 | -void __init | |
20 | -mem_init(void) | |
22 | +void __init mem_init(void) | |
21 | 23 | { |
22 | 24 | BUG_ON(!mem_map); |
23 | 25 | |
24 | 26 | |
25 | 27 | |
26 | 28 | |
... | ... | @@ -31,11 +33,37 @@ |
31 | 33 | mem_init_print_info(NULL); |
32 | 34 | } |
33 | 35 | |
34 | -/* free the pages occupied by initialization code */ | |
36 | +/* Free a range of init pages. Virtual addresses. */ | |
35 | 37 | |
36 | -void | |
37 | -free_initmem(void) | |
38 | +void free_init_pages(const char *what, unsigned long begin, unsigned long end) | |
38 | 39 | { |
40 | + unsigned long addr; | |
41 | + | |
42 | + for (addr = begin; addr < end; addr += PAGE_SIZE) { | |
43 | + ClearPageReserved(virt_to_page(addr)); | |
44 | + init_page_count(virt_to_page(addr)); | |
45 | + free_page(addr); | |
46 | + totalram_pages++; | |
47 | + } | |
48 | + | |
49 | + printk(KERN_INFO "Freeing %s: %ldk freed\n", what, (end - begin) >> 10); | |
50 | +} | |
51 | + | |
52 | +/* Free the pages occupied by initialization code. */ | |
53 | + | |
54 | +void free_initmem(void) | |
55 | +{ | |
39 | 56 | free_initmem_default(-1); |
40 | 57 | } |
58 | + | |
59 | +/* Free the pages occupied by initrd code. */ | |
60 | + | |
61 | +#ifdef CONFIG_BLK_DEV_INITRD | |
62 | +void free_initrd_mem(unsigned long start, unsigned long end) | |
63 | +{ | |
64 | + free_init_pages("initrd memory", | |
65 | + start, | |
66 | + end); | |
67 | +} | |
68 | +#endif |