diff options
| author | Jiang Liu <liuj97@gmail.com> | 2013-04-29 18:07:11 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-04-29 18:54:32 -0400 |
| commit | 5b472b2057f5bac344a94ab85c621235202ab9a4 (patch) | |
| tree | e75988c49baf06d147fad2c50d00a0726e54dcb8 /arch/um/kernel | |
| parent | 32e1a109276e96f4caec97305167260522476e4a (diff) | |
mm/um: use free_highmem_page() to free highmem pages into buddy system
Use helper function free_highmem_page() to free highmem pages into
the buddy system.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Cc: Jeff Dike <jdike@addtoit.com>
Cc: Richard Weinberger <richard@nod.at>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/um/kernel')
| -rw-r--r-- | arch/um/kernel/mem.c | 16 |
1 files changed, 3 insertions, 13 deletions
diff --git a/arch/um/kernel/mem.c b/arch/um/kernel/mem.c index d5ac80299cda..9df292b270a8 100644 --- a/arch/um/kernel/mem.c +++ b/arch/um/kernel/mem.c | |||
| @@ -42,17 +42,12 @@ static unsigned long brk_end; | |||
| 42 | static void setup_highmem(unsigned long highmem_start, | 42 | static void setup_highmem(unsigned long highmem_start, |
| 43 | unsigned long highmem_len) | 43 | unsigned long highmem_len) |
| 44 | { | 44 | { |
| 45 | struct page *page; | ||
| 46 | unsigned long highmem_pfn; | 45 | unsigned long highmem_pfn; |
| 47 | int i; | 46 | int i; |
| 48 | 47 | ||
| 49 | highmem_pfn = __pa(highmem_start) >> PAGE_SHIFT; | 48 | highmem_pfn = __pa(highmem_start) >> PAGE_SHIFT; |
| 50 | for (i = 0; i < highmem_len >> PAGE_SHIFT; i++) { | 49 | for (i = 0; i < highmem_len >> PAGE_SHIFT; i++) |
| 51 | page = &mem_map[highmem_pfn + i]; | 50 | free_highmem_page(&mem_map[highmem_pfn + i]); |
| 52 | ClearPageReserved(page); | ||
| 53 | init_page_count(page); | ||
| 54 | __free_page(page); | ||
| 55 | } | ||
| 56 | } | 51 | } |
| 57 | #endif | 52 | #endif |
| 58 | 53 | ||
| @@ -73,18 +68,13 @@ void __init mem_init(void) | |||
| 73 | totalram_pages = free_all_bootmem(); | 68 | totalram_pages = free_all_bootmem(); |
| 74 | max_low_pfn = totalram_pages; | 69 | max_low_pfn = totalram_pages; |
| 75 | #ifdef CONFIG_HIGHMEM | 70 | #ifdef CONFIG_HIGHMEM |
| 76 | totalhigh_pages = highmem >> PAGE_SHIFT; | 71 | setup_highmem(end_iomem, highmem); |
| 77 | totalram_pages += totalhigh_pages; | ||
| 78 | #endif | 72 | #endif |
| 79 | num_physpages = totalram_pages; | 73 | num_physpages = totalram_pages; |
| 80 | max_pfn = totalram_pages; | 74 | max_pfn = totalram_pages; |
| 81 | printk(KERN_INFO "Memory: %luk available\n", | 75 | printk(KERN_INFO "Memory: %luk available\n", |
| 82 | nr_free_pages() << (PAGE_SHIFT-10)); | 76 | nr_free_pages() << (PAGE_SHIFT-10)); |
| 83 | kmalloc_ok = 1; | 77 | kmalloc_ok = 1; |
| 84 | |||
| 85 | #ifdef CONFIG_HIGHMEM | ||
| 86 | setup_highmem(end_iomem, highmem); | ||
| 87 | #endif | ||
| 88 | } | 78 | } |
| 89 | 79 | ||
| 90 | /* | 80 | /* |
