diff options
Diffstat (limited to 'arch/ia64/mm')
| -rw-r--r-- | arch/ia64/mm/contig.c | 68 | ||||
| -rw-r--r-- | arch/ia64/mm/discontig.c | 63 | ||||
| -rw-r--r-- | arch/ia64/mm/hugetlbpage.c | 5 | ||||
| -rw-r--r-- | arch/ia64/mm/init.c | 52 | 
4 files changed, 49 insertions, 139 deletions
diff --git a/arch/ia64/mm/contig.c b/arch/ia64/mm/contig.c index da5237d636d..52715a71aed 100644 --- a/arch/ia64/mm/contig.c +++ b/arch/ia64/mm/contig.c @@ -31,74 +31,6 @@  static unsigned long max_gap;  #endif -/** - * 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 i, total_reserved = 0; -	int total_shared = 0, total_cached = 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"); -	if (filter & SHOW_MEM_FILTER_PAGE_COUNT) -		return; -	for_each_online_pgdat(pgdat) { -		unsigned long present; -		unsigned long flags; -		int shared = 0, cached = 0, reserved = 0; -		int nid = pgdat->node_id; - -		if (skip_free_areas_node(filter, nid)) -			continue; -		pgdat_resize_lock(pgdat, &flags); -		present = pgdat->node_present_pages; -		for(i = 0; i < pgdat->node_spanned_pages; i++) { -			struct page *page; -			if (unlikely(i % MAX_ORDER_NR_PAGES == 0)) -				touch_nmi_watchdog(); -			if (pfn_valid(pgdat->node_start_pfn + i)) -				page = pfn_to_page(pgdat->node_start_pfn + i); -			else { -#ifdef CONFIG_VIRTUAL_MEM_MAP -				if (max_gap < LARGE_GAP) -					continue; -#endif -				i = vmemmap_find_next_valid_pfn(nid, i) - 1; -				continue; -			} -			if (PageReserved(page)) -				reserved++; -			else if (PageSwapCache(page)) -				cached++; -			else if (page_count(page)) -				shared += page_count(page)-1; -		} -		pgdat_resize_unlock(pgdat, &flags); -		total_present += present; -		total_reserved += reserved; -		total_cached += cached; -		total_shared += shared; -		printk(KERN_INFO "Node %4d:  RAM: %11ld, rsvd: %8d, " -		       "shrd: %10d, swpd: %10d\n", nid, -		       present, reserved, shared, cached); -	} -	printk(KERN_INFO "%ld pages of RAM\n", total_present); -	printk(KERN_INFO "%d reserved pages\n", total_reserved); -	printk(KERN_INFO "%d pages shared\n", total_shared); -	printk(KERN_INFO "%d pages swap cached\n", total_cached); -	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()); -} - -  /* physical address where the bootmem map is located */  unsigned long bootmap_start; diff --git a/arch/ia64/mm/discontig.c b/arch/ia64/mm/discontig.c index 2de08f4d993..87862680536 100644 --- a/arch/ia64/mm/discontig.c +++ b/arch/ia64/mm/discontig.c @@ -608,69 +608,6 @@ void *per_cpu_init(void)  #endif /* CONFIG_SMP */  /** - * 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 i, total_reserved = 0; -	int total_shared = 0, total_cached = 0; -	unsigned long total_present = 0; -	pg_data_t *pgdat; - -	printk(KERN_INFO "Mem-info:\n"); -	show_free_areas(filter); -	if (filter & SHOW_MEM_FILTER_PAGE_COUNT) -		return; -	printk(KERN_INFO "Node memory in pages:\n"); -	for_each_online_pgdat(pgdat) { -		unsigned long present; -		unsigned long flags; -		int shared = 0, cached = 0, reserved = 0; -		int nid = pgdat->node_id; - -		if (skip_free_areas_node(filter, nid)) -			continue; -		pgdat_resize_lock(pgdat, &flags); -		present = pgdat->node_present_pages; -		for(i = 0; i < pgdat->node_spanned_pages; i++) { -			struct page *page; -			if (unlikely(i % MAX_ORDER_NR_PAGES == 0)) -				touch_nmi_watchdog(); -			if (pfn_valid(pgdat->node_start_pfn + i)) -				page = pfn_to_page(pgdat->node_start_pfn + i); -			else { -				i = vmemmap_find_next_valid_pfn(nid, i) - 1; -				continue; -			} -			if (PageReserved(page)) -				reserved++; -			else if (PageSwapCache(page)) -				cached++; -			else if (page_count(page)) -				shared += page_count(page)-1; -		} -		pgdat_resize_unlock(pgdat, &flags); -		total_present += present; -		total_reserved += reserved; -		total_cached += cached; -		total_shared += shared; -		printk(KERN_INFO "Node %4d:  RAM: %11ld, rsvd: %8d, " -		       "shrd: %10d, swpd: %10d\n", nid, -		       present, reserved, shared, cached); -	} -	printk(KERN_INFO "%ld pages of RAM\n", total_present); -	printk(KERN_INFO "%d reserved pages\n", total_reserved); -	printk(KERN_INFO "%d pages shared\n", total_shared); -	printk(KERN_INFO "%d pages swap cached\n", total_cached); -	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()); -} - -/**   * call_pernode_memory - use SRAT to call callback functions with node info   * @start: physical start of range   * @len: length of range diff --git a/arch/ia64/mm/hugetlbpage.c b/arch/ia64/mm/hugetlbpage.c index 68232db98ba..76069c18ee4 100644 --- a/arch/ia64/mm/hugetlbpage.c +++ b/arch/ia64/mm/hugetlbpage.c @@ -114,11 +114,6 @@ int pud_huge(pud_t pud)  	return 0;  } -int pmd_huge_support(void) -{ -	return 0; -} -  struct page *  follow_huge_pmd(struct mm_struct *mm, unsigned long address, pmd_t *pmd, int write)  { 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()); +}  | 
