diff options
Diffstat (limited to 'arch/ia64/mm/init.c')
| -rw-r--r-- | arch/ia64/mm/init.c | 52 | 
1 files changed, 49 insertions, 3 deletions
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c index b6f7f43424e..25c350264a4 100644 --- a/arch/ia64/mm/init.c +++ b/arch/ia64/mm/init.c @@ -357,9 +357,7 @@ int vmemmap_find_next_valid_pfn(int node, int i)  	end_address = (unsigned long) &vmem_map[pgdat->node_start_pfn + i];  	end_address = PAGE_ALIGN(end_address); - -	stop_address = (unsigned long) &vmem_map[ -		pgdat->node_start_pfn + pgdat->node_spanned_pages]; +	stop_address = (unsigned long) &vmem_map[pgdat_end_pfn(pgdat)];  	do {  		pgd_t *pgd; @@ -686,3 +684,51 @@ per_linux32_init(void)  }  __initcall(per_linux32_init); + +/** + * show_mem - give short summary of memory stats + * + * Shows a simple page count of reserved and used pages in the system. + * For discontig machines, it does this on a per-pgdat basis. + */ +void show_mem(unsigned int filter) +{ +	int total_reserved = 0; +	unsigned long total_present = 0; +	pg_data_t *pgdat; + +	printk(KERN_INFO "Mem-info:\n"); +	show_free_areas(filter); +	printk(KERN_INFO "Node memory in pages:\n"); +	for_each_online_pgdat(pgdat) { +		unsigned long present; +		unsigned long flags; +		int reserved = 0; +		int nid = pgdat->node_id; +		int zoneid; + +		if (skip_free_areas_node(filter, nid)) +			continue; +		pgdat_resize_lock(pgdat, &flags); + +		for (zoneid = 0; zoneid < MAX_NR_ZONES; zoneid++) { +			struct zone *zone = &pgdat->node_zones[zoneid]; +			if (!populated_zone(zone)) +				continue; + +			reserved += zone->present_pages - zone->managed_pages; +		} +		present = pgdat->node_present_pages; + +		pgdat_resize_unlock(pgdat, &flags); +		total_present += present; +		total_reserved += reserved; +		printk(KERN_INFO "Node %4d:  RAM: %11ld, rsvd: %8d, ", +		       nid, present, reserved); +	} +	printk(KERN_INFO "%ld pages of RAM\n", total_present); +	printk(KERN_INFO "%d reserved pages\n", total_reserved); +	printk(KERN_INFO "Total of %ld pages in page table cache\n", +	       quicklist_total_size()); +	printk(KERN_INFO "%ld free buffer pages\n", nr_free_buffer_pages()); +}  | 
