diff options
Diffstat (limited to 'mm/page_ext.c')
| -rw-r--r-- | mm/page_ext.c | 18 | 
1 files changed, 4 insertions, 14 deletions
| diff --git a/mm/page_ext.c b/mm/page_ext.c index c191e490c401..641d93f6af4c 100644 --- a/mm/page_ext.c +++ b/mm/page_ext.c @@ -214,8 +214,7 @@ static int __init alloc_node_page_ext(int nid)  		return -ENOMEM;  	NODE_DATA(nid)->node_page_ext = base;  	total_usage += table_size; -	mod_node_page_state(NODE_DATA(nid), NR_MEMMAP_BOOT, -			    DIV_ROUND_UP(table_size, PAGE_SIZE)); +	memmap_boot_pages_add(DIV_ROUND_UP(table_size, PAGE_SIZE));  	return 0;  } @@ -275,10 +274,8 @@ static void *__meminit alloc_page_ext(size_t size, int nid)  	else  		addr = vzalloc_node(size, nid); -	if (addr) { -		mod_node_page_state(NODE_DATA(nid), NR_MEMMAP, -				    DIV_ROUND_UP(size, PAGE_SIZE)); -	} +	if (addr) +		memmap_pages_add(DIV_ROUND_UP(size, PAGE_SIZE));  	return addr;  } @@ -323,25 +320,18 @@ static void free_page_ext(void *addr)  {  	size_t table_size;  	struct page *page; -	struct pglist_data *pgdat;  	table_size = page_ext_size * PAGES_PER_SECTION; +	memmap_pages_add(-1L * (DIV_ROUND_UP(table_size, PAGE_SIZE)));  	if (is_vmalloc_addr(addr)) { -		page = vmalloc_to_page(addr); -		pgdat = page_pgdat(page);  		vfree(addr);  	} else {  		page = virt_to_page(addr); -		pgdat = page_pgdat(page);  		BUG_ON(PageReserved(page));  		kmemleak_free(addr);  		free_pages_exact(addr, table_size);  	} - -	mod_node_page_state(pgdat, NR_MEMMAP, -			    -1L * (DIV_ROUND_UP(table_size, PAGE_SIZE))); -  }  static void __free_page_ext(unsigned long pfn) |