Commit 80d6170a289a1201480242d3570c5d7606ea1de9

Authored by Jesper Nilsson
1 parent d6517c4c19

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

... ... @@ -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