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