diff options
Diffstat (limited to 'arch/powerpc/mm/mem.c')
-rw-r--r-- | arch/powerpc/mm/mem.c | 59 |
1 files changed, 6 insertions, 53 deletions
diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c index 0988a26e0413..1cb1ea133a2c 100644 --- a/arch/powerpc/mm/mem.c +++ b/arch/powerpc/mm/mem.c | |||
@@ -299,47 +299,13 @@ void __init paging_init(void) | |||
299 | 299 | ||
300 | void __init mem_init(void) | 300 | void __init mem_init(void) |
301 | { | 301 | { |
302 | #ifdef CONFIG_NEED_MULTIPLE_NODES | ||
303 | int nid; | ||
304 | #endif | ||
305 | pg_data_t *pgdat; | ||
306 | unsigned long i; | ||
307 | struct page *page; | ||
308 | unsigned long reservedpages = 0, codesize, initsize, datasize, bsssize; | ||
309 | |||
310 | #ifdef CONFIG_SWIOTLB | 302 | #ifdef CONFIG_SWIOTLB |
311 | swiotlb_init(0); | 303 | swiotlb_init(0); |
312 | #endif | 304 | #endif |
313 | 305 | ||
314 | num_physpages = memblock_phys_mem_size() >> PAGE_SHIFT; | ||
315 | high_memory = (void *) __va(max_low_pfn * PAGE_SIZE); | 306 | high_memory = (void *) __va(max_low_pfn * PAGE_SIZE); |
316 | 307 | set_max_mapnr(max_pfn); | |
317 | #ifdef CONFIG_NEED_MULTIPLE_NODES | 308 | free_all_bootmem(); |
318 | for_each_online_node(nid) { | ||
319 | if (NODE_DATA(nid)->node_spanned_pages != 0) { | ||
320 | printk("freeing bootmem node %d\n", nid); | ||
321 | totalram_pages += | ||
322 | free_all_bootmem_node(NODE_DATA(nid)); | ||
323 | } | ||
324 | } | ||
325 | #else | ||
326 | max_mapnr = max_pfn; | ||
327 | totalram_pages += free_all_bootmem(); | ||
328 | #endif | ||
329 | for_each_online_pgdat(pgdat) { | ||
330 | for (i = 0; i < pgdat->node_spanned_pages; i++) { | ||
331 | if (!pfn_valid(pgdat->node_start_pfn + i)) | ||
332 | continue; | ||
333 | page = pgdat_page_nr(pgdat, i); | ||
334 | if (PageReserved(page)) | ||
335 | reservedpages++; | ||
336 | } | ||
337 | } | ||
338 | |||
339 | codesize = (unsigned long)&_sdata - (unsigned long)&_stext; | ||
340 | datasize = (unsigned long)&_edata - (unsigned long)&_sdata; | ||
341 | initsize = (unsigned long)&__init_end - (unsigned long)&__init_begin; | ||
342 | bsssize = (unsigned long)&__bss_stop - (unsigned long)&__bss_start; | ||
343 | 309 | ||
344 | #ifdef CONFIG_HIGHMEM | 310 | #ifdef CONFIG_HIGHMEM |
345 | { | 311 | { |
@@ -349,13 +315,9 @@ void __init mem_init(void) | |||
349 | for (pfn = highmem_mapnr; pfn < max_mapnr; ++pfn) { | 315 | for (pfn = highmem_mapnr; pfn < max_mapnr; ++pfn) { |
350 | phys_addr_t paddr = (phys_addr_t)pfn << PAGE_SHIFT; | 316 | phys_addr_t paddr = (phys_addr_t)pfn << PAGE_SHIFT; |
351 | struct page *page = pfn_to_page(pfn); | 317 | struct page *page = pfn_to_page(pfn); |
352 | if (memblock_is_reserved(paddr)) | 318 | if (!memblock_is_reserved(paddr)) |
353 | continue; | 319 | free_highmem_page(page); |
354 | free_highmem_page(page); | ||
355 | reservedpages--; | ||
356 | } | 320 | } |
357 | printk(KERN_DEBUG "High memory: %luk\n", | ||
358 | totalhigh_pages << (PAGE_SHIFT-10)); | ||
359 | } | 321 | } |
360 | #endif /* CONFIG_HIGHMEM */ | 322 | #endif /* CONFIG_HIGHMEM */ |
361 | 323 | ||
@@ -368,16 +330,7 @@ void __init mem_init(void) | |||
368 | (mfspr(SPRN_TLB1CFG) & TLBnCFG_N_ENTRY) - 1; | 330 | (mfspr(SPRN_TLB1CFG) & TLBnCFG_N_ENTRY) - 1; |
369 | #endif | 331 | #endif |
370 | 332 | ||
371 | printk(KERN_INFO "Memory: %luk/%luk available (%luk kernel code, " | 333 | mem_init_print_info(NULL); |
372 | "%luk reserved, %luk data, %luk bss, %luk init)\n", | ||
373 | nr_free_pages() << (PAGE_SHIFT-10), | ||
374 | num_physpages << (PAGE_SHIFT-10), | ||
375 | codesize >> 10, | ||
376 | reservedpages << (PAGE_SHIFT-10), | ||
377 | datasize >> 10, | ||
378 | bsssize >> 10, | ||
379 | initsize >> 10); | ||
380 | |||
381 | #ifdef CONFIG_PPC32 | 334 | #ifdef CONFIG_PPC32 |
382 | pr_info("Kernel virtual memory layout:\n"); | 335 | pr_info("Kernel virtual memory layout:\n"); |
383 | pr_info(" * 0x%08lx..0x%08lx : fixmap\n", FIXADDR_START, FIXADDR_TOP); | 336 | pr_info(" * 0x%08lx..0x%08lx : fixmap\n", FIXADDR_START, FIXADDR_TOP); |
@@ -407,7 +360,7 @@ void free_initmem(void) | |||
407 | #ifdef CONFIG_BLK_DEV_INITRD | 360 | #ifdef CONFIG_BLK_DEV_INITRD |
408 | void __init free_initrd_mem(unsigned long start, unsigned long end) | 361 | void __init free_initrd_mem(unsigned long start, unsigned long end) |
409 | { | 362 | { |
410 | free_reserved_area(start, end, 0, "initrd"); | 363 | free_reserved_area((void *)start, (void *)end, -1, "initrd"); |
411 | } | 364 | } |
412 | #endif | 365 | #endif |
413 | 366 | ||