aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiang Liu <liuj97@gmail.com>2013-07-03 18:04:14 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-07-03 19:07:37 -0400
commitdceccbe9209bded817f39c01a8a8bd1e69d6277a (patch)
tree382f83846a1fc12fd739631c1305b15d9b524bc1
parentda61efcfedabf16e994d67f983588683f3d59837 (diff)
mm/SPARC: 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> Acked-by: Sam Ravnborg <sam@ravnborg.org> Cc: "David S. Miller" <davem@davemloft.net> Cc: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com> Cc: Tang Chen <tangchen@cn.fujitsu.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--arch/sparc/kernel/leon_smp.c3
-rw-r--r--arch/sparc/mm/init_32.c34
-rw-r--r--arch/sparc/mm/init_64.c24
3 files changed, 7 insertions, 54 deletions
diff --git a/arch/sparc/kernel/leon_smp.c b/arch/sparc/kernel/leon_smp.c
index 6cfc1b09ec25..d7aa524b7283 100644
--- a/arch/sparc/kernel/leon_smp.c
+++ b/arch/sparc/kernel/leon_smp.c
@@ -254,15 +254,12 @@ void __init leon_smp_done(void)
254 /* Free unneeded trap tables */ 254 /* Free unneeded trap tables */
255 if (!cpu_present(1)) { 255 if (!cpu_present(1)) {
256 free_reserved_page(virt_to_page(&trapbase_cpu1)); 256 free_reserved_page(virt_to_page(&trapbase_cpu1));
257 num_physpages++;
258 } 257 }
259 if (!cpu_present(2)) { 258 if (!cpu_present(2)) {
260 free_reserved_page(virt_to_page(&trapbase_cpu2)); 259 free_reserved_page(virt_to_page(&trapbase_cpu2));
261 num_physpages++;
262 } 260 }
263 if (!cpu_present(3)) { 261 if (!cpu_present(3)) {
264 free_reserved_page(virt_to_page(&trapbase_cpu3)); 262 free_reserved_page(virt_to_page(&trapbase_cpu3));
265 num_physpages++;
266 } 263 }
267 /* Ok, they are spinning and ready to go. */ 264 /* Ok, they are spinning and ready to go. */
268 smp_processors_ready = 1; 265 smp_processors_ready = 1;
diff --git a/arch/sparc/mm/init_32.c b/arch/sparc/mm/init_32.c
index a438abb5495e..db6987082805 100644
--- a/arch/sparc/mm/init_32.c
+++ b/arch/sparc/mm/init_32.c
@@ -288,10 +288,6 @@ static void map_high_region(unsigned long start_pfn, unsigned long end_pfn)
288 288
289void __init mem_init(void) 289void __init mem_init(void)
290{ 290{
291 int codepages = 0;
292 int datapages = 0;
293 int initpages = 0;
294 int reservedpages = 0;
295 int i; 291 int i;
296 292
297 if (PKMAP_BASE+LAST_PKMAP*PAGE_SIZE >= FIXADDR_START) { 293 if (PKMAP_BASE+LAST_PKMAP*PAGE_SIZE >= FIXADDR_START) {
@@ -329,8 +325,6 @@ void __init mem_init(void)
329 unsigned long start_pfn = sp_banks[i].base_addr >> PAGE_SHIFT; 325 unsigned long start_pfn = sp_banks[i].base_addr >> PAGE_SHIFT;
330 unsigned long end_pfn = (sp_banks[i].base_addr + sp_banks[i].num_bytes) >> PAGE_SHIFT; 326 unsigned long end_pfn = (sp_banks[i].base_addr + sp_banks[i].num_bytes) >> PAGE_SHIFT;
331 327
332 num_physpages += sp_banks[i].num_bytes >> PAGE_SHIFT;
333
334 if (end_pfn <= highstart_pfn) 328 if (end_pfn <= highstart_pfn)
335 continue; 329 continue;
336 330
@@ -340,39 +334,19 @@ void __init mem_init(void)
340 map_high_region(start_pfn, end_pfn); 334 map_high_region(start_pfn, end_pfn);
341 } 335 }
342 336
343 codepages = (((unsigned long) &_etext) - ((unsigned long)&_start)); 337 mem_init_print_info(NULL);
344 codepages = PAGE_ALIGN(codepages) >> PAGE_SHIFT;
345 datapages = (((unsigned long) &_edata) - ((unsigned long)&_etext));
346 datapages = PAGE_ALIGN(datapages) >> PAGE_SHIFT;
347 initpages = (((unsigned long) &__init_end) - ((unsigned long) &__init_begin));
348 initpages = PAGE_ALIGN(initpages) >> PAGE_SHIFT;
349
350 /* Ignore memory holes for the purpose of counting reserved pages */
351 for (i=0; i < max_low_pfn; i++)
352 if (test_bit(i >> (20 - PAGE_SHIFT), sparc_valid_addr_bitmap)
353 && PageReserved(pfn_to_page(i)))
354 reservedpages++;
355
356 printk(KERN_INFO "Memory: %luk/%luk available (%dk kernel code, %dk reserved, %dk data, %dk init, %ldk highmem)\n",
357 nr_free_pages() << (PAGE_SHIFT-10),
358 num_physpages << (PAGE_SHIFT - 10),
359 codepages << (PAGE_SHIFT-10),
360 reservedpages << (PAGE_SHIFT - 10),
361 datapages << (PAGE_SHIFT-10),
362 initpages << (PAGE_SHIFT-10),
363 totalhigh_pages << (PAGE_SHIFT-10));
364} 338}
365 339
366void free_initmem (void) 340void free_initmem (void)
367{ 341{
368 num_physpages += free_initmem_default(POISON_FREE_INITMEM); 342 free_initmem_default(POISON_FREE_INITMEM);
369} 343}
370 344
371#ifdef CONFIG_BLK_DEV_INITRD 345#ifdef CONFIG_BLK_DEV_INITRD
372void free_initrd_mem(unsigned long start, unsigned long end) 346void free_initrd_mem(unsigned long start, unsigned long end)
373{ 347{
374 num_physpages += free_reserved_area((void *)start, (void *)end, 348 free_reserved_area((void *)start, (void *)end, POISON_FREE_INITMEM,
375 POISON_FREE_INITMEM, "initrd"); 349 "initrd");
376} 350}
377#endif 351#endif
378 352
diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c
index 752d73837f9e..a9c42a7ffb6a 100644
--- a/arch/sparc/mm/init_64.c
+++ b/arch/sparc/mm/init_64.c
@@ -2045,7 +2045,6 @@ static void __init register_page_bootmem_info(void)
2045} 2045}
2046void __init mem_init(void) 2046void __init mem_init(void)
2047{ 2047{
2048 unsigned long codepages, datapages, initpages;
2049 unsigned long addr, last; 2048 unsigned long addr, last;
2050 2049
2051 addr = PAGE_OFFSET + kern_base; 2050 addr = PAGE_OFFSET + kern_base;
@@ -2063,11 +2062,6 @@ void __init mem_init(void)
2063 register_page_bootmem_info(); 2062 register_page_bootmem_info();
2064 free_all_bootmem(); 2063 free_all_bootmem();
2065 2064
2066 /* We subtract one to account for the mem_map_zero page
2067 * allocated below.
2068 */
2069 num_physpages = totalram_pages - 1;
2070
2071 /* 2065 /*
2072 * Set up the zero page, mark it reserved, so that page count 2066 * Set up the zero page, mark it reserved, so that page count
2073 * is not manipulated when freeing the page from user ptes. 2067 * is not manipulated when freeing the page from user ptes.
@@ -2079,19 +2073,7 @@ void __init mem_init(void)
2079 } 2073 }
2080 mark_page_reserved(mem_map_zero); 2074 mark_page_reserved(mem_map_zero);
2081 2075
2082 codepages = (((unsigned long) _etext) - ((unsigned long) _start)); 2076 mem_init_print_info(NULL);
2083 codepages = PAGE_ALIGN(codepages) >> PAGE_SHIFT;
2084 datapages = (((unsigned long) _edata) - ((unsigned long) _etext));
2085 datapages = PAGE_ALIGN(datapages) >> PAGE_SHIFT;
2086 initpages = (((unsigned long) __init_end) - ((unsigned long) __init_begin));
2087 initpages = PAGE_ALIGN(initpages) >> PAGE_SHIFT;
2088
2089 printk("Memory: %luk available (%ldk kernel code, %ldk data, %ldk init) [%016lx,%016lx]\n",
2090 nr_free_pages() << (PAGE_SHIFT-10),
2091 codepages << (PAGE_SHIFT-10),
2092 datapages << (PAGE_SHIFT-10),
2093 initpages << (PAGE_SHIFT-10),
2094 PAGE_OFFSET, (last_valid_pfn << PAGE_SHIFT));
2095 2077
2096 if (tlb_type == cheetah || tlb_type == cheetah_plus) 2078 if (tlb_type == cheetah || tlb_type == cheetah_plus)
2097 cheetah_ecache_flush_init(); 2079 cheetah_ecache_flush_init();
@@ -2131,8 +2113,8 @@ void free_initmem(void)
2131#ifdef CONFIG_BLK_DEV_INITRD 2113#ifdef CONFIG_BLK_DEV_INITRD
2132void free_initrd_mem(unsigned long start, unsigned long end) 2114void free_initrd_mem(unsigned long start, unsigned long end)
2133{ 2115{
2134 num_physpages += free_reserved_area((void *)start, (void *)end, 2116 free_reserved_area((void *)start, (void *)end, POISON_FREE_INITMEM,
2135 POISON_FREE_INITMEM, "initrd"); 2117 "initrd");
2136} 2118}
2137#endif 2119#endif
2138 2120