cleanpatch: a script to clean up stealth whitespace added by a patch
[sfrench/cifs-2.6.git] / mm / page_alloc.c
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