diff options
author | Jiang Liu <liuj97@gmail.com> | 2013-07-03 18:04:14 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-03 19:07:37 -0400 |
commit | dceccbe9209bded817f39c01a8a8bd1e69d6277a (patch) | |
tree | 382f83846a1fc12fd739631c1305b15d9b524bc1 /arch/sparc | |
parent | da61efcfedabf16e994d67f983588683f3d59837 (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>
Diffstat (limited to 'arch/sparc')
-rw-r--r-- | arch/sparc/kernel/leon_smp.c | 3 | ||||
-rw-r--r-- | arch/sparc/mm/init_32.c | 34 | ||||
-rw-r--r-- | arch/sparc/mm/init_64.c | 24 |
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 | ||
289 | void __init mem_init(void) | 289 | void __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 | ||
366 | void free_initmem (void) | 340 | void 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 |
372 | void free_initrd_mem(unsigned long start, unsigned long end) | 346 | void 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 | } |
2046 | void __init mem_init(void) | 2046 | void __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 |
2132 | void free_initrd_mem(unsigned long start, unsigned long end) | 2114 | void 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 | ||