diff options
author | Jiang Liu <liuj97@gmail.com> | 2013-07-03 18:03:55 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-03 19:07:36 -0400 |
commit | 3f2b73c3c3e59cb9b94490d664b2439cd9c540e2 (patch) | |
tree | 6e1feb72db842c1e133b0ac4c7f235158d8a0b46 /arch/frv | |
parent | 4e422de996da62e933dcc0fd3c2d7fe513cf32a2 (diff) |
mm/frv: prepare for removing num_physpages and simplify mem_init()
Prepare for removing num_physpages and simplify mem_init().
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Cc: David Howells <dhowells@redhat.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/frv')
-rw-r--r-- | arch/frv/kernel/setup.c | 13 | ||||
-rw-r--r-- | arch/frv/mm/init.c | 49 |
2 files changed, 21 insertions, 41 deletions
diff --git a/arch/frv/kernel/setup.c b/arch/frv/kernel/setup.c index a5136474c6fd..f78f8cb44093 100644 --- a/arch/frv/kernel/setup.c +++ b/arch/frv/kernel/setup.c | |||
@@ -876,6 +876,7 @@ late_initcall(setup_arch_serial); | |||
876 | static void __init setup_linux_memory(void) | 876 | static void __init setup_linux_memory(void) |
877 | { | 877 | { |
878 | unsigned long bootmap_size, low_top_pfn, kstart, kend, high_mem; | 878 | unsigned long bootmap_size, low_top_pfn, kstart, kend, high_mem; |
879 | unsigned long physpages; | ||
879 | 880 | ||
880 | kstart = (unsigned long) &__kernel_image_start - PAGE_OFFSET; | 881 | kstart = (unsigned long) &__kernel_image_start - PAGE_OFFSET; |
881 | kend = (unsigned long) &__kernel_image_end - PAGE_OFFSET; | 882 | kend = (unsigned long) &__kernel_image_end - PAGE_OFFSET; |
@@ -893,19 +894,19 @@ static void __init setup_linux_memory(void) | |||
893 | ); | 894 | ); |
894 | 895 | ||
895 | /* pass the memory that the kernel can immediately use over to the bootmem allocator */ | 896 | /* pass the memory that the kernel can immediately use over to the bootmem allocator */ |
896 | max_mapnr = num_physpages = (memory_end - memory_start) >> PAGE_SHIFT; | 897 | max_mapnr = physpages = (memory_end - memory_start) >> PAGE_SHIFT; |
897 | low_top_pfn = (KERNEL_LOWMEM_END - KERNEL_LOWMEM_START) >> PAGE_SHIFT; | 898 | low_top_pfn = (KERNEL_LOWMEM_END - KERNEL_LOWMEM_START) >> PAGE_SHIFT; |
898 | high_mem = 0; | 899 | high_mem = 0; |
899 | 900 | ||
900 | if (num_physpages > low_top_pfn) { | 901 | if (physpages > low_top_pfn) { |
901 | #ifdef CONFIG_HIGHMEM | 902 | #ifdef CONFIG_HIGHMEM |
902 | high_mem = num_physpages - low_top_pfn; | 903 | high_mem = physpages - low_top_pfn; |
903 | #else | 904 | #else |
904 | max_mapnr = num_physpages = low_top_pfn; | 905 | max_mapnr = physpages = low_top_pfn; |
905 | #endif | 906 | #endif |
906 | } | 907 | } |
907 | else { | 908 | else { |
908 | low_top_pfn = num_physpages; | 909 | low_top_pfn = physpages; |
909 | } | 910 | } |
910 | 911 | ||
911 | min_low_pfn = memory_start >> PAGE_SHIFT; | 912 | min_low_pfn = memory_start >> PAGE_SHIFT; |
@@ -979,7 +980,7 @@ static void __init setup_uclinux_memory(void) | |||
979 | free_bootmem(memory_start, memory_end - memory_start); | 980 | free_bootmem(memory_start, memory_end - memory_start); |
980 | 981 | ||
981 | high_memory = (void *) (memory_end & PAGE_MASK); | 982 | high_memory = (void *) (memory_end & PAGE_MASK); |
982 | max_mapnr = num_physpages = ((unsigned long) high_memory - PAGE_OFFSET) >> PAGE_SHIFT; | 983 | max_mapnr = ((unsigned long) high_memory - PAGE_OFFSET) >> PAGE_SHIFT; |
983 | 984 | ||
984 | min_low_pfn = memory_start >> PAGE_SHIFT; | 985 | min_low_pfn = memory_start >> PAGE_SHIFT; |
985 | max_low_pfn = memory_end >> PAGE_SHIFT; | 986 | max_low_pfn = memory_end >> PAGE_SHIFT; |
diff --git a/arch/frv/mm/init.c b/arch/frv/mm/init.c index 3dcc88803a4f..88a159743528 100644 --- a/arch/frv/mm/init.c +++ b/arch/frv/mm/init.c | |||
@@ -78,7 +78,7 @@ void __init paging_init(void) | |||
78 | memset((void *) empty_zero_page, 0, PAGE_SIZE); | 78 | memset((void *) empty_zero_page, 0, PAGE_SIZE); |
79 | 79 | ||
80 | #ifdef CONFIG_HIGHMEM | 80 | #ifdef CONFIG_HIGHMEM |
81 | if (num_physpages - num_mappedpages) { | 81 | if (get_num_physpages() - num_mappedpages) { |
82 | pgd_t *pge; | 82 | pgd_t *pge; |
83 | pud_t *pue; | 83 | pud_t *pue; |
84 | pmd_t *pme; | 84 | pmd_t *pme; |
@@ -96,7 +96,7 @@ void __init paging_init(void) | |||
96 | */ | 96 | */ |
97 | zones_size[ZONE_NORMAL] = max_low_pfn - min_low_pfn; | 97 | zones_size[ZONE_NORMAL] = max_low_pfn - min_low_pfn; |
98 | #ifdef CONFIG_HIGHMEM | 98 | #ifdef CONFIG_HIGHMEM |
99 | zones_size[ZONE_HIGHMEM] = num_physpages - num_mappedpages; | 99 | zones_size[ZONE_HIGHMEM] = get_num_physpages() - num_mappedpages; |
100 | #endif | 100 | #endif |
101 | 101 | ||
102 | free_area_init(zones_size); | 102 | free_area_init(zones_size); |
@@ -114,45 +114,24 @@ void __init paging_init(void) | |||
114 | */ | 114 | */ |
115 | void __init mem_init(void) | 115 | void __init mem_init(void) |
116 | { | 116 | { |
117 | unsigned long npages = (memory_end - memory_start) >> PAGE_SHIFT; | 117 | unsigned long code_size = _etext - _stext; |
118 | unsigned long tmp; | ||
119 | #ifdef CONFIG_MMU | ||
120 | unsigned long loop, pfn; | ||
121 | int datapages = 0; | ||
122 | #endif | ||
123 | int codek = 0, datak = 0; | ||
124 | 118 | ||
125 | /* this will put all low memory onto the freelists */ | 119 | /* this will put all low memory onto the freelists */ |
126 | free_all_bootmem(); | 120 | free_all_bootmem(); |
121 | #if defined(CONFIG_MMU) && defined(CONFIG_HIGHMEM) | ||
122 | { | ||
123 | unsigned long pfn; | ||
127 | 124 | ||
128 | #ifdef CONFIG_MMU | 125 | for (pfn = get_num_physpages() - 1; |
129 | for (loop = 0 ; loop < npages ; loop++) | 126 | pfn >= num_mappedpages; pfn--) |
130 | if (PageReserved(&mem_map[loop])) | 127 | free_highmem_page(&mem_map[pfn]); |
131 | datapages++; | 128 | } |
132 | |||
133 | #ifdef CONFIG_HIGHMEM | ||
134 | for (pfn = num_physpages - 1; pfn >= num_mappedpages; pfn--) | ||
135 | free_highmem_page(&mem_map[pfn]); | ||
136 | #endif | ||
137 | |||
138 | codek = ((unsigned long) &_etext - (unsigned long) &_stext) >> 10; | ||
139 | datak = datapages << (PAGE_SHIFT - 10); | ||
140 | |||
141 | #else | ||
142 | codek = (_etext - _stext) >> 10; | ||
143 | datak = 0; //(__bss_stop - _sdata) >> 10; | ||
144 | #endif | 129 | #endif |
145 | 130 | ||
146 | tmp = nr_free_pages() << PAGE_SHIFT; | 131 | mem_init_print_info(NULL); |
147 | printk("Memory available: %luKiB/%luKiB RAM, %luKiB/%luKiB ROM (%dKiB kernel code, %dKiB data)\n", | 132 | if (rom_length > 0 && rom_length >= code_size) |
148 | tmp >> 10, | 133 | printk("Memory available: %luKiB/%luKiB ROM\n", |
149 | npages << (PAGE_SHIFT - 10), | 134 | (rom_length - code_size) >> 10, rom_length >> 10); |
150 | (rom_length > 0) ? ((rom_length >> 10) - codek) : 0, | ||
151 | rom_length >> 10, | ||
152 | codek, | ||
153 | datak | ||
154 | ); | ||
155 | |||
156 | } /* end mem_init() */ | 135 | } /* end mem_init() */ |
157 | 136 | ||
158 | /*****************************************************************************/ | 137 | /*****************************************************************************/ |