xref: /linux/mm/page_alloc.c (revision a7edd0e676d51145ae634a2acf7a447e319200fa)
1 /*
2  *  linux/mm/page_alloc.c
3  *
4  *  Manages the free list, the system allocates free pages here.
5  *  Note that kmalloc() lives in slab.c
6  *
7  *  Copyright (C) 1991, 1992, 1993, 1994  Linus Torvalds
8  *  Swap reorganised 29.12.95, Stephen Tweedie
9  *  Support of BIGMEM added by Gerhard Wichert, Siemens AG, July 1999
10  *  Reshaped it to be a zoned allocator, Ingo Molnar, Red Hat, 1999
11  *  Discontiguous memory support, Kanoj Sarcar, SGI, Nov 1999
12  *  Zone balancing, Kanoj Sarcar, SGI, Jan 2000
13  *  Per cpu hot/cold page lists, bulk allocation, Martin J. Bligh, Sept 2002
14  *          (lots of bits borrowed from Ingo Molnar & Andrew Morton)
15  */
16 
17 #include <linux/stddef.h>
18 #include <linux/mm.h>
19 #include <linux/swap.h>
20 #include <linux/interrupt.h>
21 #include <linux/pagemap.h>
22 #include <linux/bootmem.h>
23 #include <linux/compiler.h>
24 #include <linux/kernel.h>
25 #include <linux/module.h>
26 #include <linux/suspend.h>
27 #include <linux/pagevec.h>
28 #include <linux/blkdev.h>
29 #include <linux/slab.h>
30 #include <linux/notifier.h>
31 #include <linux/topology.h>
32 #include <linux/sysctl.h>
33 #include <linux/cpu.h>
34 #include <linux/cpuset.h>
35 #include <linux/memory_hotplug.h>
36 #include <linux/nodemask.h>
37 #include <linux/vmalloc.h>
38 #include <linux/mempolicy.h>
39 #include <linux/stop_machine.h>
40 #include <linux/sort.h>
41 #include <linux/pfn.h>
42 #include <linux/backing-dev.h>
43 #include <linux/fault-inject.h>
44 
45 #include <asm/tlbflush.h>
46 #include <asm/div64.h>
47 #include "internal.h"
48 
49 /*
50  * MCD - HACK: Find somewhere to initialize this EARLY, or make this
51  * initializer cleaner
52  */
53 nodemask_t node_online_map __read_mostly = { { [0] = 1UL } };
54 EXPORT_SYMBOL(node_online_map);
55 nodemask_t node_possible_map __read_mostly = NODE_MASK_ALL;
56 EXPORT_SYMBOL(node_possible_map);
57 unsigned long totalram_pages __read_mostly;
58 unsigned long totalreserve_pages __read_mostly;
59 long nr_swap_pages;
60 int percpu_pagelist_fraction;
61 
62 static void __free_pages_ok(struct page *page, unsigned int order);
63 
64 /*
65  * results with 256, 32 in the lowmem_reserve sysctl:
66  *	1G machine -> (16M dma, 800M-16M normal, 1G-800M high)
67  *	1G machine -> (16M dma, 784M normal, 224M high)
68  *	NORMAL allocation will leave 784M/256 of ram reserved in the ZONE_DMA
69  *	HIGHMEM allocation will leave 224M/32 of ram reserved in ZONE_NORMAL
70  *	HIGHMEM allocation will (224M+784M)/256 of ram reserved in ZONE_DMA
71  *
72  * TBD: should special case ZONE_DMA32 machines here - in those we normally
73  * don't need any ZONE_NORMAL reservation
74  */
75 int sysctl_lowmem_reserve_ratio[MAX_NR_ZONES-1] = {
76 #ifdef CONFIG_ZONE_DMA
77 	 256,
78 #endif
79 #ifdef CONFIG_ZONE_DMA32
80 	 256,
81 #endif
82 #ifdef CONFIG_HIGHMEM
83 	 32
84 #endif
85 };
86 
87 EXPORT_SYMBOL(totalram_pages);
88 
89 static char * const zone_names[MAX_NR_ZONES] = {
90 #ifdef CONFIG_ZONE_DMA
91 	 "DMA",
92 #endif
93 #ifdef CONFIG_ZONE_DMA32
94 	 "DMA32",
95 #endif
96 	 "Normal",
97 #ifdef CONFIG_HIGHMEM
98 	 "HighMem"
99 #endif
100 };
101 
102 int min_free_kbytes = 1024;
103 
104 unsigned long __meminitdata nr_kernel_pages;
105 unsigned long __meminitdata nr_all_pages;
106 static unsigned long __initdata dma_reserve;
107 
108 #ifdef CONFIG_ARCH_POPULATES_NODE_MAP
109   /*
110    * MAX_ACTIVE_REGIONS determines the maxmimum number of distinct
111    * ranges of memory (RAM) that may be registered with add_active_range().
112    * Ranges passed to add_active_range() will be merged if possible
113    * so the number of times add_active_range() can be called is
114    * related to the number of nodes and the number of holes
115    */
116   #ifdef CONFIG_MAX_ACTIVE_REGIONS
117     /* Allow an architecture to set MAX_ACTIVE_REGIONS to save memory */
118     #define MAX_ACTIVE_REGIONS CONFIG_MAX_ACTIVE_REGIONS
119   #else
120     #if MAX_NUMNODES >= 32
121       /* If there can be many nodes, allow up to 50 holes per node */
122       #define MAX_ACTIVE_REGIONS (MAX_NUMNODES*50)
123     #else
124       /* By default, allow up to 256 distinct regions */
125       #define MAX_ACTIVE_REGIONS 256
126     #endif
127   #endif
128 
129   struct node_active_region __initdata early_node_map[MAX_ACTIVE_REGIONS];
130   int __initdata nr_nodemap_entries;
131   unsigned long __initdata arch_zone_lowest_possible_pfn[MAX_NR_ZONES];
132   unsigned long __initdata arch_zone_highest_possible_pfn[MAX_NR_ZONES];
133 #ifdef CONFIG_MEMORY_HOTPLUG_RESERVE
134   unsigned long __initdata node_boundary_start_pfn[MAX_NUMNODES];
135   unsigned long __initdata node_boundary_end_pfn[MAX_NUMNODES];
136 #endif /* CONFIG_MEMORY_HOTPLUG_RESERVE */
137 #endif /* CONFIG_ARCH_POPULATES_NODE_MAP */
138 
139 #ifdef CONFIG_DEBUG_VM
140 static int page_outside_zone_boundaries(struct zone *zone, struct page *page)
141 {
142 	int ret = 0;
143 	unsigned seq;
144 	unsigned long pfn = page_to_pfn(page);
145 
146 	do {
147 		seq = zone_span_seqbegin(zone);
148 		if (pfn >= zone->zone_start_pfn + zone->spanned_pages)
149 			ret = 1;
150 		else if (pfn < zone->zone_start_pfn)
151 			ret = 1;
152 	} while (zone_span_seqretry(zone, seq));
153 
154 	return ret;
155 }
156 
157 static int page_is_consistent(struct zone *zone, struct page *page)
158 {
159 #ifdef CONFIG_HOLES_IN_ZONE
160 	if (!pfn_valid(page_to_pfn(page)))
161 		return 0;
162 #endif
163 	if (zone != page_zone(page))
164 		return 0;
165 
166 	return 1;
167 }
168 /*
169  * Temporary debugging check for pages not lying within a given zone.
170  */
171 static int bad_range(struct zone *zone, struct page *page)
172 {
173 	if (page_outside_zone_boundaries(zone, page))
174 		return 1;
175 	if (!page_is_consistent(zone, page))
176 		return 1;
177 
178 	return 0;
179 }
180 #else
181 static inline int bad_range(struct zone *zone, struct page *page)
182 {
183 	return 0;
184 }
185 #endif
186 
187 static void bad_page(struct page *page)
188 {
189 	printk(KERN_EMERG "Bad page state in process '%s'\n"
190 		KERN_EMERG "page:%p flags:0x%0*lx mapping:%p mapcount:%d count:%d\n"
191 		KERN_EMERG "Trying to fix it up, but a reboot is needed\n"
192 		KERN_EMERG "Backtrace:\n",
193 		current->comm, page, (int)(2*sizeof(unsigned long)),
194 		(unsigned long)page->flags, page->mapping,
195 		page_mapcount(page), page_count(page));
196 	dump_stack();
197 	page->flags &= ~(1 << PG_lru	|
198 			1 << PG_private |
199 			1 << PG_locked	|
200 			1 << PG_active	|
201 			1 << PG_dirty	|
202 			1 << PG_reclaim |
203 			1 << PG_slab    |
204 			1 << PG_swapcache |
205 			1 << PG_writeback |
206 			1 << PG_buddy );
207 	set_page_count(page, 0);
208 	reset_page_mapcount(page);
209 	page->mapping = NULL;
210 	add_taint(TAINT_BAD_PAGE);
211 }
212 
213 /*
214  * Higher-order pages are called "compound pages".  They are structured thusly:
215  *
216  * The first PAGE_SIZE page is called the "head page".
217  *
218  * The remaining PAGE_SIZE pages are called "tail pages".
219  *
220  * All pages have PG_compound set.  All pages have their ->private pointing at
221  * the head page (even the head page has this).
222  *
223  * The first tail page's ->lru.next holds the address of the compound page's
224  * put_page() function.  Its ->lru.prev holds the order of allocation.
225  * This usage means that zero-order pages may not be compound.
226  */
227 
228 static void free_compound_page(struct page *page)
229 {
230 	__free_pages_ok(page, (unsigned long)page[1].lru.prev);
231 }
232 
233 static void prep_compound_page(struct page *page, unsigned long order)
234 {
235 	int i;
236 	int nr_pages = 1 << order;
237 
238 	set_compound_page_dtor(page, free_compound_page);
239 	page[1].lru.prev = (void *)order;
240 	for (i = 0; i < nr_pages; i++) {
241 		struct page *p = page + i;
242 
243 		__SetPageCompound(p);
244 		set_page_private(p, (unsigned long)page);
245 	}
246 }
247 
248 static void destroy_compound_page(struct page *page, unsigned long order)
249 {
250 	int i;
251 	int nr_pages = 1 << order;
252 
253 	if (unlikely((unsigned long)page[1].lru.prev != order))
254 		bad_page(page);
255 
256 	for (i = 0; i < nr_pages; i++) {
257 		struct page *p = page + i;
258 
259 		if (unlikely(!PageCompound(p) |
260 				(page_private(p) != (unsigned long)page)))
261 			bad_page(page);
262 		__ClearPageCompound(p);
263 	}
264 }
265 
266 static inline void prep_zero_page(struct page *page, int order, gfp_t gfp_flags)
267 {
268 	int i;
269 
270 	VM_BUG_ON((gfp_flags & (__GFP_WAIT | __GFP_HIGHMEM)) == __GFP_HIGHMEM);
271 	/*
272 	 * clear_highpage() will use KM_USER0, so it's a bug to use __GFP_ZERO
273 	 * and __GFP_HIGHMEM from hard or soft interrupt context.
274 	 */
275 	VM_BUG_ON((gfp_flags & __GFP_HIGHMEM) && in_interrupt());
276 	for (i = 0; i < (1 << order); i++)
277 		clear_highpage(page + i);
278 }
279 
280 /*
281  * function for dealing with page's order in buddy system.
282  * zone->lock is already acquired when we use these.
283  * So, we don't need atomic page->flags operations here.
284  */
285 static inline unsigned long page_order(struct page *page)
286 {
287 	return page_private(page);
288 }
289 
290 static inline void set_page_order(struct page *page, int order)
291 {
292 	set_page_private(page, order);
293 	__SetPageBuddy(page);
294 }
295 
296 static inline void rmv_page_order(struct page *page)
297 {
298 	__ClearPageBuddy(page);
299 	set_page_private(page, 0);
300 }
301 
302 /*
303  * Locate the struct page for both the matching buddy in our
304  * pair (buddy1) and the combined O(n+1) page they form (page).
305  *
306  * 1) Any buddy B1 will have an order O twin B2 which satisfies
307  * the following equation:
308  *     B2 = B1 ^ (1 << O)
309  * For example, if the starting buddy (buddy2) is #8 its order
310  * 1 buddy is #10:
311  *     B2 = 8 ^ (1 << 1) = 8 ^ 2 = 10
312  *
313  * 2) Any buddy B will have an order O+1 parent P which
314  * satisfies the following equation:
315  *     P = B & ~(1 << O)
316  *
317  * Assumption: *_mem_map is contiguous at least up to MAX_ORDER
318  */
319 static inline struct page *
320 __page_find_buddy(struct page *page, unsigned long page_idx, unsigned int order)
321 {
322 	unsigned long buddy_idx = page_idx ^ (1 << order);
323 
324 	return page + (buddy_idx - page_idx);
325 }
326 
327 static inline unsigned long
328 __find_combined_index(unsigned long page_idx, unsigned int order)
329 {
330 	return (page_idx & ~(1 << order));
331 }
332 
333 /*
334  * This function checks whether a page is free && is the buddy
335  * we can do coalesce a page and its buddy if
336  * (a) the buddy is not in a hole &&
337  * (b) the buddy is in the buddy system &&
338  * (c) a page and its buddy have the same order &&
339  * (d) a page and its buddy are in the same zone.
340  *
341  * For recording whether a page is in the buddy system, we use PG_buddy.
342  * Setting, clearing, and testing PG_buddy is serialized by zone->lock.
343  *
344  * For recording page's order, we use page_private(page).
345  */
346 static inline int page_is_buddy(struct page *page, struct page *buddy,
347 								int order)
348 {
349 #ifdef CONFIG_HOLES_IN_ZONE
350 	if (!pfn_valid(page_to_pfn(buddy)))
351 		return 0;
352 #endif
353 
354 	if (page_zone_id(page) != page_zone_id(buddy))
355 		return 0;
356 
357 	if (PageBuddy(buddy) && page_order(buddy) == order) {
358 		BUG_ON(page_count(buddy) != 0);
359 		return 1;
360 	}
361 	return 0;
362 }
363 
364 /*
365  * Freeing function for a buddy system allocator.
366  *
367  * The concept of a buddy system is to maintain direct-mapped table
368  * (containing bit values) for memory blocks of various "orders".
369  * The bottom level table contains the map for the smallest allocatable
370  * units of memory (here, pages), and each level above it describes
371  * pairs of units from the levels below, hence, "buddies".
372  * At a high level, all that happens here is marking the table entry
373  * at the bottom level available, and propagating the changes upward
374  * as necessary, plus some accounting needed to play nicely with other
375  * parts of the VM system.
376  * At each level, we keep a list of pages, which are heads of continuous
377  * free pages of length of (1 << order) and marked with PG_buddy. Page's
378  * order is recorded in page_private(page) field.
379  * So when we are allocating or freeing one, we can derive the state of the
380  * other.  That is, if we allocate a small block, and both were
381  * free, the remainder of the region must be split into blocks.
382  * If a block is freed, and its buddy is also free, then this
383  * triggers coalescing into a block of larger size.
384  *
385  * -- wli
386  */
387 
388 static inline void __free_one_page(struct page *page,
389 		struct zone *zone, unsigned int order)
390 {
391 	unsigned long page_idx;
392 	int order_size = 1 << order;
393 
394 	if (unlikely(PageCompound(page)))
395 		destroy_compound_page(page, order);
396 
397 	page_idx = page_to_pfn(page) & ((1 << MAX_ORDER) - 1);
398 
399 	VM_BUG_ON(page_idx & (order_size - 1));
400 	VM_BUG_ON(bad_range(zone, page));
401 
402 	__mod_zone_page_state(zone, NR_FREE_PAGES, order_size);
403 	while (order < MAX_ORDER-1) {
404 		unsigned long combined_idx;
405 		struct free_area *area;
406 		struct page *buddy;
407 
408 		buddy = __page_find_buddy(page, page_idx, order);
409 		if (!page_is_buddy(page, buddy, order))
410 			break;		/* Move the buddy up one level. */
411 
412 		list_del(&buddy->lru);
413 		area = zone->free_area + order;
414 		area->nr_free--;
415 		rmv_page_order(buddy);
416 		combined_idx = __find_combined_index(page_idx, order);
417 		page = page + (combined_idx - page_idx);
418 		page_idx = combined_idx;
419 		order++;
420 	}
421 	set_page_order(page, order);
422 	list_add(&page->lru, &zone->free_area[order].free_list);
423 	zone->free_area[order].nr_free++;
424 }
425 
426 static inline int free_pages_check(struct page *page)
427 {
428 	if (unlikely(page_mapcount(page) |
429 		(page->mapping != NULL)  |
430 		(page_count(page) != 0)  |
431 		(page->flags & (
432 			1 << PG_lru	|
433 			1 << PG_private |
434 			1 << PG_locked	|
435 			1 << PG_active	|
436 			1 << PG_reclaim	|
437 			1 << PG_slab	|
438 			1 << PG_swapcache |
439 			1 << PG_writeback |
440 			1 << PG_reserved |
441 			1 << PG_buddy ))))
442 		bad_page(page);
443 	if (PageDirty(page))
444 		__ClearPageDirty(page);
445 	/*
446 	 * For now, we report if PG_reserved was found set, but do not
447 	 * clear it, and do not free the page.  But we shall soon need
448 	 * to do more, for when the ZERO_PAGE count wraps negative.
449 	 */
450 	return PageReserved(page);
451 }
452 
453 /*
454  * Frees a list of pages.
455  * Assumes all pages on list are in same zone, and of same order.
456  * count is the number of pages to free.
457  *
458  * If the zone was previously in an "all pages pinned" state then look to
459  * see if this freeing clears that state.
460  *
461  * And clear the zone's pages_scanned counter, to hold off the "all pages are
462  * pinned" detection logic.
463  */
464 static void free_pages_bulk(struct zone *zone, int count,
465 					struct list_head *list, int order)
466 {
467 	spin_lock(&zone->lock);
468 	zone->all_unreclaimable = 0;
469 	zone->pages_scanned = 0;
470 	while (count--) {
471 		struct page *page;
472 
473 		VM_BUG_ON(list_empty(list));
474 		page = list_entry(list->prev, struct page, lru);
475 		/* have to delete it as __free_one_page list manipulates */
476 		list_del(&page->lru);
477 		__free_one_page(page, zone, order);
478 	}
479 	spin_unlock(&zone->lock);
480 }
481 
482 static void free_one_page(struct zone *zone, struct page *page, int order)
483 {
484 	spin_lock(&zone->lock);
485 	zone->all_unreclaimable = 0;
486 	zone->pages_scanned = 0;
487 	__free_one_page(page, zone, order);
488 	spin_unlock(&zone->lock);
489 }
490 
491 static void __free_pages_ok(struct page *page, unsigned int order)
492 {
493 	unsigned long flags;
494 	int i;
495 	int reserved = 0;
496 
497 	for (i = 0 ; i < (1 << order) ; ++i)
498 		reserved += free_pages_check(page + i);
499 	if (reserved)
500 		return;
501 
502 	if (!PageHighMem(page))
503 		debug_check_no_locks_freed(page_address(page),PAGE_SIZE<<order);
504 	arch_free_page(page, order);
505 	kernel_map_pages(page, 1 << order, 0);
506 
507 	local_irq_save(flags);
508 	__count_vm_events(PGFREE, 1 << order);
509 	free_one_page(page_zone(page), page, order);
510 	local_irq_restore(flags);
511 }
512 
513 /*
514  * permit the bootmem allocator to evade page validation on high-order frees
515  */
516 void fastcall __init __free_pages_bootmem(struct page *page, unsigned int order)
517 {
518 	if (order == 0) {
519 		__ClearPageReserved(page);
520 		set_page_count(page, 0);
521 		set_page_refcounted(page);
522 		__free_page(page);
523 	} else {
524 		int loop;
525 
526 		prefetchw(page);
527 		for (loop = 0; loop < BITS_PER_LONG; loop++) {
528 			struct page *p = &page[loop];
529 
530 			if (loop + 1 < BITS_PER_LONG)
531 				prefetchw(p + 1);
532 			__ClearPageReserved(p);
533 			set_page_count(p, 0);
534 		}
535 
536 		set_page_refcounted(page);
537 		__free_pages(page, order);
538 	}
539 }
540 
541 
542 /*
543  * The order of subdivision here is critical for the IO subsystem.
544  * Please do not alter this order without good reasons and regression
545  * testing. Specifically, as large blocks of memory are subdivided,
546  * the order in which smaller blocks are delivered depends on the order
547  * they're subdivided in this function. This is the primary factor
548  * influencing the order in which pages are delivered to the IO
549  * subsystem according to empirical testing, and this is also justified
550  * by considering the behavior of a buddy system containing a single
551  * large block of memory acted on by a series of small allocations.
552  * This behavior is a critical factor in sglist merging's success.
553  *
554  * -- wli
555  */
556 static inline void expand(struct zone *zone, struct page *page,
557  	int low, int high, struct free_area *area)
558 {
559 	unsigned long size = 1 << high;
560 
561 	while (high > low) {
562 		area--;
563 		high--;
564 		size >>= 1;
565 		VM_BUG_ON(bad_range(zone, &page[size]));
566 		list_add(&page[size].lru, &area->free_list);
567 		area->nr_free++;
568 		set_page_order(&page[size], high);
569 	}
570 }
571 
572 /*
573  * This page is about to be returned from the page allocator
574  */
575 static int prep_new_page(struct page *page, int order, gfp_t gfp_flags)
576 {
577 	if (unlikely(page_mapcount(page) |
578 		(page->mapping != NULL)  |
579 		(page_count(page) != 0)  |
580 		(page->flags & (
581 			1 << PG_lru	|
582 			1 << PG_private	|
583 			1 << PG_locked	|
584 			1 << PG_active	|
585 			1 << PG_dirty	|
586 			1 << PG_reclaim	|
587 			1 << PG_slab    |
588 			1 << PG_swapcache |
589 			1 << PG_writeback |
590 			1 << PG_reserved |
591 			1 << PG_buddy ))))
592 		bad_page(page);
593 
594 	/*
595 	 * For now, we report if PG_reserved was found set, but do not
596 	 * clear it, and do not allocate the page: as a safety net.
597 	 */
598 	if (PageReserved(page))
599 		return 1;
600 
601 	page->flags &= ~(1 << PG_uptodate | 1 << PG_error |
602 			1 << PG_referenced | 1 << PG_arch_1 |
603 			1 << PG_owner_priv_1 | 1 << PG_mappedtodisk);
604 	set_page_private(page, 0);
605 	set_page_refcounted(page);
606 
607 	arch_alloc_page(page, order);
608 	kernel_map_pages(page, 1 << order, 1);
609 
610 	if (gfp_flags & __GFP_ZERO)
611 		prep_zero_page(page, order, gfp_flags);
612 
613 	if (order && (gfp_flags & __GFP_COMP))
614 		prep_compound_page(page, order);
615 
616 	return 0;
617 }
618 
619 /*
620  * Do the hard work of removing an element from the buddy allocator.
621  * Call me with the zone->lock already held.
622  */
623 static struct page *__rmqueue(struct zone *zone, unsigned int order)
624 {
625 	struct free_area * area;
626 	unsigned int current_order;
627 	struct page *page;
628 
629 	for (current_order = order; current_order < MAX_ORDER; ++current_order) {
630 		area = zone->free_area + current_order;
631 		if (list_empty(&area->free_list))
632 			continue;
633 
634 		page = list_entry(area->free_list.next, struct page, lru);
635 		list_del(&page->lru);
636 		rmv_page_order(page);
637 		area->nr_free--;
638 		__mod_zone_page_state(zone, NR_FREE_PAGES, - (1UL << order));
639 		expand(zone, page, order, current_order, area);
640 		return page;
641 	}
642 
643 	return NULL;
644 }
645 
646 /*
647  * Obtain a specified number of elements from the buddy allocator, all under
648  * a single hold of the lock, for efficiency.  Add them to the supplied list.
649  * Returns the number of new pages which were placed at *list.
650  */
651 static int rmqueue_bulk(struct zone *zone, unsigned int order,
652 			unsigned long count, struct list_head *list)
653 {
654 	int i;
655 
656 	spin_lock(&zone->lock);
657 	for (i = 0; i < count; ++i) {
658 		struct page *page = __rmqueue(zone, order);
659 		if (unlikely(page == NULL))
660 			break;
661 		list_add_tail(&page->lru, list);
662 	}
663 	spin_unlock(&zone->lock);
664 	return i;
665 }
666 
667 #if MAX_NUMNODES > 1
668 int nr_node_ids __read_mostly;
669 EXPORT_SYMBOL(nr_node_ids);
670 
671 /*
672  * Figure out the number of possible node ids.
673  */
674 static void __init setup_nr_node_ids(void)
675 {
676 	unsigned int node;
677 	unsigned int highest = 0;
678 
679 	for_each_node_mask(node, node_possible_map)
680 		highest = node;
681 	nr_node_ids = highest + 1;
682 }
683 #else
684 static void __init setup_nr_node_ids(void) {}
685 #endif
686 
687 #ifdef CONFIG_NUMA
688 /*
689  * Called from the slab reaper to drain pagesets on a particular node that
690  * belongs to the currently executing processor.
691  * Note that this function must be called with the thread pinned to
692  * a single processor.
693  */
694 void drain_node_pages(int nodeid)
695 {
696 	int i;
697 	enum zone_type z;
698 	unsigned long flags;
699 
700 	for (z = 0; z < MAX_NR_ZONES; z++) {
701 		struct zone *zone = NODE_DATA(nodeid)->node_zones + z;
702 		struct per_cpu_pageset *pset;
703 
704 		if (!populated_zone(zone))
705 			continue;
706 
707 		pset = zone_pcp(zone, smp_processor_id());
708 		for (i = 0; i < ARRAY_SIZE(pset->pcp); i++) {
709 			struct per_cpu_pages *pcp;
710 
711 			pcp = &pset->pcp[i];
712 			if (pcp->count) {
713 				int to_drain;
714 
715 				local_irq_save(flags);
716 				if (pcp->count >= pcp->batch)
717 					to_drain = pcp->batch;
718 				else
719 					to_drain = pcp->count;
720 				free_pages_bulk(zone, to_drain, &pcp->list, 0);
721 				pcp->count -= to_drain;
722 				local_irq_restore(flags);
723 			}
724 		}
725 	}
726 }
727 #endif
728 
729 static void __drain_pages(unsigned int cpu)
730 {
731 	unsigned long flags;
732 	struct zone *zone;
733 	int i;
734 
735 	for_each_zone(zone) {
736 		struct per_cpu_pageset *pset;
737 
738 		if (!populated_zone(zone))
739 			continue;
740 
741 		pset = zone_pcp(zone, cpu);
742 		for (i = 0; i < ARRAY_SIZE(pset->pcp); i++) {
743 			struct per_cpu_pages *pcp;
744 
745 			pcp = &pset->pcp[i];
746 			local_irq_save(flags);
747 			free_pages_bulk(zone, pcp->count, &pcp->list, 0);
748 			pcp->count = 0;
749 			local_irq_restore(flags);
750 		}
751 	}
752 }
753 
754 #ifdef CONFIG_PM
755 
756 void mark_free_pages(struct zone *zone)
757 {
758 	unsigned long pfn, max_zone_pfn;
759 	unsigned long flags;
760 	int order;
761 	struct list_head *curr;
762 
763 	if (!zone->spanned_pages)
764 		return;
765 
766 	spin_lock_irqsave(&zone->lock, flags);
767 
768 	max_zone_pfn = zone->zone_start_pfn + zone->spanned_pages;
769 	for (pfn = zone->zone_start_pfn; pfn < max_zone_pfn; pfn++)
770 		if (pfn_valid(pfn)) {
771 			struct page *page = pfn_to_page(pfn);
772 
773 			if (!PageNosave(page))
774 				ClearPageNosaveFree(page);
775 		}
776 
777 	for (order = MAX_ORDER - 1; order >= 0; --order)
778 		list_for_each(curr, &zone->free_area[order].free_list) {
779 			unsigned long i;
780 
781 			pfn = page_to_pfn(list_entry(curr, struct page, lru));
782 			for (i = 0; i < (1UL << order); i++)
783 				SetPageNosaveFree(pfn_to_page(pfn + i));
784 		}
785 
786 	spin_unlock_irqrestore(&zone->lock, flags);
787 }
788 
789 /*
790  * Spill all of this CPU's per-cpu pages back into the buddy allocator.
791  */
792 void drain_local_pages(void)
793 {
794 	unsigned long flags;
795 
796 	local_irq_save(flags);
797 	__drain_pages(smp_processor_id());
798 	local_irq_restore(flags);
799 }
800 #endif /* CONFIG_PM */
801 
802 /*
803  * Free a 0-order page
804  */
805 static void fastcall free_hot_cold_page(struct page *page, int cold)
806 {
807 	struct zone *zone = page_zone(page);
808 	struct per_cpu_pages *pcp;
809 	unsigned long flags;
810 
811 	if (PageAnon(page))
812 		page->mapping = NULL;
813 	if (free_pages_check(page))
814 		return;
815 
816 	if (!PageHighMem(page))
817 		debug_check_no_locks_freed(page_address(page), PAGE_SIZE);
818 	arch_free_page(page, 0);
819 	kernel_map_pages(page, 1, 0);
820 
821 	pcp = &zone_pcp(zone, get_cpu())->pcp[cold];
822 	local_irq_save(flags);
823 	__count_vm_event(PGFREE);
824 	list_add(&page->lru, &pcp->list);
825 	pcp->count++;
826 	if (pcp->count >= pcp->high) {
827 		free_pages_bulk(zone, pcp->batch, &pcp->list, 0);
828 		pcp->count -= pcp->batch;
829 	}
830 	local_irq_restore(flags);
831 	put_cpu();
832 }
833 
834 void fastcall free_hot_page(struct page *page)
835 {
836 	free_hot_cold_page(page, 0);
837 }
838 
839 void fastcall free_cold_page(struct page *page)
840 {
841 	free_hot_cold_page(page, 1);
842 }
843 
844 /*
845  * split_page takes a non-compound higher-order page, and splits it into
846  * n (1<<order) sub-pages: page[0..n]
847  * Each sub-page must be freed individually.
848  *
849  * Note: this is probably too low level an operation for use in drivers.
850  * Please consult with lkml before using this in your driver.
851  */
852 void split_page(struct page *page, unsigned int order)
853 {
854 	int i;
855 
856 	VM_BUG_ON(PageCompound(page));
857 	VM_BUG_ON(!page_count(page));
858 	for (i = 1; i < (1 << order); i++)
859 		set_page_refcounted(page + i);
860 }
861 
862 /*
863  * Really, prep_compound_page() should be called from __rmqueue_bulk().  But
864  * we cheat by calling it from here, in the order > 0 path.  Saves a branch
865  * or two.
866  */
867 static struct page *buffered_rmqueue(struct zonelist *zonelist,
868 			struct zone *zone, int order, gfp_t gfp_flags)
869 {
870 	unsigned long flags;
871 	struct page *page;
872 	int cold = !!(gfp_flags & __GFP_COLD);
873 	int cpu;
874 
875 again:
876 	cpu  = get_cpu();
877 	if (likely(order == 0)) {
878 		struct per_cpu_pages *pcp;
879 
880 		pcp = &zone_pcp(zone, cpu)->pcp[cold];
881 		local_irq_save(flags);
882 		if (!pcp->count) {
883 			pcp->count = rmqueue_bulk(zone, 0,
884 						pcp->batch, &pcp->list);
885 			if (unlikely(!pcp->count))
886 				goto failed;
887 		}
888 		page = list_entry(pcp->list.next, struct page, lru);
889 		list_del(&page->lru);
890 		pcp->count--;
891 	} else {
892 		spin_lock_irqsave(&zone->lock, flags);
893 		page = __rmqueue(zone, order);
894 		spin_unlock(&zone->lock);
895 		if (!page)
896 			goto failed;
897 	}
898 
899 	__count_zone_vm_events(PGALLOC, zone, 1 << order);
900 	zone_statistics(zonelist, zone);
901 	local_irq_restore(flags);
902 	put_cpu();
903 
904 	VM_BUG_ON(bad_range(zone, page));
905 	if (prep_new_page(page, order, gfp_flags))
906 		goto again;
907 	return page;
908 
909 failed:
910 	local_irq_restore(flags);
911 	put_cpu();
912 	return NULL;
913 }
914 
915 #define ALLOC_NO_WATERMARKS	0x01 /* don't check watermarks at all */
916 #define ALLOC_WMARK_MIN		0x02 /* use pages_min watermark */
917 #define ALLOC_WMARK_LOW		0x04 /* use pages_low watermark */
918 #define ALLOC_WMARK_HIGH	0x08 /* use pages_high watermark */
919 #define ALLOC_HARDER		0x10 /* try to alloc harder */
920 #define ALLOC_HIGH		0x20 /* __GFP_HIGH set */
921 #define ALLOC_CPUSET		0x40 /* check for correct cpuset */
922 
923 #ifdef CONFIG_FAIL_PAGE_ALLOC
924 
925 static struct fail_page_alloc_attr {
926 	struct fault_attr attr;
927 
928 	u32 ignore_gfp_highmem;
929 	u32 ignore_gfp_wait;
930 
931 #ifdef CONFIG_FAULT_INJECTION_DEBUG_FS
932 
933 	struct dentry *ignore_gfp_highmem_file;
934 	struct dentry *ignore_gfp_wait_file;
935 
936 #endif /* CONFIG_FAULT_INJECTION_DEBUG_FS */
937 
938 } fail_page_alloc = {
939 	.attr = FAULT_ATTR_INITIALIZER,
940 	.ignore_gfp_wait = 1,
941 	.ignore_gfp_highmem = 1,
942 };
943 
944 static int __init setup_fail_page_alloc(char *str)
945 {
946 	return setup_fault_attr(&fail_page_alloc.attr, str);
947 }
948 __setup("fail_page_alloc=", setup_fail_page_alloc);
949 
950 static int should_fail_alloc_page(gfp_t gfp_mask, unsigned int order)
951 {
952 	if (gfp_mask & __GFP_NOFAIL)
953 		return 0;
954 	if (fail_page_alloc.ignore_gfp_highmem && (gfp_mask & __GFP_HIGHMEM))
955 		return 0;
956 	if (fail_page_alloc.ignore_gfp_wait && (gfp_mask & __GFP_WAIT))
957 		return 0;
958 
959 	return should_fail(&fail_page_alloc.attr, 1 << order);
960 }
961 
962 #ifdef CONFIG_FAULT_INJECTION_DEBUG_FS
963 
964 static int __init fail_page_alloc_debugfs(void)
965 {
966 	mode_t mode = S_IFREG | S_IRUSR | S_IWUSR;
967 	struct dentry *dir;
968 	int err;
969 
970 	err = init_fault_attr_dentries(&fail_page_alloc.attr,
971 				       "fail_page_alloc");
972 	if (err)
973 		return err;
974 	dir = fail_page_alloc.attr.dentries.dir;
975 
976 	fail_page_alloc.ignore_gfp_wait_file =
977 		debugfs_create_bool("ignore-gfp-wait", mode, dir,
978 				      &fail_page_alloc.ignore_gfp_wait);
979 
980 	fail_page_alloc.ignore_gfp_highmem_file =
981 		debugfs_create_bool("ignore-gfp-highmem", mode, dir,
982 				      &fail_page_alloc.ignore_gfp_highmem);
983 
984 	if (!fail_page_alloc.ignore_gfp_wait_file ||
985 			!fail_page_alloc.ignore_gfp_highmem_file) {
986 		err = -ENOMEM;
987 		debugfs_remove(fail_page_alloc.ignore_gfp_wait_file);
988 		debugfs_remove(fail_page_alloc.ignore_gfp_highmem_file);
989 		cleanup_fault_attr_dentries(&fail_page_alloc.attr);
990 	}
991 
992 	return err;
993 }
994 
995 late_initcall(fail_page_alloc_debugfs);
996 
997 #endif /* CONFIG_FAULT_INJECTION_DEBUG_FS */
998 
999 #else /* CONFIG_FAIL_PAGE_ALLOC */
1000 
1001 static inline int should_fail_alloc_page(gfp_t gfp_mask, unsigned int order)
1002 {
1003 	return 0;
1004 }
1005 
1006 #endif /* CONFIG_FAIL_PAGE_ALLOC */
1007 
1008 /*
1009  * Return 1 if free pages are above 'mark'. This takes into account the order
1010  * of the allocation.
1011  */
1012 int zone_watermark_ok(struct zone *z, int order, unsigned long mark,
1013 		      int classzone_idx, int alloc_flags)
1014 {
1015 	/* free_pages my go negative - that's OK */
1016 	long min = mark;
1017 	long free_pages = zone_page_state(z, NR_FREE_PAGES) - (1 << order) + 1;
1018 	int o;
1019 
1020 	if (alloc_flags & ALLOC_HIGH)
1021 		min -= min / 2;
1022 	if (alloc_flags & ALLOC_HARDER)
1023 		min -= min / 4;
1024 
1025 	if (free_pages <= min + z->lowmem_reserve[classzone_idx])
1026 		return 0;
1027 	for (o = 0; o < order; o++) {
1028 		/* At the next order, this order's pages become unavailable */
1029 		free_pages -= z->free_area[o].nr_free << o;
1030 
1031 		/* Require fewer higher order pages to be free */
1032 		min >>= 1;
1033 
1034 		if (free_pages <= min)
1035 			return 0;
1036 	}
1037 	return 1;
1038 }
1039 
1040 #ifdef CONFIG_NUMA
1041 /*
1042  * zlc_setup - Setup for "zonelist cache".  Uses cached zone data to
1043  * skip over zones that are not allowed by the cpuset, or that have
1044  * been recently (in last second) found to be nearly full.  See further
1045  * comments in mmzone.h.  Reduces cache footprint of zonelist scans
1046  * that have to skip over alot of full or unallowed zones.
1047  *
1048  * If the zonelist cache is present in the passed in zonelist, then
1049  * returns a pointer to the allowed node mask (either the current
1050  * tasks mems_allowed, or node_online_map.)
1051  *
1052  * If the zonelist cache is not available for this zonelist, does
1053  * nothing and returns NULL.
1054  *
1055  * If the fullzones BITMAP in the zonelist cache is stale (more than
1056  * a second since last zap'd) then we zap it out (clear its bits.)
1057  *
1058  * We hold off even calling zlc_setup, until after we've checked the
1059  * first zone in the zonelist, on the theory that most allocations will
1060  * be satisfied from that first zone, so best to examine that zone as
1061  * quickly as we can.
1062  */
1063 static nodemask_t *zlc_setup(struct zonelist *zonelist, int alloc_flags)
1064 {
1065 	struct zonelist_cache *zlc;	/* cached zonelist speedup info */
1066 	nodemask_t *allowednodes;	/* zonelist_cache approximation */
1067 
1068 	zlc = zonelist->zlcache_ptr;
1069 	if (!zlc)
1070 		return NULL;
1071 
1072 	if (jiffies - zlc->last_full_zap > 1 * HZ) {
1073 		bitmap_zero(zlc->fullzones, MAX_ZONES_PER_ZONELIST);
1074 		zlc->last_full_zap = jiffies;
1075 	}
1076 
1077 	allowednodes = !in_interrupt() && (alloc_flags & ALLOC_CPUSET) ?
1078 					&cpuset_current_mems_allowed :
1079 					&node_online_map;
1080 	return allowednodes;
1081 }
1082 
1083 /*
1084  * Given 'z' scanning a zonelist, run a couple of quick checks to see
1085  * if it is worth looking at further for free memory:
1086  *  1) Check that the zone isn't thought to be full (doesn't have its
1087  *     bit set in the zonelist_cache fullzones BITMAP).
1088  *  2) Check that the zones node (obtained from the zonelist_cache
1089  *     z_to_n[] mapping) is allowed in the passed in allowednodes mask.
1090  * Return true (non-zero) if zone is worth looking at further, or
1091  * else return false (zero) if it is not.
1092  *
1093  * This check -ignores- the distinction between various watermarks,
1094  * such as GFP_HIGH, GFP_ATOMIC, PF_MEMALLOC, ...  If a zone is
1095  * found to be full for any variation of these watermarks, it will
1096  * be considered full for up to one second by all requests, unless
1097  * we are so low on memory on all allowed nodes that we are forced
1098  * into the second scan of the zonelist.
1099  *
1100  * In the second scan we ignore this zonelist cache and exactly
1101  * apply the watermarks to all zones, even it is slower to do so.
1102  * We are low on memory in the second scan, and should leave no stone
1103  * unturned looking for a free page.
1104  */
1105 static int zlc_zone_worth_trying(struct zonelist *zonelist, struct zone **z,
1106 						nodemask_t *allowednodes)
1107 {
1108 	struct zonelist_cache *zlc;	/* cached zonelist speedup info */
1109 	int i;				/* index of *z in zonelist zones */
1110 	int n;				/* node that zone *z is on */
1111 
1112 	zlc = zonelist->zlcache_ptr;
1113 	if (!zlc)
1114 		return 1;
1115 
1116 	i = z - zonelist->zones;
1117 	n = zlc->z_to_n[i];
1118 
1119 	/* This zone is worth trying if it is allowed but not full */
1120 	return node_isset(n, *allowednodes) && !test_bit(i, zlc->fullzones);
1121 }
1122 
1123 /*
1124  * Given 'z' scanning a zonelist, set the corresponding bit in
1125  * zlc->fullzones, so that subsequent attempts to allocate a page
1126  * from that zone don't waste time re-examining it.
1127  */
1128 static void zlc_mark_zone_full(struct zonelist *zonelist, struct zone **z)
1129 {
1130 	struct zonelist_cache *zlc;	/* cached zonelist speedup info */
1131 	int i;				/* index of *z in zonelist zones */
1132 
1133 	zlc = zonelist->zlcache_ptr;
1134 	if (!zlc)
1135 		return;
1136 
1137 	i = z - zonelist->zones;
1138 
1139 	set_bit(i, zlc->fullzones);
1140 }
1141 
1142 #else	/* CONFIG_NUMA */
1143 
1144 static nodemask_t *zlc_setup(struct zonelist *zonelist, int alloc_flags)
1145 {
1146 	return NULL;
1147 }
1148 
1149 static int zlc_zone_worth_trying(struct zonelist *zonelist, struct zone **z,
1150 				nodemask_t *allowednodes)
1151 {
1152 	return 1;
1153 }
1154 
1155 static void zlc_mark_zone_full(struct zonelist *zonelist, struct zone **z)
1156 {
1157 }
1158 #endif	/* CONFIG_NUMA */
1159 
1160 /*
1161  * get_page_from_freelist goes through the zonelist trying to allocate
1162  * a page.
1163  */
1164 static struct page *
1165 get_page_from_freelist(gfp_t gfp_mask, unsigned int order,
1166 		struct zonelist *zonelist, int alloc_flags)
1167 {
1168 	struct zone **z;
1169 	struct page *page = NULL;
1170 	int classzone_idx = zone_idx(zonelist->zones[0]);
1171 	struct zone *zone;
1172 	nodemask_t *allowednodes = NULL;/* zonelist_cache approximation */
1173 	int zlc_active = 0;		/* set if using zonelist_cache */
1174 	int did_zlc_setup = 0;		/* just call zlc_setup() one time */
1175 
1176 zonelist_scan:
1177 	/*
1178 	 * Scan zonelist, looking for a zone with enough free.
1179 	 * See also cpuset_zone_allowed() comment in kernel/cpuset.c.
1180 	 */
1181 	z = zonelist->zones;
1182 
1183 	do {
1184 		if (NUMA_BUILD && zlc_active &&
1185 			!zlc_zone_worth_trying(zonelist, z, allowednodes))
1186 				continue;
1187 		zone = *z;
1188 		if (unlikely(NUMA_BUILD && (gfp_mask & __GFP_THISNODE) &&
1189 			zone->zone_pgdat != zonelist->zones[0]->zone_pgdat))
1190 				break;
1191 		if ((alloc_flags & ALLOC_CPUSET) &&
1192 			!cpuset_zone_allowed_softwall(zone, gfp_mask))
1193 				goto try_next_zone;
1194 
1195 		if (!(alloc_flags & ALLOC_NO_WATERMARKS)) {
1196 			unsigned long mark;
1197 			if (alloc_flags & ALLOC_WMARK_MIN)
1198 				mark = zone->pages_min;
1199 			else if (alloc_flags & ALLOC_WMARK_LOW)
1200 				mark = zone->pages_low;
1201 			else
1202 				mark = zone->pages_high;
1203 			if (!zone_watermark_ok(zone, order, mark,
1204 				    classzone_idx, alloc_flags)) {
1205 				if (!zone_reclaim_mode ||
1206 				    !zone_reclaim(zone, gfp_mask, order))
1207 					goto this_zone_full;
1208 			}
1209 		}
1210 
1211 		page = buffered_rmqueue(zonelist, zone, order, gfp_mask);
1212 		if (page)
1213 			break;
1214 this_zone_full:
1215 		if (NUMA_BUILD)
1216 			zlc_mark_zone_full(zonelist, z);
1217 try_next_zone:
1218 		if (NUMA_BUILD && !did_zlc_setup) {
1219 			/* we do zlc_setup after the first zone is tried */
1220 			allowednodes = zlc_setup(zonelist, alloc_flags);
1221 			zlc_active = 1;
1222 			did_zlc_setup = 1;
1223 		}
1224 	} while (*(++z) != NULL);
1225 
1226 	if (unlikely(NUMA_BUILD && page == NULL && zlc_active)) {
1227 		/* Disable zlc cache for second zonelist scan */
1228 		zlc_active = 0;
1229 		goto zonelist_scan;
1230 	}
1231 	return page;
1232 }
1233 
1234 /*
1235  * This is the 'heart' of the zoned buddy allocator.
1236  */
1237 struct page * fastcall
1238 __alloc_pages(gfp_t gfp_mask, unsigned int order,
1239 		struct zonelist *zonelist)
1240 {
1241 	const gfp_t wait = gfp_mask & __GFP_WAIT;
1242 	struct zone **z;
1243 	struct page *page;
1244 	struct reclaim_state reclaim_state;
1245 	struct task_struct *p = current;
1246 	int do_retry;
1247 	int alloc_flags;
1248 	int did_some_progress;
1249 
1250 	might_sleep_if(wait);
1251 
1252 	if (should_fail_alloc_page(gfp_mask, order))
1253 		return NULL;
1254 
1255 restart:
1256 	z = zonelist->zones;  /* the list of zones suitable for gfp_mask */
1257 
1258 	if (unlikely(*z == NULL)) {
1259 		/* Should this ever happen?? */
1260 		return NULL;
1261 	}
1262 
1263 	page = get_page_from_freelist(gfp_mask|__GFP_HARDWALL, order,
1264 				zonelist, ALLOC_WMARK_LOW|ALLOC_CPUSET);
1265 	if (page)
1266 		goto got_pg;
1267 
1268 	/*
1269 	 * GFP_THISNODE (meaning __GFP_THISNODE, __GFP_NORETRY and
1270 	 * __GFP_NOWARN set) should not cause reclaim since the subsystem
1271 	 * (f.e. slab) using GFP_THISNODE may choose to trigger reclaim
1272 	 * using a larger set of nodes after it has established that the
1273 	 * allowed per node queues are empty and that nodes are
1274 	 * over allocated.
1275 	 */
1276 	if (NUMA_BUILD && (gfp_mask & GFP_THISNODE) == GFP_THISNODE)
1277 		goto nopage;
1278 
1279 	for (z = zonelist->zones; *z; z++)
1280 		wakeup_kswapd(*z, order);
1281 
1282 	/*
1283 	 * OK, we're below the kswapd watermark and have kicked background
1284 	 * reclaim. Now things get more complex, so set up alloc_flags according
1285 	 * to how we want to proceed.
1286 	 *
1287 	 * The caller may dip into page reserves a bit more if the caller
1288 	 * cannot run direct reclaim, or if the caller has realtime scheduling
1289 	 * policy or is asking for __GFP_HIGH memory.  GFP_ATOMIC requests will
1290 	 * set both ALLOC_HARDER (!wait) and ALLOC_HIGH (__GFP_HIGH).
1291 	 */
1292 	alloc_flags = ALLOC_WMARK_MIN;
1293 	if ((unlikely(rt_task(p)) && !in_interrupt()) || !wait)
1294 		alloc_flags |= ALLOC_HARDER;
1295 	if (gfp_mask & __GFP_HIGH)
1296 		alloc_flags |= ALLOC_HIGH;
1297 	if (wait)
1298 		alloc_flags |= ALLOC_CPUSET;
1299 
1300 	/*
1301 	 * Go through the zonelist again. Let __GFP_HIGH and allocations
1302 	 * coming from realtime tasks go deeper into reserves.
1303 	 *
1304 	 * This is the last chance, in general, before the goto nopage.
1305 	 * Ignore cpuset if GFP_ATOMIC (!wait) rather than fail alloc.
1306 	 * See also cpuset_zone_allowed() comment in kernel/cpuset.c.
1307 	 */
1308 	page = get_page_from_freelist(gfp_mask, order, zonelist, alloc_flags);
1309 	if (page)
1310 		goto got_pg;
1311 
1312 	/* This allocation should allow future memory freeing. */
1313 
1314 rebalance:
1315 	if (((p->flags & PF_MEMALLOC) || unlikely(test_thread_flag(TIF_MEMDIE)))
1316 			&& !in_interrupt()) {
1317 		if (!(gfp_mask & __GFP_NOMEMALLOC)) {
1318 nofail_alloc:
1319 			/* go through the zonelist yet again, ignoring mins */
1320 			page = get_page_from_freelist(gfp_mask, order,
1321 				zonelist, ALLOC_NO_WATERMARKS);
1322 			if (page)
1323 				goto got_pg;
1324 			if (gfp_mask & __GFP_NOFAIL) {
1325 				congestion_wait(WRITE, HZ/50);
1326 				goto nofail_alloc;
1327 			}
1328 		}
1329 		goto nopage;
1330 	}
1331 
1332 	/* Atomic allocations - we can't balance anything */
1333 	if (!wait)
1334 		goto nopage;
1335 
1336 	cond_resched();
1337 
1338 	/* We now go into synchronous reclaim */
1339 	cpuset_memory_pressure_bump();
1340 	p->flags |= PF_MEMALLOC;
1341 	reclaim_state.reclaimed_slab = 0;
1342 	p->reclaim_state = &reclaim_state;
1343 
1344 	did_some_progress = try_to_free_pages(zonelist->zones, gfp_mask);
1345 
1346 	p->reclaim_state = NULL;
1347 	p->flags &= ~PF_MEMALLOC;
1348 
1349 	cond_resched();
1350 
1351 	if (likely(did_some_progress)) {
1352 		page = get_page_from_freelist(gfp_mask, order,
1353 						zonelist, alloc_flags);
1354 		if (page)
1355 			goto got_pg;
1356 	} else if ((gfp_mask & __GFP_FS) && !(gfp_mask & __GFP_NORETRY)) {
1357 		/*
1358 		 * Go through the zonelist yet one more time, keep
1359 		 * very high watermark here, this is only to catch
1360 		 * a parallel oom killing, we must fail if we're still
1361 		 * under heavy pressure.
1362 		 */
1363 		page = get_page_from_freelist(gfp_mask|__GFP_HARDWALL, order,
1364 				zonelist, ALLOC_WMARK_HIGH|ALLOC_CPUSET);
1365 		if (page)
1366 			goto got_pg;
1367 
1368 		out_of_memory(zonelist, gfp_mask, order);
1369 		goto restart;
1370 	}
1371 
1372 	/*
1373 	 * Don't let big-order allocations loop unless the caller explicitly
1374 	 * requests that.  Wait for some write requests to complete then retry.
1375 	 *
1376 	 * In this implementation, __GFP_REPEAT means __GFP_NOFAIL for order
1377 	 * <= 3, but that may not be true in other implementations.
1378 	 */
1379 	do_retry = 0;
1380 	if (!(gfp_mask & __GFP_NORETRY)) {
1381 		if ((order <= 3) || (gfp_mask & __GFP_REPEAT))
1382 			do_retry = 1;
1383 		if (gfp_mask & __GFP_NOFAIL)
1384 			do_retry = 1;
1385 	}
1386 	if (do_retry) {
1387 		congestion_wait(WRITE, HZ/50);
1388 		goto rebalance;
1389 	}
1390 
1391 nopage:
1392 	if (!(gfp_mask & __GFP_NOWARN) && printk_ratelimit()) {
1393 		printk(KERN_WARNING "%s: page allocation failure."
1394 			" order:%d, mode:0x%x\n",
1395 			p->comm, order, gfp_mask);
1396 		dump_stack();
1397 		show_mem();
1398 	}
1399 got_pg:
1400 	return page;
1401 }
1402 
1403 EXPORT_SYMBOL(__alloc_pages);
1404 
1405 /*
1406  * Common helper functions.
1407  */
1408 fastcall unsigned long __get_free_pages(gfp_t gfp_mask, unsigned int order)
1409 {
1410 	struct page * page;
1411 	page = alloc_pages(gfp_mask, order);
1412 	if (!page)
1413 		return 0;
1414 	return (unsigned long) page_address(page);
1415 }
1416 
1417 EXPORT_SYMBOL(__get_free_pages);
1418 
1419 fastcall unsigned long get_zeroed_page(gfp_t gfp_mask)
1420 {
1421 	struct page * page;
1422 
1423 	/*
1424 	 * get_zeroed_page() returns a 32-bit address, which cannot represent
1425 	 * a highmem page
1426 	 */
1427 	VM_BUG_ON((gfp_mask & __GFP_HIGHMEM) != 0);
1428 
1429 	page = alloc_pages(gfp_mask | __GFP_ZERO, 0);
1430 	if (page)
1431 		return (unsigned long) page_address(page);
1432 	return 0;
1433 }
1434 
1435 EXPORT_SYMBOL(get_zeroed_page);
1436 
1437 void __pagevec_free(struct pagevec *pvec)
1438 {
1439 	int i = pagevec_count(pvec);
1440 
1441 	while (--i >= 0)
1442 		free_hot_cold_page(pvec->pages[i], pvec->cold);
1443 }
1444 
1445 fastcall void __free_pages(struct page *page, unsigned int order)
1446 {
1447 	if (put_page_testzero(page)) {
1448 		if (order == 0)
1449 			free_hot_page(page);
1450 		else
1451 			__free_pages_ok(page, order);
1452 	}
1453 }
1454 
1455 EXPORT_SYMBOL(__free_pages);
1456 
1457 fastcall void free_pages(unsigned long addr, unsigned int order)
1458 {
1459 	if (addr != 0) {
1460 		VM_BUG_ON(!virt_addr_valid((void *)addr));
1461 		__free_pages(virt_to_page((void *)addr), order);
1462 	}
1463 }
1464 
1465 EXPORT_SYMBOL(free_pages);
1466 
1467 static unsigned int nr_free_zone_pages(int offset)
1468 {
1469 	/* Just pick one node, since fallback list is circular */
1470 	pg_data_t *pgdat = NODE_DATA(numa_node_id());
1471 	unsigned int sum = 0;
1472 
1473 	struct zonelist *zonelist = pgdat->node_zonelists + offset;
1474 	struct zone **zonep = zonelist->zones;
1475 	struct zone *zone;
1476 
1477 	for (zone = *zonep++; zone; zone = *zonep++) {
1478 		unsigned long size = zone->present_pages;
1479 		unsigned long high = zone->pages_high;
1480 		if (size > high)
1481 			sum += size - high;
1482 	}
1483 
1484 	return sum;
1485 }
1486 
1487 /*
1488  * Amount of free RAM allocatable within ZONE_DMA and ZONE_NORMAL
1489  */
1490 unsigned int nr_free_buffer_pages(void)
1491 {
1492 	return nr_free_zone_pages(gfp_zone(GFP_USER));
1493 }
1494 
1495 /*
1496  * Amount of free RAM allocatable within all zones
1497  */
1498 unsigned int nr_free_pagecache_pages(void)
1499 {
1500 	return nr_free_zone_pages(gfp_zone(GFP_HIGHUSER));
1501 }
1502 
1503 static inline void show_node(struct zone *zone)
1504 {
1505 	if (NUMA_BUILD)
1506 		printk("Node %d ", zone_to_nid(zone));
1507 }
1508 
1509 void si_meminfo(struct sysinfo *val)
1510 {
1511 	val->totalram = totalram_pages;
1512 	val->sharedram = 0;
1513 	val->freeram = global_page_state(NR_FREE_PAGES);
1514 	val->bufferram = nr_blockdev_pages();
1515 	val->totalhigh = totalhigh_pages;
1516 	val->freehigh = nr_free_highpages();
1517 	val->mem_unit = PAGE_SIZE;
1518 }
1519 
1520 EXPORT_SYMBOL(si_meminfo);
1521 
1522 #ifdef CONFIG_NUMA
1523 void si_meminfo_node(struct sysinfo *val, int nid)
1524 {
1525 	pg_data_t *pgdat = NODE_DATA(nid);
1526 
1527 	val->totalram = pgdat->node_present_pages;
1528 	val->freeram = node_page_state(nid, NR_FREE_PAGES);
1529 #ifdef CONFIG_HIGHMEM
1530 	val->totalhigh = pgdat->node_zones[ZONE_HIGHMEM].present_pages;
1531 	val->freehigh = zone_page_state(&pgdat->node_zones[ZONE_HIGHMEM],
1532 			NR_FREE_PAGES);
1533 #else
1534 	val->totalhigh = 0;
1535 	val->freehigh = 0;
1536 #endif
1537 	val->mem_unit = PAGE_SIZE;
1538 }
1539 #endif
1540 
1541 #define K(x) ((x) << (PAGE_SHIFT-10))
1542 
1543 /*
1544  * Show free area list (used inside shift_scroll-lock stuff)
1545  * We also calculate the percentage fragmentation. We do this by counting the
1546  * memory on each free list with the exception of the first item on the list.
1547  */
1548 void show_free_areas(void)
1549 {
1550 	int cpu;
1551 	struct zone *zone;
1552 
1553 	for_each_zone(zone) {
1554 		if (!populated_zone(zone))
1555 			continue;
1556 
1557 		show_node(zone);
1558 		printk("%s per-cpu:\n", zone->name);
1559 
1560 		for_each_online_cpu(cpu) {
1561 			struct per_cpu_pageset *pageset;
1562 
1563 			pageset = zone_pcp(zone, cpu);
1564 
1565 			printk("CPU %4d: Hot: hi:%5d, btch:%4d usd:%4d   "
1566 			       "Cold: hi:%5d, btch:%4d usd:%4d\n",
1567 			       cpu, pageset->pcp[0].high,
1568 			       pageset->pcp[0].batch, pageset->pcp[0].count,
1569 			       pageset->pcp[1].high, pageset->pcp[1].batch,
1570 			       pageset->pcp[1].count);
1571 		}
1572 	}
1573 
1574 	printk("Active:%lu inactive:%lu dirty:%lu writeback:%lu unstable:%lu\n"
1575 		" free:%lu slab:%lu mapped:%lu pagetables:%lu bounce:%lu\n",
1576 		global_page_state(NR_ACTIVE),
1577 		global_page_state(NR_INACTIVE),
1578 		global_page_state(NR_FILE_DIRTY),
1579 		global_page_state(NR_WRITEBACK),
1580 		global_page_state(NR_UNSTABLE_NFS),
1581 		global_page_state(NR_FREE_PAGES),
1582 		global_page_state(NR_SLAB_RECLAIMABLE) +
1583 			global_page_state(NR_SLAB_UNRECLAIMABLE),
1584 		global_page_state(NR_FILE_MAPPED),
1585 		global_page_state(NR_PAGETABLE),
1586 		global_page_state(NR_BOUNCE));
1587 
1588 	for_each_zone(zone) {
1589 		int i;
1590 
1591 		if (!populated_zone(zone))
1592 			continue;
1593 
1594 		show_node(zone);
1595 		printk("%s"
1596 			" free:%lukB"
1597 			" min:%lukB"
1598 			" low:%lukB"
1599 			" high:%lukB"
1600 			" active:%lukB"
1601 			" inactive:%lukB"
1602 			" present:%lukB"
1603 			" pages_scanned:%lu"
1604 			" all_unreclaimable? %s"
1605 			"\n",
1606 			zone->name,
1607 			K(zone_page_state(zone, NR_FREE_PAGES)),
1608 			K(zone->pages_min),
1609 			K(zone->pages_low),
1610 			K(zone->pages_high),
1611 			K(zone_page_state(zone, NR_ACTIVE)),
1612 			K(zone_page_state(zone, NR_INACTIVE)),
1613 			K(zone->present_pages),
1614 			zone->pages_scanned,
1615 			(zone->all_unreclaimable ? "yes" : "no")
1616 			);
1617 		printk("lowmem_reserve[]:");
1618 		for (i = 0; i < MAX_NR_ZONES; i++)
1619 			printk(" %lu", zone->lowmem_reserve[i]);
1620 		printk("\n");
1621 	}
1622 
1623 	for_each_zone(zone) {
1624  		unsigned long nr[MAX_ORDER], flags, order, total = 0;
1625 
1626 		if (!populated_zone(zone))
1627 			continue;
1628 
1629 		show_node(zone);
1630 		printk("%s: ", zone->name);
1631 
1632 		spin_lock_irqsave(&zone->lock, flags);
1633 		for (order = 0; order < MAX_ORDER; order++) {
1634 			nr[order] = zone->free_area[order].nr_free;
1635 			total += nr[order] << order;
1636 		}
1637 		spin_unlock_irqrestore(&zone->lock, flags);
1638 		for (order = 0; order < MAX_ORDER; order++)
1639 			printk("%lu*%lukB ", nr[order], K(1UL) << order);
1640 		printk("= %lukB\n", K(total));
1641 	}
1642 
1643 	show_swap_cache_info();
1644 }
1645 
1646 /*
1647  * Builds allocation fallback zone lists.
1648  *
1649  * Add all populated zones of a node to the zonelist.
1650  */
1651 static int __meminit build_zonelists_node(pg_data_t *pgdat,
1652 			struct zonelist *zonelist, int nr_zones, enum zone_type zone_type)
1653 {
1654 	struct zone *zone;
1655 
1656 	BUG_ON(zone_type >= MAX_NR_ZONES);
1657 	zone_type++;
1658 
1659 	do {
1660 		zone_type--;
1661 		zone = pgdat->node_zones + zone_type;
1662 		if (populated_zone(zone)) {
1663 			zonelist->zones[nr_zones++] = zone;
1664 			check_highest_zone(zone_type);
1665 		}
1666 
1667 	} while (zone_type);
1668 	return nr_zones;
1669 }
1670 
1671 #ifdef CONFIG_NUMA
1672 #define MAX_NODE_LOAD (num_online_nodes())
1673 static int __meminitdata node_load[MAX_NUMNODES];
1674 /**
1675  * find_next_best_node - find the next node that should appear in a given node's fallback list
1676  * @node: node whose fallback list we're appending
1677  * @used_node_mask: nodemask_t of already used nodes
1678  *
1679  * We use a number of factors to determine which is the next node that should
1680  * appear on a given node's fallback list.  The node should not have appeared
1681  * already in @node's fallback list, and it should be the next closest node
1682  * according to the distance array (which contains arbitrary distance values
1683  * from each node to each node in the system), and should also prefer nodes
1684  * with no CPUs, since presumably they'll have very little allocation pressure
1685  * on them otherwise.
1686  * It returns -1 if no node is found.
1687  */
1688 static int __meminit find_next_best_node(int node, nodemask_t *used_node_mask)
1689 {
1690 	int n, val;
1691 	int min_val = INT_MAX;
1692 	int best_node = -1;
1693 
1694 	/* Use the local node if we haven't already */
1695 	if (!node_isset(node, *used_node_mask)) {
1696 		node_set(node, *used_node_mask);
1697 		return node;
1698 	}
1699 
1700 	for_each_online_node(n) {
1701 		cpumask_t tmp;
1702 
1703 		/* Don't want a node to appear more than once */
1704 		if (node_isset(n, *used_node_mask))
1705 			continue;
1706 
1707 		/* Use the distance array to find the distance */
1708 		val = node_distance(node, n);
1709 
1710 		/* Penalize nodes under us ("prefer the next node") */
1711 		val += (n < node);
1712 
1713 		/* Give preference to headless and unused nodes */
1714 		tmp = node_to_cpumask(n);
1715 		if (!cpus_empty(tmp))
1716 			val += PENALTY_FOR_NODE_WITH_CPUS;
1717 
1718 		/* Slight preference for less loaded node */
1719 		val *= (MAX_NODE_LOAD*MAX_NUMNODES);
1720 		val += node_load[n];
1721 
1722 		if (val < min_val) {
1723 			min_val = val;
1724 			best_node = n;
1725 		}
1726 	}
1727 
1728 	if (best_node >= 0)
1729 		node_set(best_node, *used_node_mask);
1730 
1731 	return best_node;
1732 }
1733 
1734 static void __meminit build_zonelists(pg_data_t *pgdat)
1735 {
1736 	int j, node, local_node;
1737 	enum zone_type i;
1738 	int prev_node, load;
1739 	struct zonelist *zonelist;
1740 	nodemask_t used_mask;
1741 
1742 	/* initialize zonelists */
1743 	for (i = 0; i < MAX_NR_ZONES; i++) {
1744 		zonelist = pgdat->node_zonelists + i;
1745 		zonelist->zones[0] = NULL;
1746 	}
1747 
1748 	/* NUMA-aware ordering of nodes */
1749 	local_node = pgdat->node_id;
1750 	load = num_online_nodes();
1751 	prev_node = local_node;
1752 	nodes_clear(used_mask);
1753 	while ((node = find_next_best_node(local_node, &used_mask)) >= 0) {
1754 		int distance = node_distance(local_node, node);
1755 
1756 		/*
1757 		 * If another node is sufficiently far away then it is better
1758 		 * to reclaim pages in a zone before going off node.
1759 		 */
1760 		if (distance > RECLAIM_DISTANCE)
1761 			zone_reclaim_mode = 1;
1762 
1763 		/*
1764 		 * We don't want to pressure a particular node.
1765 		 * So adding penalty to the first node in same
1766 		 * distance group to make it round-robin.
1767 		 */
1768 
1769 		if (distance != node_distance(local_node, prev_node))
1770 			node_load[node] += load;
1771 		prev_node = node;
1772 		load--;
1773 		for (i = 0; i < MAX_NR_ZONES; i++) {
1774 			zonelist = pgdat->node_zonelists + i;
1775 			for (j = 0; zonelist->zones[j] != NULL; j++);
1776 
1777 	 		j = build_zonelists_node(NODE_DATA(node), zonelist, j, i);
1778 			zonelist->zones[j] = NULL;
1779 		}
1780 	}
1781 }
1782 
1783 /* Construct the zonelist performance cache - see further mmzone.h */
1784 static void __meminit build_zonelist_cache(pg_data_t *pgdat)
1785 {
1786 	int i;
1787 
1788 	for (i = 0; i < MAX_NR_ZONES; i++) {
1789 		struct zonelist *zonelist;
1790 		struct zonelist_cache *zlc;
1791 		struct zone **z;
1792 
1793 		zonelist = pgdat->node_zonelists + i;
1794 		zonelist->zlcache_ptr = zlc = &zonelist->zlcache;
1795 		bitmap_zero(zlc->fullzones, MAX_ZONES_PER_ZONELIST);
1796 		for (z = zonelist->zones; *z; z++)
1797 			zlc->z_to_n[z - zonelist->zones] = zone_to_nid(*z);
1798 	}
1799 }
1800 
1801 #else	/* CONFIG_NUMA */
1802 
1803 static void __meminit build_zonelists(pg_data_t *pgdat)
1804 {
1805 	int node, local_node;
1806 	enum zone_type i,j;
1807 
1808 	local_node = pgdat->node_id;
1809 	for (i = 0; i < MAX_NR_ZONES; i++) {
1810 		struct zonelist *zonelist;
1811 
1812 		zonelist = pgdat->node_zonelists + i;
1813 
1814  		j = build_zonelists_node(pgdat, zonelist, 0, i);
1815  		/*
1816  		 * Now we build the zonelist so that it contains the zones
1817  		 * of all the other nodes.
1818  		 * We don't want to pressure a particular node, so when
1819  		 * building the zones for node N, we make sure that the
1820  		 * zones coming right after the local ones are those from
1821  		 * node N+1 (modulo N)
1822  		 */
1823 		for (node = local_node + 1; node < MAX_NUMNODES; node++) {
1824 			if (!node_online(node))
1825 				continue;
1826 			j = build_zonelists_node(NODE_DATA(node), zonelist, j, i);
1827 		}
1828 		for (node = 0; node < local_node; node++) {
1829 			if (!node_online(node))
1830 				continue;
1831 			j = build_zonelists_node(NODE_DATA(node), zonelist, j, i);
1832 		}
1833 
1834 		zonelist->zones[j] = NULL;
1835 	}
1836 }
1837 
1838 /* non-NUMA variant of zonelist performance cache - just NULL zlcache_ptr */
1839 static void __meminit build_zonelist_cache(pg_data_t *pgdat)
1840 {
1841 	int i;
1842 
1843 	for (i = 0; i < MAX_NR_ZONES; i++)
1844 		pgdat->node_zonelists[i].zlcache_ptr = NULL;
1845 }
1846 
1847 #endif	/* CONFIG_NUMA */
1848 
1849 /* return values int ....just for stop_machine_run() */
1850 static int __meminit __build_all_zonelists(void *dummy)
1851 {
1852 	int nid;
1853 
1854 	for_each_online_node(nid) {
1855 		build_zonelists(NODE_DATA(nid));
1856 		build_zonelist_cache(NODE_DATA(nid));
1857 	}
1858 	return 0;
1859 }
1860 
1861 void __meminit build_all_zonelists(void)
1862 {
1863 	if (system_state == SYSTEM_BOOTING) {
1864 		__build_all_zonelists(NULL);
1865 		cpuset_init_current_mems_allowed();
1866 	} else {
1867 		/* we have to stop all cpus to guaranntee there is no user
1868 		   of zonelist */
1869 		stop_machine_run(__build_all_zonelists, NULL, NR_CPUS);
1870 		/* cpuset refresh routine should be here */
1871 	}
1872 	vm_total_pages = nr_free_pagecache_pages();
1873 	printk("Built %i zonelists.  Total pages: %ld\n",
1874 			num_online_nodes(), vm_total_pages);
1875 }
1876 
1877 /*
1878  * Helper functions to size the waitqueue hash table.
1879  * Essentially these want to choose hash table sizes sufficiently
1880  * large so that collisions trying to wait on pages are rare.
1881  * But in fact, the number of active page waitqueues on typical
1882  * systems is ridiculously low, less than 200. So this is even
1883  * conservative, even though it seems large.
1884  *
1885  * The constant PAGES_PER_WAITQUEUE specifies the ratio of pages to
1886  * waitqueues, i.e. the size of the waitq table given the number of pages.
1887  */
1888 #define PAGES_PER_WAITQUEUE	256
1889 
1890 #ifndef CONFIG_MEMORY_HOTPLUG
1891 static inline unsigned long wait_table_hash_nr_entries(unsigned long pages)
1892 {
1893 	unsigned long size = 1;
1894 
1895 	pages /= PAGES_PER_WAITQUEUE;
1896 
1897 	while (size < pages)
1898 		size <<= 1;
1899 
1900 	/*
1901 	 * Once we have dozens or even hundreds of threads sleeping
1902 	 * on IO we've got bigger problems than wait queue collision.
1903 	 * Limit the size of the wait table to a reasonable size.
1904 	 */
1905 	size = min(size, 4096UL);
1906 
1907 	return max(size, 4UL);
1908 }
1909 #else
1910 /*
1911  * A zone's size might be changed by hot-add, so it is not possible to determine
1912  * a suitable size for its wait_table.  So we use the maximum size now.
1913  *
1914  * The max wait table size = 4096 x sizeof(wait_queue_head_t).   ie:
1915  *
1916  *    i386 (preemption config)    : 4096 x 16 = 64Kbyte.
1917  *    ia64, x86-64 (no preemption): 4096 x 20 = 80Kbyte.
1918  *    ia64, x86-64 (preemption)   : 4096 x 24 = 96Kbyte.
1919  *
1920  * The maximum entries are prepared when a zone's memory is (512K + 256) pages
1921  * or more by the traditional way. (See above).  It equals:
1922  *
1923  *    i386, x86-64, powerpc(4K page size) : =  ( 2G + 1M)byte.
1924  *    ia64(16K page size)                 : =  ( 8G + 4M)byte.
1925  *    powerpc (64K page size)             : =  (32G +16M)byte.
1926  */
1927 static inline unsigned long wait_table_hash_nr_entries(unsigned long pages)
1928 {
1929 	return 4096UL;
1930 }
1931 #endif
1932 
1933 /*
1934  * This is an integer logarithm so that shifts can be used later
1935  * to extract the more random high bits from the multiplicative
1936  * hash function before the remainder is taken.
1937  */
1938 static inline unsigned long wait_table_bits(unsigned long size)
1939 {
1940 	return ffz(~size);
1941 }
1942 
1943 #define LONG_ALIGN(x) (((x)+(sizeof(long))-1)&~((sizeof(long))-1))
1944 
1945 /*
1946  * Initially all pages are reserved - free ones are freed
1947  * up by free_all_bootmem() once the early boot process is
1948  * done. Non-atomic initialization, single-pass.
1949  */
1950 void __meminit memmap_init_zone(unsigned long size, int nid, unsigned long zone,
1951 		unsigned long start_pfn, enum memmap_context context)
1952 {
1953 	struct page *page;
1954 	unsigned long end_pfn = start_pfn + size;
1955 	unsigned long pfn;
1956 
1957 	for (pfn = start_pfn; pfn < end_pfn; pfn++) {
1958 		/*
1959 		 * There can be holes in boot-time mem_map[]s
1960 		 * handed to this function.  They do not
1961 		 * exist on hotplugged memory.
1962 		 */
1963 		if (context == MEMMAP_EARLY) {
1964 			if (!early_pfn_valid(pfn))
1965 				continue;
1966 			if (!early_pfn_in_nid(pfn, nid))
1967 				continue;
1968 		}
1969 		page = pfn_to_page(pfn);
1970 		set_page_links(page, zone, nid, pfn);
1971 		init_page_count(page);
1972 		reset_page_mapcount(page);
1973 		SetPageReserved(page);
1974 		INIT_LIST_HEAD(&page->lru);
1975 #ifdef WANT_PAGE_VIRTUAL
1976 		/* The shift won't overflow because ZONE_NORMAL is below 4G. */
1977 		if (!is_highmem_idx(zone))
1978 			set_page_address(page, __va(pfn << PAGE_SHIFT));
1979 #endif
1980 	}
1981 }
1982 
1983 void zone_init_free_lists(struct pglist_data *pgdat, struct zone *zone,
1984 				unsigned long size)
1985 {
1986 	int order;
1987 	for (order = 0; order < MAX_ORDER ; order++) {
1988 		INIT_LIST_HEAD(&zone->free_area[order].free_list);
1989 		zone->free_area[order].nr_free = 0;
1990 	}
1991 }
1992 
1993 #ifndef __HAVE_ARCH_MEMMAP_INIT
1994 #define memmap_init(size, nid, zone, start_pfn) \
1995 	memmap_init_zone((size), (nid), (zone), (start_pfn), MEMMAP_EARLY)
1996 #endif
1997 
1998 static int __cpuinit zone_batchsize(struct zone *zone)
1999 {
2000 	int batch;
2001 
2002 	/*
2003 	 * The per-cpu-pages pools are set to around 1000th of the
2004 	 * size of the zone.  But no more than 1/2 of a meg.
2005 	 *
2006 	 * OK, so we don't know how big the cache is.  So guess.
2007 	 */
2008 	batch = zone->present_pages / 1024;
2009 	if (batch * PAGE_SIZE > 512 * 1024)
2010 		batch = (512 * 1024) / PAGE_SIZE;
2011 	batch /= 4;		/* We effectively *= 4 below */
2012 	if (batch < 1)
2013 		batch = 1;
2014 
2015 	/*
2016 	 * Clamp the batch to a 2^n - 1 value. Having a power
2017 	 * of 2 value was found to be more likely to have
2018 	 * suboptimal cache aliasing properties in some cases.
2019 	 *
2020 	 * For example if 2 tasks are alternately allocating
2021 	 * batches of pages, one task can end up with a lot
2022 	 * of pages of one half of the possible page colors
2023 	 * and the other with pages of the other colors.
2024 	 */
2025 	batch = (1 << (fls(batch + batch/2)-1)) - 1;
2026 
2027 	return batch;
2028 }
2029 
2030 inline void setup_pageset(struct per_cpu_pageset *p, unsigned long batch)
2031 {
2032 	struct per_cpu_pages *pcp;
2033 
2034 	memset(p, 0, sizeof(*p));
2035 
2036 	pcp = &p->pcp[0];		/* hot */
2037 	pcp->count = 0;
2038 	pcp->high = 6 * batch;
2039 	pcp->batch = max(1UL, 1 * batch);
2040 	INIT_LIST_HEAD(&pcp->list);
2041 
2042 	pcp = &p->pcp[1];		/* cold*/
2043 	pcp->count = 0;
2044 	pcp->high = 2 * batch;
2045 	pcp->batch = max(1UL, batch/2);
2046 	INIT_LIST_HEAD(&pcp->list);
2047 }
2048 
2049 /*
2050  * setup_pagelist_highmark() sets the high water mark for hot per_cpu_pagelist
2051  * to the value high for the pageset p.
2052  */
2053 
2054 static void setup_pagelist_highmark(struct per_cpu_pageset *p,
2055 				unsigned long high)
2056 {
2057 	struct per_cpu_pages *pcp;
2058 
2059 	pcp = &p->pcp[0]; /* hot list */
2060 	pcp->high = high;
2061 	pcp->batch = max(1UL, high/4);
2062 	if ((high/4) > (PAGE_SHIFT * 8))
2063 		pcp->batch = PAGE_SHIFT * 8;
2064 }
2065 
2066 
2067 #ifdef CONFIG_NUMA
2068 /*
2069  * Boot pageset table. One per cpu which is going to be used for all
2070  * zones and all nodes. The parameters will be set in such a way
2071  * that an item put on a list will immediately be handed over to
2072  * the buddy list. This is safe since pageset manipulation is done
2073  * with interrupts disabled.
2074  *
2075  * Some NUMA counter updates may also be caught by the boot pagesets.
2076  *
2077  * The boot_pagesets must be kept even after bootup is complete for
2078  * unused processors and/or zones. They do play a role for bootstrapping
2079  * hotplugged processors.
2080  *
2081  * zoneinfo_show() and maybe other functions do
2082  * not check if the processor is online before following the pageset pointer.
2083  * Other parts of the kernel may not check if the zone is available.
2084  */
2085 static struct per_cpu_pageset boot_pageset[NR_CPUS];
2086 
2087 /*
2088  * Dynamically allocate memory for the
2089  * per cpu pageset array in struct zone.
2090  */
2091 static int __cpuinit process_zones(int cpu)
2092 {
2093 	struct zone *zone, *dzone;
2094 
2095 	for_each_zone(zone) {
2096 
2097 		if (!populated_zone(zone))
2098 			continue;
2099 
2100 		zone_pcp(zone, cpu) = kmalloc_node(sizeof(struct per_cpu_pageset),
2101 					 GFP_KERNEL, cpu_to_node(cpu));
2102 		if (!zone_pcp(zone, cpu))
2103 			goto bad;
2104 
2105 		setup_pageset(zone_pcp(zone, cpu), zone_batchsize(zone));
2106 
2107 		if (percpu_pagelist_fraction)
2108 			setup_pagelist_highmark(zone_pcp(zone, cpu),
2109 			 	(zone->present_pages / percpu_pagelist_fraction));
2110 	}
2111 
2112 	return 0;
2113 bad:
2114 	for_each_zone(dzone) {
2115 		if (dzone == zone)
2116 			break;
2117 		kfree(zone_pcp(dzone, cpu));
2118 		zone_pcp(dzone, cpu) = NULL;
2119 	}
2120 	return -ENOMEM;
2121 }
2122 
2123 static inline void free_zone_pagesets(int cpu)
2124 {
2125 	struct zone *zone;
2126 
2127 	for_each_zone(zone) {
2128 		struct per_cpu_pageset *pset = zone_pcp(zone, cpu);
2129 
2130 		/* Free per_cpu_pageset if it is slab allocated */
2131 		if (pset != &boot_pageset[cpu])
2132 			kfree(pset);
2133 		zone_pcp(zone, cpu) = NULL;
2134 	}
2135 }
2136 
2137 static int __cpuinit pageset_cpuup_callback(struct notifier_block *nfb,
2138 		unsigned long action,
2139 		void *hcpu)
2140 {
2141 	int cpu = (long)hcpu;
2142 	int ret = NOTIFY_OK;
2143 
2144 	switch (action) {
2145 	case CPU_UP_PREPARE:
2146 		if (process_zones(cpu))
2147 			ret = NOTIFY_BAD;
2148 		break;
2149 	case CPU_UP_CANCELED:
2150 	case CPU_DEAD:
2151 		free_zone_pagesets(cpu);
2152 		break;
2153 	default:
2154 		break;
2155 	}
2156 	return ret;
2157 }
2158 
2159 static struct notifier_block __cpuinitdata pageset_notifier =
2160 	{ &pageset_cpuup_callback, NULL, 0 };
2161 
2162 void __init setup_per_cpu_pageset(void)
2163 {
2164 	int err;
2165 
2166 	/* Initialize per_cpu_pageset for cpu 0.
2167 	 * A cpuup callback will do this for every cpu
2168 	 * as it comes online
2169 	 */
2170 	err = process_zones(smp_processor_id());
2171 	BUG_ON(err);
2172 	register_cpu_notifier(&pageset_notifier);
2173 }
2174 
2175 #endif
2176 
2177 static __meminit
2178 int zone_wait_table_init(struct zone *zone, unsigned long zone_size_pages)
2179 {
2180 	int i;
2181 	struct pglist_data *pgdat = zone->zone_pgdat;
2182 	size_t alloc_size;
2183 
2184 	/*
2185 	 * The per-page waitqueue mechanism uses hashed waitqueues
2186 	 * per zone.
2187 	 */
2188 	zone->wait_table_hash_nr_entries =
2189 		 wait_table_hash_nr_entries(zone_size_pages);
2190 	zone->wait_table_bits =
2191 		wait_table_bits(zone->wait_table_hash_nr_entries);
2192 	alloc_size = zone->wait_table_hash_nr_entries
2193 					* sizeof(wait_queue_head_t);
2194 
2195  	if (system_state == SYSTEM_BOOTING) {
2196 		zone->wait_table = (wait_queue_head_t *)
2197 			alloc_bootmem_node(pgdat, alloc_size);
2198 	} else {
2199 		/*
2200 		 * This case means that a zone whose size was 0 gets new memory
2201 		 * via memory hot-add.
2202 		 * But it may be the case that a new node was hot-added.  In
2203 		 * this case vmalloc() will not be able to use this new node's
2204 		 * memory - this wait_table must be initialized to use this new
2205 		 * node itself as well.
2206 		 * To use this new node's memory, further consideration will be
2207 		 * necessary.
2208 		 */
2209 		zone->wait_table = (wait_queue_head_t *)vmalloc(alloc_size);
2210 	}
2211 	if (!zone->wait_table)
2212 		return -ENOMEM;
2213 
2214 	for(i = 0; i < zone->wait_table_hash_nr_entries; ++i)
2215 		init_waitqueue_head(zone->wait_table + i);
2216 
2217 	return 0;
2218 }
2219 
2220 static __meminit void zone_pcp_init(struct zone *zone)
2221 {
2222 	int cpu;
2223 	unsigned long batch = zone_batchsize(zone);
2224 
2225 	for (cpu = 0; cpu < NR_CPUS; cpu++) {
2226 #ifdef CONFIG_NUMA
2227 		/* Early boot. Slab allocator not functional yet */
2228 		zone_pcp(zone, cpu) = &boot_pageset[cpu];
2229 		setup_pageset(&boot_pageset[cpu],0);
2230 #else
2231 		setup_pageset(zone_pcp(zone,cpu), batch);
2232 #endif
2233 	}
2234 	if (zone->present_pages)
2235 		printk(KERN_DEBUG "  %s zone: %lu pages, LIFO batch:%lu\n",
2236 			zone->name, zone->present_pages, batch);
2237 }
2238 
2239 __meminit int init_currently_empty_zone(struct zone *zone,
2240 					unsigned long zone_start_pfn,
2241 					unsigned long size,
2242 					enum memmap_context context)
2243 {
2244 	struct pglist_data *pgdat = zone->zone_pgdat;
2245 	int ret;
2246 	ret = zone_wait_table_init(zone, size);
2247 	if (ret)
2248 		return ret;
2249 	pgdat->nr_zones = zone_idx(zone) + 1;
2250 
2251 	zone->zone_start_pfn = zone_start_pfn;
2252 
2253 	memmap_init(size, pgdat->node_id, zone_idx(zone), zone_start_pfn);
2254 
2255 	zone_init_free_lists(pgdat, zone, zone->spanned_pages);
2256 
2257 	return 0;
2258 }
2259 
2260 #ifdef CONFIG_ARCH_POPULATES_NODE_MAP
2261 /*
2262  * Basic iterator support. Return the first range of PFNs for a node
2263  * Note: nid == MAX_NUMNODES returns first region regardless of node
2264  */
2265 static int __init first_active_region_index_in_nid(int nid)
2266 {
2267 	int i;
2268 
2269 	for (i = 0; i < nr_nodemap_entries; i++)
2270 		if (nid == MAX_NUMNODES || early_node_map[i].nid == nid)
2271 			return i;
2272 
2273 	return -1;
2274 }
2275 
2276 /*
2277  * Basic iterator support. Return the next active range of PFNs for a node
2278  * Note: nid == MAX_NUMNODES returns next region regardles of node
2279  */
2280 static int __init next_active_region_index_in_nid(int index, int nid)
2281 {
2282 	for (index = index + 1; index < nr_nodemap_entries; index++)
2283 		if (nid == MAX_NUMNODES || early_node_map[index].nid == nid)
2284 			return index;
2285 
2286 	return -1;
2287 }
2288 
2289 #ifndef CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID
2290 /*
2291  * Required by SPARSEMEM. Given a PFN, return what node the PFN is on.
2292  * Architectures may implement their own version but if add_active_range()
2293  * was used and there are no special requirements, this is a convenient
2294  * alternative
2295  */
2296 int __init early_pfn_to_nid(unsigned long pfn)
2297 {
2298 	int i;
2299 
2300 	for (i = 0; i < nr_nodemap_entries; i++) {
2301 		unsigned long start_pfn = early_node_map[i].start_pfn;
2302 		unsigned long end_pfn = early_node_map[i].end_pfn;
2303 
2304 		if (start_pfn <= pfn && pfn < end_pfn)
2305 			return early_node_map[i].nid;
2306 	}
2307 
2308 	return 0;
2309 }
2310 #endif /* CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID */
2311 
2312 /* Basic iterator support to walk early_node_map[] */
2313 #define for_each_active_range_index_in_nid(i, nid) \
2314 	for (i = first_active_region_index_in_nid(nid); i != -1; \
2315 				i = next_active_region_index_in_nid(i, nid))
2316 
2317 /**
2318  * free_bootmem_with_active_regions - Call free_bootmem_node for each active range
2319  * @nid: The node to free memory on. If MAX_NUMNODES, all nodes are freed.
2320  * @max_low_pfn: The highest PFN that will be passed to free_bootmem_node
2321  *
2322  * If an architecture guarantees that all ranges registered with
2323  * add_active_ranges() contain no holes and may be freed, this
2324  * this function may be used instead of calling free_bootmem() manually.
2325  */
2326 void __init free_bootmem_with_active_regions(int nid,
2327 						unsigned long max_low_pfn)
2328 {
2329 	int i;
2330 
2331 	for_each_active_range_index_in_nid(i, nid) {
2332 		unsigned long size_pages = 0;
2333 		unsigned long end_pfn = early_node_map[i].end_pfn;
2334 
2335 		if (early_node_map[i].start_pfn >= max_low_pfn)
2336 			continue;
2337 
2338 		if (end_pfn > max_low_pfn)
2339 			end_pfn = max_low_pfn;
2340 
2341 		size_pages = end_pfn - early_node_map[i].start_pfn;
2342 		free_bootmem_node(NODE_DATA(early_node_map[i].nid),
2343 				PFN_PHYS(early_node_map[i].start_pfn),
2344 				size_pages << PAGE_SHIFT);
2345 	}
2346 }
2347 
2348 /**
2349  * sparse_memory_present_with_active_regions - Call memory_present for each active range
2350  * @nid: The node to call memory_present for. If MAX_NUMNODES, all nodes will be used.
2351  *
2352  * If an architecture guarantees that all ranges registered with
2353  * add_active_ranges() contain no holes and may be freed, this
2354  * function may be used instead of calling memory_present() manually.
2355  */
2356 void __init sparse_memory_present_with_active_regions(int nid)
2357 {
2358 	int i;
2359 
2360 	for_each_active_range_index_in_nid(i, nid)
2361 		memory_present(early_node_map[i].nid,
2362 				early_node_map[i].start_pfn,
2363 				early_node_map[i].end_pfn);
2364 }
2365 
2366 /**
2367  * push_node_boundaries - Push node boundaries to at least the requested boundary
2368  * @nid: The nid of the node to push the boundary for
2369  * @start_pfn: The start pfn of the node
2370  * @end_pfn: The end pfn of the node
2371  *
2372  * In reserve-based hot-add, mem_map is allocated that is unused until hotadd
2373  * time. Specifically, on x86_64, SRAT will report ranges that can potentially
2374  * be hotplugged even though no physical memory exists. This function allows
2375  * an arch to push out the node boundaries so mem_map is allocated that can
2376  * be used later.
2377  */
2378 #ifdef CONFIG_MEMORY_HOTPLUG_RESERVE
2379 void __init push_node_boundaries(unsigned int nid,
2380 		unsigned long start_pfn, unsigned long end_pfn)
2381 {
2382 	printk(KERN_DEBUG "Entering push_node_boundaries(%u, %lu, %lu)\n",
2383 			nid, start_pfn, end_pfn);
2384 
2385 	/* Initialise the boundary for this node if necessary */
2386 	if (node_boundary_end_pfn[nid] == 0)
2387 		node_boundary_start_pfn[nid] = -1UL;
2388 
2389 	/* Update the boundaries */
2390 	if (node_boundary_start_pfn[nid] > start_pfn)
2391 		node_boundary_start_pfn[nid] = start_pfn;
2392 	if (node_boundary_end_pfn[nid] < end_pfn)
2393 		node_boundary_end_pfn[nid] = end_pfn;
2394 }
2395 
2396 /* If necessary, push the node boundary out for reserve hotadd */
2397 static void __init account_node_boundary(unsigned int nid,
2398 		unsigned long *start_pfn, unsigned long *end_pfn)
2399 {
2400 	printk(KERN_DEBUG "Entering account_node_boundary(%u, %lu, %lu)\n",
2401 			nid, *start_pfn, *end_pfn);
2402 
2403 	/* Return if boundary information has not been provided */
2404 	if (node_boundary_end_pfn[nid] == 0)
2405 		return;
2406 
2407 	/* Check the boundaries and update if necessary */
2408 	if (node_boundary_start_pfn[nid] < *start_pfn)
2409 		*start_pfn = node_boundary_start_pfn[nid];
2410 	if (node_boundary_end_pfn[nid] > *end_pfn)
2411 		*end_pfn = node_boundary_end_pfn[nid];
2412 }
2413 #else
2414 void __init push_node_boundaries(unsigned int nid,
2415 		unsigned long start_pfn, unsigned long end_pfn) {}
2416 
2417 static void __init account_node_boundary(unsigned int nid,
2418 		unsigned long *start_pfn, unsigned long *end_pfn) {}
2419 #endif
2420 
2421 
2422 /**
2423  * get_pfn_range_for_nid - Return the start and end page frames for a node
2424  * @nid: The nid to return the range for. If MAX_NUMNODES, the min and max PFN are returned.
2425  * @start_pfn: Passed by reference. On return, it will have the node start_pfn.
2426  * @end_pfn: Passed by reference. On return, it will have the node end_pfn.
2427  *
2428  * It returns the start and end page frame of a node based on information
2429  * provided by an arch calling add_active_range(). If called for a node
2430  * with no available memory, a warning is printed and the start and end
2431  * PFNs will be 0.
2432  */
2433 void __init get_pfn_range_for_nid(unsigned int nid,
2434 			unsigned long *start_pfn, unsigned long *end_pfn)
2435 {
2436 	int i;
2437 	*start_pfn = -1UL;
2438 	*end_pfn = 0;
2439 
2440 	for_each_active_range_index_in_nid(i, nid) {
2441 		*start_pfn = min(*start_pfn, early_node_map[i].start_pfn);
2442 		*end_pfn = max(*end_pfn, early_node_map[i].end_pfn);
2443 	}
2444 
2445 	if (*start_pfn == -1UL) {
2446 		printk(KERN_WARNING "Node %u active with no memory\n", nid);
2447 		*start_pfn = 0;
2448 	}
2449 
2450 	/* Push the node boundaries out if requested */
2451 	account_node_boundary(nid, start_pfn, end_pfn);
2452 }
2453 
2454 /*
2455  * Return the number of pages a zone spans in a node, including holes
2456  * present_pages = zone_spanned_pages_in_node() - zone_absent_pages_in_node()
2457  */
2458 unsigned long __init zone_spanned_pages_in_node(int nid,
2459 					unsigned long zone_type,
2460 					unsigned long *ignored)
2461 {
2462 	unsigned long node_start_pfn, node_end_pfn;
2463 	unsigned long zone_start_pfn, zone_end_pfn;
2464 
2465 	/* Get the start and end of the node and zone */
2466 	get_pfn_range_for_nid(nid, &node_start_pfn, &node_end_pfn);
2467 	zone_start_pfn = arch_zone_lowest_possible_pfn[zone_type];
2468 	zone_end_pfn = arch_zone_highest_possible_pfn[zone_type];
2469 
2470 	/* Check that this node has pages within the zone's required range */
2471 	if (zone_end_pfn < node_start_pfn || zone_start_pfn > node_end_pfn)
2472 		return 0;
2473 
2474 	/* Move the zone boundaries inside the node if necessary */
2475 	zone_end_pfn = min(zone_end_pfn, node_end_pfn);
2476 	zone_start_pfn = max(zone_start_pfn, node_start_pfn);
2477 
2478 	/* Return the spanned pages */
2479 	return zone_end_pfn - zone_start_pfn;
2480 }
2481 
2482 /*
2483  * Return the number of holes in a range on a node. If nid is MAX_NUMNODES,
2484  * then all holes in the requested range will be accounted for.
2485  */
2486 unsigned long __init __absent_pages_in_range(int nid,
2487 				unsigned long range_start_pfn,
2488 				unsigned long range_end_pfn)
2489 {
2490 	int i = 0;
2491 	unsigned long prev_end_pfn = 0, hole_pages = 0;
2492 	unsigned long start_pfn;
2493 
2494 	/* Find the end_pfn of the first active range of pfns in the node */
2495 	i = first_active_region_index_in_nid(nid);
2496 	if (i == -1)
2497 		return 0;
2498 
2499 	/* Account for ranges before physical memory on this node */
2500 	if (early_node_map[i].start_pfn > range_start_pfn)
2501 		hole_pages = early_node_map[i].start_pfn - range_start_pfn;
2502 
2503 	prev_end_pfn = early_node_map[i].start_pfn;
2504 
2505 	/* Find all holes for the zone within the node */
2506 	for (; i != -1; i = next_active_region_index_in_nid(i, nid)) {
2507 
2508 		/* No need to continue if prev_end_pfn is outside the zone */
2509 		if (prev_end_pfn >= range_end_pfn)
2510 			break;
2511 
2512 		/* Make sure the end of the zone is not within the hole */
2513 		start_pfn = min(early_node_map[i].start_pfn, range_end_pfn);
2514 		prev_end_pfn = max(prev_end_pfn, range_start_pfn);
2515 
2516 		/* Update the hole size cound and move on */
2517 		if (start_pfn > range_start_pfn) {
2518 			BUG_ON(prev_end_pfn > start_pfn);
2519 			hole_pages += start_pfn - prev_end_pfn;
2520 		}
2521 		prev_end_pfn = early_node_map[i].end_pfn;
2522 	}
2523 
2524 	/* Account for ranges past physical memory on this node */
2525 	if (range_end_pfn > prev_end_pfn)
2526 		hole_pages += range_end_pfn -
2527 				max(range_start_pfn, prev_end_pfn);
2528 
2529 	return hole_pages;
2530 }
2531 
2532 /**
2533  * absent_pages_in_range - Return number of page frames in holes within a range
2534  * @start_pfn: The start PFN to start searching for holes
2535  * @end_pfn: The end PFN to stop searching for holes
2536  *
2537  * It returns the number of pages frames in memory holes within a range.
2538  */
2539 unsigned long __init absent_pages_in_range(unsigned long start_pfn,
2540 							unsigned long end_pfn)
2541 {
2542 	return __absent_pages_in_range(MAX_NUMNODES, start_pfn, end_pfn);
2543 }
2544 
2545 /* Return the number of page frames in holes in a zone on a node */
2546 unsigned long __init zone_absent_pages_in_node(int nid,
2547 					unsigned long zone_type,
2548 					unsigned long *ignored)
2549 {
2550 	unsigned long node_start_pfn, node_end_pfn;
2551 	unsigned long zone_start_pfn, zone_end_pfn;
2552 
2553 	get_pfn_range_for_nid(nid, &node_start_pfn, &node_end_pfn);
2554 	zone_start_pfn = max(arch_zone_lowest_possible_pfn[zone_type],
2555 							node_start_pfn);
2556 	zone_end_pfn = min(arch_zone_highest_possible_pfn[zone_type],
2557 							node_end_pfn);
2558 
2559 	return __absent_pages_in_range(nid, zone_start_pfn, zone_end_pfn);
2560 }
2561 
2562 #else
2563 static inline unsigned long zone_spanned_pages_in_node(int nid,
2564 					unsigned long zone_type,
2565 					unsigned long *zones_size)
2566 {
2567 	return zones_size[zone_type];
2568 }
2569 
2570 static inline unsigned long zone_absent_pages_in_node(int nid,
2571 						unsigned long zone_type,
2572 						unsigned long *zholes_size)
2573 {
2574 	if (!zholes_size)
2575 		return 0;
2576 
2577 	return zholes_size[zone_type];
2578 }
2579 
2580 #endif
2581 
2582 static void __init calculate_node_totalpages(struct pglist_data *pgdat,
2583 		unsigned long *zones_size, unsigned long *zholes_size)
2584 {
2585 	unsigned long realtotalpages, totalpages = 0;
2586 	enum zone_type i;
2587 
2588 	for (i = 0; i < MAX_NR_ZONES; i++)
2589 		totalpages += zone_spanned_pages_in_node(pgdat->node_id, i,
2590 								zones_size);
2591 	pgdat->node_spanned_pages = totalpages;
2592 
2593 	realtotalpages = totalpages;
2594 	for (i = 0; i < MAX_NR_ZONES; i++)
2595 		realtotalpages -=
2596 			zone_absent_pages_in_node(pgdat->node_id, i,
2597 								zholes_size);
2598 	pgdat->node_present_pages = realtotalpages;
2599 	printk(KERN_DEBUG "On node %d totalpages: %lu\n", pgdat->node_id,
2600 							realtotalpages);
2601 }
2602 
2603 /*
2604  * Set up the zone data structures:
2605  *   - mark all pages reserved
2606  *   - mark all memory queues empty
2607  *   - clear the memory bitmaps
2608  */
2609 static void __meminit free_area_init_core(struct pglist_data *pgdat,
2610 		unsigned long *zones_size, unsigned long *zholes_size)
2611 {
2612 	enum zone_type j;
2613 	int nid = pgdat->node_id;
2614 	unsigned long zone_start_pfn = pgdat->node_start_pfn;
2615 	int ret;
2616 
2617 	pgdat_resize_init(pgdat);
2618 	pgdat->nr_zones = 0;
2619 	init_waitqueue_head(&pgdat->kswapd_wait);
2620 	pgdat->kswapd_max_order = 0;
2621 
2622 	for (j = 0; j < MAX_NR_ZONES; j++) {
2623 		struct zone *zone = pgdat->node_zones + j;
2624 		unsigned long size, realsize, memmap_pages;
2625 
2626 		size = zone_spanned_pages_in_node(nid, j, zones_size);
2627 		realsize = size - zone_absent_pages_in_node(nid, j,
2628 								zholes_size);
2629 
2630 		/*
2631 		 * Adjust realsize so that it accounts for how much memory
2632 		 * is used by this zone for memmap. This affects the watermark
2633 		 * and per-cpu initialisations
2634 		 */
2635 		memmap_pages = (size * sizeof(struct page)) >> PAGE_SHIFT;
2636 		if (realsize >= memmap_pages) {
2637 			realsize -= memmap_pages;
2638 			printk(KERN_DEBUG
2639 				"  %s zone: %lu pages used for memmap\n",
2640 				zone_names[j], memmap_pages);
2641 		} else
2642 			printk(KERN_WARNING
2643 				"  %s zone: %lu pages exceeds realsize %lu\n",
2644 				zone_names[j], memmap_pages, realsize);
2645 
2646 		/* Account for reserved pages */
2647 		if (j == 0 && realsize > dma_reserve) {
2648 			realsize -= dma_reserve;
2649 			printk(KERN_DEBUG "  %s zone: %lu pages reserved\n",
2650 					zone_names[0], dma_reserve);
2651 		}
2652 
2653 		if (!is_highmem_idx(j))
2654 			nr_kernel_pages += realsize;
2655 		nr_all_pages += realsize;
2656 
2657 		zone->spanned_pages = size;
2658 		zone->present_pages = realsize;
2659 #ifdef CONFIG_NUMA
2660 		zone->node = nid;
2661 		zone->min_unmapped_pages = (realsize*sysctl_min_unmapped_ratio)
2662 						/ 100;
2663 		zone->min_slab_pages = (realsize * sysctl_min_slab_ratio) / 100;
2664 #endif
2665 		zone->name = zone_names[j];
2666 		spin_lock_init(&zone->lock);
2667 		spin_lock_init(&zone->lru_lock);
2668 		zone_seqlock_init(zone);
2669 		zone->zone_pgdat = pgdat;
2670 
2671 		zone->prev_priority = DEF_PRIORITY;
2672 
2673 		zone_pcp_init(zone);
2674 		INIT_LIST_HEAD(&zone->active_list);
2675 		INIT_LIST_HEAD(&zone->inactive_list);
2676 		zone->nr_scan_active = 0;
2677 		zone->nr_scan_inactive = 0;
2678 		zap_zone_vm_stats(zone);
2679 		atomic_set(&zone->reclaim_in_progress, 0);
2680 		if (!size)
2681 			continue;
2682 
2683 		ret = init_currently_empty_zone(zone, zone_start_pfn,
2684 						size, MEMMAP_EARLY);
2685 		BUG_ON(ret);
2686 		zone_start_pfn += size;
2687 	}
2688 }
2689 
2690 static void __init alloc_node_mem_map(struct pglist_data *pgdat)
2691 {
2692 	/* Skip empty nodes */
2693 	if (!pgdat->node_spanned_pages)
2694 		return;
2695 
2696 #ifdef CONFIG_FLAT_NODE_MEM_MAP
2697 	/* ia64 gets its own node_mem_map, before this, without bootmem */
2698 	if (!pgdat->node_mem_map) {
2699 		unsigned long size, start, end;
2700 		struct page *map;
2701 
2702 		/*
2703 		 * The zone's endpoints aren't required to be MAX_ORDER
2704 		 * aligned but the node_mem_map endpoints must be in order
2705 		 * for the buddy allocator to function correctly.
2706 		 */
2707 		start = pgdat->node_start_pfn & ~(MAX_ORDER_NR_PAGES - 1);
2708 		end = pgdat->node_start_pfn + pgdat->node_spanned_pages;
2709 		end = ALIGN(end, MAX_ORDER_NR_PAGES);
2710 		size =  (end - start) * sizeof(struct page);
2711 		map = alloc_remap(pgdat->node_id, size);
2712 		if (!map)
2713 			map = alloc_bootmem_node(pgdat, size);
2714 		pgdat->node_mem_map = map + (pgdat->node_start_pfn - start);
2715 	}
2716 #ifdef CONFIG_FLATMEM
2717 	/*
2718 	 * With no DISCONTIG, the global mem_map is just set as node 0's
2719 	 */
2720 	if (pgdat == NODE_DATA(0)) {
2721 		mem_map = NODE_DATA(0)->node_mem_map;
2722 #ifdef CONFIG_ARCH_POPULATES_NODE_MAP
2723 		if (page_to_pfn(mem_map) != pgdat->node_start_pfn)
2724 			mem_map -= pgdat->node_start_pfn;
2725 #endif /* CONFIG_ARCH_POPULATES_NODE_MAP */
2726 	}
2727 #endif
2728 #endif /* CONFIG_FLAT_NODE_MEM_MAP */
2729 }
2730 
2731 void __meminit free_area_init_node(int nid, struct pglist_data *pgdat,
2732 		unsigned long *zones_size, unsigned long node_start_pfn,
2733 		unsigned long *zholes_size)
2734 {
2735 	pgdat->node_id = nid;
2736 	pgdat->node_start_pfn = node_start_pfn;
2737 	calculate_node_totalpages(pgdat, zones_size, zholes_size);
2738 
2739 	alloc_node_mem_map(pgdat);
2740 
2741 	free_area_init_core(pgdat, zones_size, zholes_size);
2742 }
2743 
2744 #ifdef CONFIG_ARCH_POPULATES_NODE_MAP
2745 /**
2746  * add_active_range - Register a range of PFNs backed by physical memory
2747  * @nid: The node ID the range resides on
2748  * @start_pfn: The start PFN of the available physical memory
2749  * @end_pfn: The end PFN of the available physical memory
2750  *
2751  * These ranges are stored in an early_node_map[] and later used by
2752  * free_area_init_nodes() to calculate zone sizes and holes. If the
2753  * range spans a memory hole, it is up to the architecture to ensure
2754  * the memory is not freed by the bootmem allocator. If possible
2755  * the range being registered will be merged with existing ranges.
2756  */
2757 void __init add_active_range(unsigned int nid, unsigned long start_pfn,
2758 						unsigned long end_pfn)
2759 {
2760 	int i;
2761 
2762 	printk(KERN_DEBUG "Entering add_active_range(%d, %lu, %lu) "
2763 			  "%d entries of %d used\n",
2764 			  nid, start_pfn, end_pfn,
2765 			  nr_nodemap_entries, MAX_ACTIVE_REGIONS);
2766 
2767 	/* Merge with existing active regions if possible */
2768 	for (i = 0; i < nr_nodemap_entries; i++) {
2769 		if (early_node_map[i].nid != nid)
2770 			continue;
2771 
2772 		/* Skip if an existing region covers this new one */
2773 		if (start_pfn >= early_node_map[i].start_pfn &&
2774 				end_pfn <= early_node_map[i].end_pfn)
2775 			return;
2776 
2777 		/* Merge forward if suitable */
2778 		if (start_pfn <= early_node_map[i].end_pfn &&
2779 				end_pfn > early_node_map[i].end_pfn) {
2780 			early_node_map[i].end_pfn = end_pfn;
2781 			return;
2782 		}
2783 
2784 		/* Merge backward if suitable */
2785 		if (start_pfn < early_node_map[i].end_pfn &&
2786 				end_pfn >= early_node_map[i].start_pfn) {
2787 			early_node_map[i].start_pfn = start_pfn;
2788 			return;
2789 		}
2790 	}
2791 
2792 	/* Check that early_node_map is large enough */
2793 	if (i >= MAX_ACTIVE_REGIONS) {
2794 		printk(KERN_CRIT "More than %d memory regions, truncating\n",
2795 							MAX_ACTIVE_REGIONS);
2796 		return;
2797 	}
2798 
2799 	early_node_map[i].nid = nid;
2800 	early_node_map[i].start_pfn = start_pfn;
2801 	early_node_map[i].end_pfn = end_pfn;
2802 	nr_nodemap_entries = i + 1;
2803 }
2804 
2805 /**
2806  * shrink_active_range - Shrink an existing registered range of PFNs
2807  * @nid: The node id the range is on that should be shrunk
2808  * @old_end_pfn: The old end PFN of the range
2809  * @new_end_pfn: The new PFN of the range
2810  *
2811  * i386 with NUMA use alloc_remap() to store a node_mem_map on a local node.
2812  * The map is kept at the end physical page range that has already been
2813  * registered with add_active_range(). This function allows an arch to shrink
2814  * an existing registered range.
2815  */
2816 void __init shrink_active_range(unsigned int nid, unsigned long old_end_pfn,
2817 						unsigned long new_end_pfn)
2818 {
2819 	int i;
2820 
2821 	/* Find the old active region end and shrink */
2822 	for_each_active_range_index_in_nid(i, nid)
2823 		if (early_node_map[i].end_pfn == old_end_pfn) {
2824 			early_node_map[i].end_pfn = new_end_pfn;
2825 			break;
2826 		}
2827 }
2828 
2829 /**
2830  * remove_all_active_ranges - Remove all currently registered regions
2831  *
2832  * During discovery, it may be found that a table like SRAT is invalid
2833  * and an alternative discovery method must be used. This function removes
2834  * all currently registered regions.
2835  */
2836 void __init remove_all_active_ranges(void)
2837 {
2838 	memset(early_node_map, 0, sizeof(early_node_map));
2839 	nr_nodemap_entries = 0;
2840 #ifdef CONFIG_MEMORY_HOTPLUG_RESERVE
2841 	memset(node_boundary_start_pfn, 0, sizeof(node_boundary_start_pfn));
2842 	memset(node_boundary_end_pfn, 0, sizeof(node_boundary_end_pfn));
2843 #endif /* CONFIG_MEMORY_HOTPLUG_RESERVE */
2844 }
2845 
2846 /* Compare two active node_active_regions */
2847 static int __init cmp_node_active_region(const void *a, const void *b)
2848 {
2849 	struct node_active_region *arange = (struct node_active_region *)a;
2850 	struct node_active_region *brange = (struct node_active_region *)b;
2851 
2852 	/* Done this way to avoid overflows */
2853 	if (arange->start_pfn > brange->start_pfn)
2854 		return 1;
2855 	if (arange->start_pfn < brange->start_pfn)
2856 		return -1;
2857 
2858 	return 0;
2859 }
2860 
2861 /* sort the node_map by start_pfn */
2862 static void __init sort_node_map(void)
2863 {
2864 	sort(early_node_map, (size_t)nr_nodemap_entries,
2865 			sizeof(struct node_active_region),
2866 			cmp_node_active_region, NULL);
2867 }
2868 
2869 /* Find the lowest pfn for a node */
2870 unsigned long __init find_min_pfn_for_node(unsigned long nid)
2871 {
2872 	int i;
2873 	unsigned long min_pfn = ULONG_MAX;
2874 
2875 	/* Assuming a sorted map, the first range found has the starting pfn */
2876 	for_each_active_range_index_in_nid(i, nid)
2877 		min_pfn = min(min_pfn, early_node_map[i].start_pfn);
2878 
2879 	if (min_pfn == ULONG_MAX) {
2880 		printk(KERN_WARNING
2881 			"Could not find start_pfn for node %lu\n", nid);
2882 		return 0;
2883 	}
2884 
2885 	return min_pfn;
2886 }
2887 
2888 /**
2889  * find_min_pfn_with_active_regions - Find the minimum PFN registered
2890  *
2891  * It returns the minimum PFN based on information provided via
2892  * add_active_range().
2893  */
2894 unsigned long __init find_min_pfn_with_active_regions(void)
2895 {
2896 	return find_min_pfn_for_node(MAX_NUMNODES);
2897 }
2898 
2899 /**
2900  * find_max_pfn_with_active_regions - Find the maximum PFN registered
2901  *
2902  * It returns the maximum PFN based on information provided via
2903  * add_active_range().
2904  */
2905 unsigned long __init find_max_pfn_with_active_regions(void)
2906 {
2907 	int i;
2908 	unsigned long max_pfn = 0;
2909 
2910 	for (i = 0; i < nr_nodemap_entries; i++)
2911 		max_pfn = max(max_pfn, early_node_map[i].end_pfn);
2912 
2913 	return max_pfn;
2914 }
2915 
2916 /**
2917  * free_area_init_nodes - Initialise all pg_data_t and zone data
2918  * @max_zone_pfn: an array of max PFNs for each zone
2919  *
2920  * This will call free_area_init_node() for each active node in the system.
2921  * Using the page ranges provided by add_active_range(), the size of each
2922  * zone in each node and their holes is calculated. If the maximum PFN
2923  * between two adjacent zones match, it is assumed that the zone is empty.
2924  * For example, if arch_max_dma_pfn == arch_max_dma32_pfn, it is assumed
2925  * that arch_max_dma32_pfn has no pages. It is also assumed that a zone
2926  * starts where the previous one ended. For example, ZONE_DMA32 starts
2927  * at arch_max_dma_pfn.
2928  */
2929 void __init free_area_init_nodes(unsigned long *max_zone_pfn)
2930 {
2931 	unsigned long nid;
2932 	enum zone_type i;
2933 
2934 	/* Sort early_node_map as initialisation assumes it is sorted */
2935 	sort_node_map();
2936 
2937 	/* Record where the zone boundaries are */
2938 	memset(arch_zone_lowest_possible_pfn, 0,
2939 				sizeof(arch_zone_lowest_possible_pfn));
2940 	memset(arch_zone_highest_possible_pfn, 0,
2941 				sizeof(arch_zone_highest_possible_pfn));
2942 	arch_zone_lowest_possible_pfn[0] = find_min_pfn_with_active_regions();
2943 	arch_zone_highest_possible_pfn[0] = max_zone_pfn[0];
2944 	for (i = 1; i < MAX_NR_ZONES; i++) {
2945 		arch_zone_lowest_possible_pfn[i] =
2946 			arch_zone_highest_possible_pfn[i-1];
2947 		arch_zone_highest_possible_pfn[i] =
2948 			max(max_zone_pfn[i], arch_zone_lowest_possible_pfn[i]);
2949 	}
2950 
2951 	/* Print out the zone ranges */
2952 	printk("Zone PFN ranges:\n");
2953 	for (i = 0; i < MAX_NR_ZONES; i++)
2954 		printk("  %-8s %8lu -> %8lu\n",
2955 				zone_names[i],
2956 				arch_zone_lowest_possible_pfn[i],
2957 				arch_zone_highest_possible_pfn[i]);
2958 
2959 	/* Print out the early_node_map[] */
2960 	printk("early_node_map[%d] active PFN ranges\n", nr_nodemap_entries);
2961 	for (i = 0; i < nr_nodemap_entries; i++)
2962 		printk("  %3d: %8lu -> %8lu\n", early_node_map[i].nid,
2963 						early_node_map[i].start_pfn,
2964 						early_node_map[i].end_pfn);
2965 
2966 	/* Initialise every node */
2967 	setup_nr_node_ids();
2968 	for_each_online_node(nid) {
2969 		pg_data_t *pgdat = NODE_DATA(nid);
2970 		free_area_init_node(nid, pgdat, NULL,
2971 				find_min_pfn_for_node(nid), NULL);
2972 	}
2973 }
2974 #endif /* CONFIG_ARCH_POPULATES_NODE_MAP */
2975 
2976 /**
2977  * set_dma_reserve - set the specified number of pages reserved in the first zone
2978  * @new_dma_reserve: The number of pages to mark reserved
2979  *
2980  * The per-cpu batchsize and zone watermarks are determined by present_pages.
2981  * In the DMA zone, a significant percentage may be consumed by kernel image
2982  * and other unfreeable allocations which can skew the watermarks badly. This
2983  * function may optionally be used to account for unfreeable pages in the
2984  * first zone (e.g., ZONE_DMA). The effect will be lower watermarks and
2985  * smaller per-cpu batchsize.
2986  */
2987 void __init set_dma_reserve(unsigned long new_dma_reserve)
2988 {
2989 	dma_reserve = new_dma_reserve;
2990 }
2991 
2992 #ifndef CONFIG_NEED_MULTIPLE_NODES
2993 static bootmem_data_t contig_bootmem_data;
2994 struct pglist_data contig_page_data = { .bdata = &contig_bootmem_data };
2995 
2996 EXPORT_SYMBOL(contig_page_data);
2997 #endif
2998 
2999 void __init free_area_init(unsigned long *zones_size)
3000 {
3001 	free_area_init_node(0, NODE_DATA(0), zones_size,
3002 			__pa(PAGE_OFFSET) >> PAGE_SHIFT, NULL);
3003 }
3004 
3005 static int page_alloc_cpu_notify(struct notifier_block *self,
3006 				 unsigned long action, void *hcpu)
3007 {
3008 	int cpu = (unsigned long)hcpu;
3009 
3010 	if (action == CPU_DEAD) {
3011 		local_irq_disable();
3012 		__drain_pages(cpu);
3013 		vm_events_fold_cpu(cpu);
3014 		local_irq_enable();
3015 		refresh_cpu_vm_stats(cpu);
3016 	}
3017 	return NOTIFY_OK;
3018 }
3019 
3020 void __init page_alloc_init(void)
3021 {
3022 	hotcpu_notifier(page_alloc_cpu_notify, 0);
3023 }
3024 
3025 /*
3026  * calculate_totalreserve_pages - called when sysctl_lower_zone_reserve_ratio
3027  *	or min_free_kbytes changes.
3028  */
3029 static void calculate_totalreserve_pages(void)
3030 {
3031 	struct pglist_data *pgdat;
3032 	unsigned long reserve_pages = 0;
3033 	enum zone_type i, j;
3034 
3035 	for_each_online_pgdat(pgdat) {
3036 		for (i = 0; i < MAX_NR_ZONES; i++) {
3037 			struct zone *zone = pgdat->node_zones + i;
3038 			unsigned long max = 0;
3039 
3040 			/* Find valid and maximum lowmem_reserve in the zone */
3041 			for (j = i; j < MAX_NR_ZONES; j++) {
3042 				if (zone->lowmem_reserve[j] > max)
3043 					max = zone->lowmem_reserve[j];
3044 			}
3045 
3046 			/* we treat pages_high as reserved pages. */
3047 			max += zone->pages_high;
3048 
3049 			if (max > zone->present_pages)
3050 				max = zone->present_pages;
3051 			reserve_pages += max;
3052 		}
3053 	}
3054 	totalreserve_pages = reserve_pages;
3055 }
3056 
3057 /*
3058  * setup_per_zone_lowmem_reserve - called whenever
3059  *	sysctl_lower_zone_reserve_ratio changes.  Ensures that each zone
3060  *	has a correct pages reserved value, so an adequate number of
3061  *	pages are left in the zone after a successful __alloc_pages().
3062  */
3063 static void setup_per_zone_lowmem_reserve(void)
3064 {
3065 	struct pglist_data *pgdat;
3066 	enum zone_type j, idx;
3067 
3068 	for_each_online_pgdat(pgdat) {
3069 		for (j = 0; j < MAX_NR_ZONES; j++) {
3070 			struct zone *zone = pgdat->node_zones + j;
3071 			unsigned long present_pages = zone->present_pages;
3072 
3073 			zone->lowmem_reserve[j] = 0;
3074 
3075 			idx = j;
3076 			while (idx) {
3077 				struct zone *lower_zone;
3078 
3079 				idx--;
3080 
3081 				if (sysctl_lowmem_reserve_ratio[idx] < 1)
3082 					sysctl_lowmem_reserve_ratio[idx] = 1;
3083 
3084 				lower_zone = pgdat->node_zones + idx;
3085 				lower_zone->lowmem_reserve[j] = present_pages /
3086 					sysctl_lowmem_reserve_ratio[idx];
3087 				present_pages += lower_zone->present_pages;
3088 			}
3089 		}
3090 	}
3091 
3092 	/* update totalreserve_pages */
3093 	calculate_totalreserve_pages();
3094 }
3095 
3096 /**
3097  * setup_per_zone_pages_min - called when min_free_kbytes changes.
3098  *
3099  * Ensures that the pages_{min,low,high} values for each zone are set correctly
3100  * with respect to min_free_kbytes.
3101  */
3102 void setup_per_zone_pages_min(void)
3103 {
3104 	unsigned long pages_min = min_free_kbytes >> (PAGE_SHIFT - 10);
3105 	unsigned long lowmem_pages = 0;
3106 	struct zone *zone;
3107 	unsigned long flags;
3108 
3109 	/* Calculate total number of !ZONE_HIGHMEM pages */
3110 	for_each_zone(zone) {
3111 		if (!is_highmem(zone))
3112 			lowmem_pages += zone->present_pages;
3113 	}
3114 
3115 	for_each_zone(zone) {
3116 		u64 tmp;
3117 
3118 		spin_lock_irqsave(&zone->lru_lock, flags);
3119 		tmp = (u64)pages_min * zone->present_pages;
3120 		do_div(tmp, lowmem_pages);
3121 		if (is_highmem(zone)) {
3122 			/*
3123 			 * __GFP_HIGH and PF_MEMALLOC allocations usually don't
3124 			 * need highmem pages, so cap pages_min to a small
3125 			 * value here.
3126 			 *
3127 			 * The (pages_high-pages_low) and (pages_low-pages_min)
3128 			 * deltas controls asynch page reclaim, and so should
3129 			 * not be capped for highmem.
3130 			 */
3131 			int min_pages;
3132 
3133 			min_pages = zone->present_pages / 1024;
3134 			if (min_pages < SWAP_CLUSTER_MAX)
3135 				min_pages = SWAP_CLUSTER_MAX;
3136 			if (min_pages > 128)
3137 				min_pages = 128;
3138 			zone->pages_min = min_pages;
3139 		} else {
3140 			/*
3141 			 * If it's a lowmem zone, reserve a number of pages
3142 			 * proportionate to the zone's size.
3143 			 */
3144 			zone->pages_min = tmp;
3145 		}
3146 
3147 		zone->pages_low   = zone->pages_min + (tmp >> 2);
3148 		zone->pages_high  = zone->pages_min + (tmp >> 1);
3149 		spin_unlock_irqrestore(&zone->lru_lock, flags);
3150 	}
3151 
3152 	/* update totalreserve_pages */
3153 	calculate_totalreserve_pages();
3154 }
3155 
3156 /*
3157  * Initialise min_free_kbytes.
3158  *
3159  * For small machines we want it small (128k min).  For large machines
3160  * we want it large (64MB max).  But it is not linear, because network
3161  * bandwidth does not increase linearly with machine size.  We use
3162  *
3163  * 	min_free_kbytes = 4 * sqrt(lowmem_kbytes), for better accuracy:
3164  *	min_free_kbytes = sqrt(lowmem_kbytes * 16)
3165  *
3166  * which yields
3167  *
3168  * 16MB:	512k
3169  * 32MB:	724k
3170  * 64MB:	1024k
3171  * 128MB:	1448k
3172  * 256MB:	2048k
3173  * 512MB:	2896k
3174  * 1024MB:	4096k
3175  * 2048MB:	5792k
3176  * 4096MB:	8192k
3177  * 8192MB:	11584k
3178  * 16384MB:	16384k
3179  */
3180 static int __init init_per_zone_pages_min(void)
3181 {
3182 	unsigned long lowmem_kbytes;
3183 
3184 	lowmem_kbytes = nr_free_buffer_pages() * (PAGE_SIZE >> 10);
3185 
3186 	min_free_kbytes = int_sqrt(lowmem_kbytes * 16);
3187 	if (min_free_kbytes < 128)
3188 		min_free_kbytes = 128;
3189 	if (min_free_kbytes > 65536)
3190 		min_free_kbytes = 65536;
3191 	setup_per_zone_pages_min();
3192 	setup_per_zone_lowmem_reserve();
3193 	return 0;
3194 }
3195 module_init(init_per_zone_pages_min)
3196 
3197 /*
3198  * min_free_kbytes_sysctl_handler - just a wrapper around proc_dointvec() so
3199  *	that we can call two helper functions whenever min_free_kbytes
3200  *	changes.
3201  */
3202 int min_free_kbytes_sysctl_handler(ctl_table *table, int write,
3203 	struct file *file, void __user *buffer, size_t *length, loff_t *ppos)
3204 {
3205 	proc_dointvec(table, write, file, buffer, length, ppos);
3206 	setup_per_zone_pages_min();
3207 	return 0;
3208 }
3209 
3210 #ifdef CONFIG_NUMA
3211 int sysctl_min_unmapped_ratio_sysctl_handler(ctl_table *table, int write,
3212 	struct file *file, void __user *buffer, size_t *length, loff_t *ppos)
3213 {
3214 	struct zone *zone;
3215 	int rc;
3216 
3217 	rc = proc_dointvec_minmax(table, write, file, buffer, length, ppos);
3218 	if (rc)
3219 		return rc;
3220 
3221 	for_each_zone(zone)
3222 		zone->min_unmapped_pages = (zone->present_pages *
3223 				sysctl_min_unmapped_ratio) / 100;
3224 	return 0;
3225 }
3226 
3227 int sysctl_min_slab_ratio_sysctl_handler(ctl_table *table, int write,
3228 	struct file *file, void __user *buffer, size_t *length, loff_t *ppos)
3229 {
3230 	struct zone *zone;
3231 	int rc;
3232 
3233 	rc = proc_dointvec_minmax(table, write, file, buffer, length, ppos);
3234 	if (rc)
3235 		return rc;
3236 
3237 	for_each_zone(zone)
3238 		zone->min_slab_pages = (zone->present_pages *
3239 				sysctl_min_slab_ratio) / 100;
3240 	return 0;
3241 }
3242 #endif
3243 
3244 /*
3245  * lowmem_reserve_ratio_sysctl_handler - just a wrapper around
3246  *	proc_dointvec() so that we can call setup_per_zone_lowmem_reserve()
3247  *	whenever sysctl_lowmem_reserve_ratio changes.
3248  *
3249  * The reserve ratio obviously has absolutely no relation with the
3250  * pages_min watermarks. The lowmem reserve ratio can only make sense
3251  * if in function of the boot time zone sizes.
3252  */
3253 int lowmem_reserve_ratio_sysctl_handler(ctl_table *table, int write,
3254 	struct file *file, void __user *buffer, size_t *length, loff_t *ppos)
3255 {
3256 	proc_dointvec_minmax(table, write, file, buffer, length, ppos);
3257 	setup_per_zone_lowmem_reserve();
3258 	return 0;
3259 }
3260 
3261 /*
3262  * percpu_pagelist_fraction - changes the pcp->high for each zone on each
3263  * cpu.  It is the fraction of total pages in each zone that a hot per cpu pagelist
3264  * can have before it gets flushed back to buddy allocator.
3265  */
3266 
3267 int percpu_pagelist_fraction_sysctl_handler(ctl_table *table, int write,
3268 	struct file *file, void __user *buffer, size_t *length, loff_t *ppos)
3269 {
3270 	struct zone *zone;
3271 	unsigned int cpu;
3272 	int ret;
3273 
3274 	ret = proc_dointvec_minmax(table, write, file, buffer, length, ppos);
3275 	if (!write || (ret == -EINVAL))
3276 		return ret;
3277 	for_each_zone(zone) {
3278 		for_each_online_cpu(cpu) {
3279 			unsigned long  high;
3280 			high = zone->present_pages / percpu_pagelist_fraction;
3281 			setup_pagelist_highmark(zone_pcp(zone, cpu), high);
3282 		}
3283 	}
3284 	return 0;
3285 }
3286 
3287 int hashdist = HASHDIST_DEFAULT;
3288 
3289 #ifdef CONFIG_NUMA
3290 static int __init set_hashdist(char *str)
3291 {
3292 	if (!str)
3293 		return 0;
3294 	hashdist = simple_strtoul(str, &str, 0);
3295 	return 1;
3296 }
3297 __setup("hashdist=", set_hashdist);
3298 #endif
3299 
3300 /*
3301  * allocate a large system hash table from bootmem
3302  * - it is assumed that the hash table must contain an exact power-of-2
3303  *   quantity of entries
3304  * - limit is the number of hash buckets, not the total allocation size
3305  */
3306 void *__init alloc_large_system_hash(const char *tablename,
3307 				     unsigned long bucketsize,
3308 				     unsigned long numentries,
3309 				     int scale,
3310 				     int flags,
3311 				     unsigned int *_hash_shift,
3312 				     unsigned int *_hash_mask,
3313 				     unsigned long limit)
3314 {
3315 	unsigned long long max = limit;
3316 	unsigned long log2qty, size;
3317 	void *table = NULL;
3318 
3319 	/* allow the kernel cmdline to have a say */
3320 	if (!numentries) {
3321 		/* round applicable memory size up to nearest megabyte */
3322 		numentries = nr_kernel_pages;
3323 		numentries += (1UL << (20 - PAGE_SHIFT)) - 1;
3324 		numentries >>= 20 - PAGE_SHIFT;
3325 		numentries <<= 20 - PAGE_SHIFT;
3326 
3327 		/* limit to 1 bucket per 2^scale bytes of low memory */
3328 		if (scale > PAGE_SHIFT)
3329 			numentries >>= (scale - PAGE_SHIFT);
3330 		else
3331 			numentries <<= (PAGE_SHIFT - scale);
3332 
3333 		/* Make sure we've got at least a 0-order allocation.. */
3334 		if (unlikely((numentries * bucketsize) < PAGE_SIZE))
3335 			numentries = PAGE_SIZE / bucketsize;
3336 	}
3337 	numentries = roundup_pow_of_two(numentries);
3338 
3339 	/* limit allocation size to 1/16 total memory by default */
3340 	if (max == 0) {
3341 		max = ((unsigned long long)nr_all_pages << PAGE_SHIFT) >> 4;
3342 		do_div(max, bucketsize);
3343 	}
3344 
3345 	if (numentries > max)
3346 		numentries = max;
3347 
3348 	log2qty = ilog2(numentries);
3349 
3350 	do {
3351 		size = bucketsize << log2qty;
3352 		if (flags & HASH_EARLY)
3353 			table = alloc_bootmem(size);
3354 		else if (hashdist)
3355 			table = __vmalloc(size, GFP_ATOMIC, PAGE_KERNEL);
3356 		else {
3357 			unsigned long order;
3358 			for (order = 0; ((1UL << order) << PAGE_SHIFT) < size; order++)
3359 				;
3360 			table = (void*) __get_free_pages(GFP_ATOMIC, order);
3361 		}
3362 	} while (!table && size > PAGE_SIZE && --log2qty);
3363 
3364 	if (!table)
3365 		panic("Failed to allocate %s hash table\n", tablename);
3366 
3367 	printk("%s hash table entries: %d (order: %d, %lu bytes)\n",
3368 	       tablename,
3369 	       (1U << log2qty),
3370 	       ilog2(size) - PAGE_SHIFT,
3371 	       size);
3372 
3373 	if (_hash_shift)
3374 		*_hash_shift = log2qty;
3375 	if (_hash_mask)
3376 		*_hash_mask = (1 << log2qty) - 1;
3377 
3378 	return table;
3379 }
3380 
3381 #ifdef CONFIG_OUT_OF_LINE_PFN_TO_PAGE
3382 struct page *pfn_to_page(unsigned long pfn)
3383 {
3384 	return __pfn_to_page(pfn);
3385 }
3386 unsigned long page_to_pfn(struct page *page)
3387 {
3388 	return __page_to_pfn(page);
3389 }
3390 EXPORT_SYMBOL(pfn_to_page);
3391 EXPORT_SYMBOL(page_to_pfn);
3392 #endif /* CONFIG_OUT_OF_LINE_PFN_TO_PAGE */
3393 
3394 
3395