GNU Linux-libre 4.14.253-gnu1
[releases.git] / mm / page_alloc.c
1 /*
2  *  linux/mm/page_alloc.c
3  *
4  *  Manages the free list, the system allocates free pages here.
5  *  Note that kmalloc() lives in slab.c
6  *
7  *  Copyright (C) 1991, 1992, 1993, 1994  Linus Torvalds
8  *  Swap reorganised 29.12.95, Stephen Tweedie
9  *  Support of BIGMEM added by Gerhard Wichert, Siemens AG, July 1999
10  *  Reshaped it to be a zoned allocator, Ingo Molnar, Red Hat, 1999
11  *  Discontiguous memory support, Kanoj Sarcar, SGI, Nov 1999
12  *  Zone balancing, Kanoj Sarcar, SGI, Jan 2000
13  *  Per cpu hot/cold page lists, bulk allocation, Martin J. Bligh, Sept 2002
14  *          (lots of bits borrowed from Ingo Molnar & Andrew Morton)
15  */
16
17 #include <linux/stddef.h>
18 #include <linux/mm.h>
19 #include <linux/swap.h>
20 #include <linux/interrupt.h>
21 #include <linux/pagemap.h>
22 #include <linux/jiffies.h>
23 #include <linux/bootmem.h>
24 #include <linux/memblock.h>
25 #include <linux/compiler.h>
26 #include <linux/kernel.h>
27 #include <linux/kasan.h>
28 #include <linux/module.h>
29 #include <linux/suspend.h>
30 #include <linux/pagevec.h>
31 #include <linux/blkdev.h>
32 #include <linux/slab.h>
33 #include <linux/ratelimit.h>
34 #include <linux/oom.h>
35 #include <linux/notifier.h>
36 #include <linux/topology.h>
37 #include <linux/sysctl.h>
38 #include <linux/cpu.h>
39 #include <linux/cpuset.h>
40 #include <linux/memory_hotplug.h>
41 #include <linux/nodemask.h>
42 #include <linux/vmalloc.h>
43 #include <linux/vmstat.h>
44 #include <linux/mempolicy.h>
45 #include <linux/memremap.h>
46 #include <linux/stop_machine.h>
47 #include <linux/sort.h>
48 #include <linux/pfn.h>
49 #include <linux/backing-dev.h>
50 #include <linux/fault-inject.h>
51 #include <linux/page-isolation.h>
52 #include <linux/page_ext.h>
53 #include <linux/debugobjects.h>
54 #include <linux/kmemleak.h>
55 #include <linux/compaction.h>
56 #include <trace/events/kmem.h>
57 #include <trace/events/oom.h>
58 #include <linux/prefetch.h>
59 #include <linux/mm_inline.h>
60 #include <linux/migrate.h>
61 #include <linux/hugetlb.h>
62 #include <linux/sched/rt.h>
63 #include <linux/sched/mm.h>
64 #include <linux/page_owner.h>
65 #include <linux/kthread.h>
66 #include <linux/memcontrol.h>
67 #include <linux/ftrace.h>
68 #include <linux/lockdep.h>
69 #include <linux/nmi.h>
70 #include <linux/khugepaged.h>
71
72 #include <asm/sections.h>
73 #include <asm/tlbflush.h>
74 #include <asm/div64.h>
75 #include "internal.h"
76
77 /* prevent >1 _updater_ of zone percpu pageset ->high and ->batch fields */
78 static DEFINE_MUTEX(pcp_batch_high_lock);
79 #define MIN_PERCPU_PAGELIST_FRACTION    (8)
80
81 #ifdef CONFIG_USE_PERCPU_NUMA_NODE_ID
82 DEFINE_PER_CPU(int, numa_node);
83 EXPORT_PER_CPU_SYMBOL(numa_node);
84 #endif
85
86 #ifdef CONFIG_HAVE_MEMORYLESS_NODES
87 /*
88  * N.B., Do NOT reference the '_numa_mem_' per cpu variable directly.
89  * It will not be defined when CONFIG_HAVE_MEMORYLESS_NODES is not defined.
90  * Use the accessor functions set_numa_mem(), numa_mem_id() and cpu_to_mem()
91  * defined in <linux/topology.h>.
92  */
93 DEFINE_PER_CPU(int, _numa_mem_);                /* Kernel "local memory" node */
94 EXPORT_PER_CPU_SYMBOL(_numa_mem_);
95 int _node_numa_mem_[MAX_NUMNODES];
96 #endif
97
98 /* work_structs for global per-cpu drains */
99 DEFINE_MUTEX(pcpu_drain_mutex);
100 DEFINE_PER_CPU(struct work_struct, pcpu_drain);
101
102 #ifdef CONFIG_GCC_PLUGIN_LATENT_ENTROPY
103 volatile unsigned long latent_entropy __latent_entropy;
104 EXPORT_SYMBOL(latent_entropy);
105 #endif
106
107 /*
108  * Array of node states.
109  */
110 nodemask_t node_states[NR_NODE_STATES] __read_mostly = {
111         [N_POSSIBLE] = NODE_MASK_ALL,
112         [N_ONLINE] = { { [0] = 1UL } },
113 #ifndef CONFIG_NUMA
114         [N_NORMAL_MEMORY] = { { [0] = 1UL } },
115 #ifdef CONFIG_HIGHMEM
116         [N_HIGH_MEMORY] = { { [0] = 1UL } },
117 #endif
118         [N_MEMORY] = { { [0] = 1UL } },
119         [N_CPU] = { { [0] = 1UL } },
120 #endif  /* NUMA */
121 };
122 EXPORT_SYMBOL(node_states);
123
124 /* Protect totalram_pages and zone->managed_pages */
125 static DEFINE_SPINLOCK(managed_page_count_lock);
126
127 unsigned long totalram_pages __read_mostly;
128 unsigned long totalreserve_pages __read_mostly;
129 unsigned long totalcma_pages __read_mostly;
130
131 int percpu_pagelist_fraction;
132 gfp_t gfp_allowed_mask __read_mostly = GFP_BOOT_MASK;
133
134 /*
135  * A cached value of the page's pageblock's migratetype, used when the page is
136  * put on a pcplist. Used to avoid the pageblock migratetype lookup when
137  * freeing from pcplists in most cases, at the cost of possibly becoming stale.
138  * Also the migratetype set in the page does not necessarily match the pcplist
139  * index, e.g. page might have MIGRATE_CMA set but be on a pcplist with any
140  * other index - this ensures that it will be put on the correct CMA freelist.
141  */
142 static inline int get_pcppage_migratetype(struct page *page)
143 {
144         return page->index;
145 }
146
147 static inline void set_pcppage_migratetype(struct page *page, int migratetype)
148 {
149         page->index = migratetype;
150 }
151
152 #ifdef CONFIG_PM_SLEEP
153 /*
154  * The following functions are used by the suspend/hibernate code to temporarily
155  * change gfp_allowed_mask in order to avoid using I/O during memory allocations
156  * while devices are suspended.  To avoid races with the suspend/hibernate code,
157  * they should always be called with pm_mutex held (gfp_allowed_mask also should
158  * only be modified with pm_mutex held, unless the suspend/hibernate code is
159  * guaranteed not to run in parallel with that modification).
160  */
161
162 static gfp_t saved_gfp_mask;
163
164 void pm_restore_gfp_mask(void)
165 {
166         WARN_ON(!mutex_is_locked(&pm_mutex));
167         if (saved_gfp_mask) {
168                 gfp_allowed_mask = saved_gfp_mask;
169                 saved_gfp_mask = 0;
170         }
171 }
172
173 void pm_restrict_gfp_mask(void)
174 {
175         WARN_ON(!mutex_is_locked(&pm_mutex));
176         WARN_ON(saved_gfp_mask);
177         saved_gfp_mask = gfp_allowed_mask;
178         gfp_allowed_mask &= ~(__GFP_IO | __GFP_FS);
179 }
180
181 bool pm_suspended_storage(void)
182 {
183         if ((gfp_allowed_mask & (__GFP_IO | __GFP_FS)) == (__GFP_IO | __GFP_FS))
184                 return false;
185         return true;
186 }
187 #endif /* CONFIG_PM_SLEEP */
188
189 #ifdef CONFIG_HUGETLB_PAGE_SIZE_VARIABLE
190 unsigned int pageblock_order __read_mostly;
191 #endif
192
193 static void __free_pages_ok(struct page *page, unsigned int order);
194
195 /*
196  * results with 256, 32 in the lowmem_reserve sysctl:
197  *      1G machine -> (16M dma, 800M-16M normal, 1G-800M high)
198  *      1G machine -> (16M dma, 784M normal, 224M high)
199  *      NORMAL allocation will leave 784M/256 of ram reserved in the ZONE_DMA
200  *      HIGHMEM allocation will leave 224M/32 of ram reserved in ZONE_NORMAL
201  *      HIGHMEM allocation will leave (224M+784M)/256 of ram reserved in ZONE_DMA
202  *
203  * TBD: should special case ZONE_DMA32 machines here - in those we normally
204  * don't need any ZONE_NORMAL reservation
205  */
206 int sysctl_lowmem_reserve_ratio[MAX_NR_ZONES-1] = {
207 #ifdef CONFIG_ZONE_DMA
208          256,
209 #endif
210 #ifdef CONFIG_ZONE_DMA32
211          256,
212 #endif
213 #ifdef CONFIG_HIGHMEM
214          32,
215 #endif
216          32,
217 };
218
219 EXPORT_SYMBOL(totalram_pages);
220
221 static char * const zone_names[MAX_NR_ZONES] = {
222 #ifdef CONFIG_ZONE_DMA
223          "DMA",
224 #endif
225 #ifdef CONFIG_ZONE_DMA32
226          "DMA32",
227 #endif
228          "Normal",
229 #ifdef CONFIG_HIGHMEM
230          "HighMem",
231 #endif
232          "Movable",
233 #ifdef CONFIG_ZONE_DEVICE
234          "Device",
235 #endif
236 };
237
238 char * const migratetype_names[MIGRATE_TYPES] = {
239         "Unmovable",
240         "Movable",
241         "Reclaimable",
242         "HighAtomic",
243 #ifdef CONFIG_CMA
244         "CMA",
245 #endif
246 #ifdef CONFIG_MEMORY_ISOLATION
247         "Isolate",
248 #endif
249 };
250
251 compound_page_dtor * const compound_page_dtors[] = {
252         NULL,
253         free_compound_page,
254 #ifdef CONFIG_HUGETLB_PAGE
255         free_huge_page,
256 #endif
257 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
258         free_transhuge_page,
259 #endif
260 };
261
262 int min_free_kbytes = 1024;
263 int user_min_free_kbytes = -1;
264 int watermark_scale_factor = 10;
265
266 static unsigned long __meminitdata nr_kernel_pages;
267 static unsigned long __meminitdata nr_all_pages;
268 static unsigned long __meminitdata dma_reserve;
269
270 #ifdef CONFIG_HAVE_MEMBLOCK_NODE_MAP
271 static unsigned long __meminitdata arch_zone_lowest_possible_pfn[MAX_NR_ZONES];
272 static unsigned long __meminitdata arch_zone_highest_possible_pfn[MAX_NR_ZONES];
273 static unsigned long __initdata required_kernelcore;
274 static unsigned long __initdata required_movablecore;
275 static unsigned long __meminitdata zone_movable_pfn[MAX_NUMNODES];
276 static bool mirrored_kernelcore;
277
278 /* movable_zone is the "real" zone pages in ZONE_MOVABLE are taken from */
279 int movable_zone;
280 EXPORT_SYMBOL(movable_zone);
281 #endif /* CONFIG_HAVE_MEMBLOCK_NODE_MAP */
282
283 #if MAX_NUMNODES > 1
284 int nr_node_ids __read_mostly = MAX_NUMNODES;
285 int nr_online_nodes __read_mostly = 1;
286 EXPORT_SYMBOL(nr_node_ids);
287 EXPORT_SYMBOL(nr_online_nodes);
288 #endif
289
290 int page_group_by_mobility_disabled __read_mostly;
291
292 #ifdef CONFIG_DEFERRED_STRUCT_PAGE_INIT
293
294 /*
295  * Determine how many pages need to be initialized durig early boot
296  * (non-deferred initialization).
297  * The value of first_deferred_pfn will be set later, once non-deferred pages
298  * are initialized, but for now set it ULONG_MAX.
299  */
300 static inline void reset_deferred_meminit(pg_data_t *pgdat)
301 {
302         phys_addr_t start_addr, end_addr;
303         unsigned long max_pgcnt;
304         unsigned long reserved;
305
306         /*
307          * Initialise at least 2G of a node but also take into account that
308          * two large system hashes that can take up 1GB for 0.25TB/node.
309          */
310         max_pgcnt = max(2UL << (30 - PAGE_SHIFT),
311                         (pgdat->node_spanned_pages >> 8));
312
313         /*
314          * Compensate the all the memblock reservations (e.g. crash kernel)
315          * from the initial estimation to make sure we will initialize enough
316          * memory to boot.
317          */
318         start_addr = PFN_PHYS(pgdat->node_start_pfn);
319         end_addr = PFN_PHYS(pgdat->node_start_pfn + max_pgcnt);
320         reserved = memblock_reserved_memory_within(start_addr, end_addr);
321         max_pgcnt += PHYS_PFN(reserved);
322
323         pgdat->static_init_pgcnt = min(max_pgcnt, pgdat->node_spanned_pages);
324         pgdat->first_deferred_pfn = ULONG_MAX;
325 }
326
327 /* Returns true if the struct page for the pfn is uninitialised */
328 static inline bool __meminit early_page_uninitialised(unsigned long pfn)
329 {
330         int nid = early_pfn_to_nid(pfn);
331
332         if (node_online(nid) && pfn >= NODE_DATA(nid)->first_deferred_pfn)
333                 return true;
334
335         return false;
336 }
337
338 /*
339  * Returns false when the remaining initialisation should be deferred until
340  * later in the boot cycle when it can be parallelised.
341  */
342 static inline bool update_defer_init(pg_data_t *pgdat,
343                                 unsigned long pfn, unsigned long zone_end,
344                                 unsigned long *nr_initialised)
345 {
346         /* Always populate low zones for address-contrained allocations */
347         if (zone_end < pgdat_end_pfn(pgdat))
348                 return true;
349         (*nr_initialised)++;
350         if ((*nr_initialised > pgdat->static_init_pgcnt) &&
351             (pfn & (PAGES_PER_SECTION - 1)) == 0) {
352                 pgdat->first_deferred_pfn = pfn;
353                 return false;
354         }
355
356         return true;
357 }
358 #else
359 static inline void reset_deferred_meminit(pg_data_t *pgdat)
360 {
361 }
362
363 static inline bool early_page_uninitialised(unsigned long pfn)
364 {
365         return false;
366 }
367
368 static inline bool update_defer_init(pg_data_t *pgdat,
369                                 unsigned long pfn, unsigned long zone_end,
370                                 unsigned long *nr_initialised)
371 {
372         return true;
373 }
374 #endif
375
376 /* Return a pointer to the bitmap storing bits affecting a block of pages */
377 static inline unsigned long *get_pageblock_bitmap(struct page *page,
378                                                         unsigned long pfn)
379 {
380 #ifdef CONFIG_SPARSEMEM
381         return __pfn_to_section(pfn)->pageblock_flags;
382 #else
383         return page_zone(page)->pageblock_flags;
384 #endif /* CONFIG_SPARSEMEM */
385 }
386
387 static inline int pfn_to_bitidx(struct page *page, unsigned long pfn)
388 {
389 #ifdef CONFIG_SPARSEMEM
390         pfn &= (PAGES_PER_SECTION-1);
391         return (pfn >> pageblock_order) * NR_PAGEBLOCK_BITS;
392 #else
393         pfn = pfn - round_down(page_zone(page)->zone_start_pfn, pageblock_nr_pages);
394         return (pfn >> pageblock_order) * NR_PAGEBLOCK_BITS;
395 #endif /* CONFIG_SPARSEMEM */
396 }
397
398 /**
399  * get_pfnblock_flags_mask - Return the requested group of flags for the pageblock_nr_pages block of pages
400  * @page: The page within the block of interest
401  * @pfn: The target page frame number
402  * @end_bitidx: The last bit of interest to retrieve
403  * @mask: mask of bits that the caller is interested in
404  *
405  * Return: pageblock_bits flags
406  */
407 static __always_inline unsigned long __get_pfnblock_flags_mask(struct page *page,
408                                         unsigned long pfn,
409                                         unsigned long end_bitidx,
410                                         unsigned long mask)
411 {
412         unsigned long *bitmap;
413         unsigned long bitidx, word_bitidx;
414         unsigned long word;
415
416         bitmap = get_pageblock_bitmap(page, pfn);
417         bitidx = pfn_to_bitidx(page, pfn);
418         word_bitidx = bitidx / BITS_PER_LONG;
419         bitidx &= (BITS_PER_LONG-1);
420
421         word = bitmap[word_bitidx];
422         bitidx += end_bitidx;
423         return (word >> (BITS_PER_LONG - bitidx - 1)) & mask;
424 }
425
426 unsigned long get_pfnblock_flags_mask(struct page *page, unsigned long pfn,
427                                         unsigned long end_bitidx,
428                                         unsigned long mask)
429 {
430         return __get_pfnblock_flags_mask(page, pfn, end_bitidx, mask);
431 }
432
433 static __always_inline int get_pfnblock_migratetype(struct page *page, unsigned long pfn)
434 {
435         return __get_pfnblock_flags_mask(page, pfn, PB_migrate_end, MIGRATETYPE_MASK);
436 }
437
438 /**
439  * set_pfnblock_flags_mask - Set the requested group of flags for a pageblock_nr_pages block of pages
440  * @page: The page within the block of interest
441  * @flags: The flags to set
442  * @pfn: The target page frame number
443  * @end_bitidx: The last bit of interest
444  * @mask: mask of bits that the caller is interested in
445  */
446 void set_pfnblock_flags_mask(struct page *page, unsigned long flags,
447                                         unsigned long pfn,
448                                         unsigned long end_bitidx,
449                                         unsigned long mask)
450 {
451         unsigned long *bitmap;
452         unsigned long bitidx, word_bitidx;
453         unsigned long old_word, word;
454
455         BUILD_BUG_ON(NR_PAGEBLOCK_BITS != 4);
456
457         bitmap = get_pageblock_bitmap(page, pfn);
458         bitidx = pfn_to_bitidx(page, pfn);
459         word_bitidx = bitidx / BITS_PER_LONG;
460         bitidx &= (BITS_PER_LONG-1);
461
462         VM_BUG_ON_PAGE(!zone_spans_pfn(page_zone(page), pfn), page);
463
464         bitidx += end_bitidx;
465         mask <<= (BITS_PER_LONG - bitidx - 1);
466         flags <<= (BITS_PER_LONG - bitidx - 1);
467
468         word = READ_ONCE(bitmap[word_bitidx]);
469         for (;;) {
470                 old_word = cmpxchg(&bitmap[word_bitidx], word, (word & ~mask) | flags);
471                 if (word == old_word)
472                         break;
473                 word = old_word;
474         }
475 }
476
477 void set_pageblock_migratetype(struct page *page, int migratetype)
478 {
479         if (unlikely(page_group_by_mobility_disabled &&
480                      migratetype < MIGRATE_PCPTYPES))
481                 migratetype = MIGRATE_UNMOVABLE;
482
483         set_pageblock_flags_group(page, (unsigned long)migratetype,
484                                         PB_migrate, PB_migrate_end);
485 }
486
487 #ifdef CONFIG_DEBUG_VM
488 static int page_outside_zone_boundaries(struct zone *zone, struct page *page)
489 {
490         int ret = 0;
491         unsigned seq;
492         unsigned long pfn = page_to_pfn(page);
493         unsigned long sp, start_pfn;
494
495         do {
496                 seq = zone_span_seqbegin(zone);
497                 start_pfn = zone->zone_start_pfn;
498                 sp = zone->spanned_pages;
499                 if (!zone_spans_pfn(zone, pfn))
500                         ret = 1;
501         } while (zone_span_seqretry(zone, seq));
502
503         if (ret)
504                 pr_err("page 0x%lx outside node %d zone %s [ 0x%lx - 0x%lx ]\n",
505                         pfn, zone_to_nid(zone), zone->name,
506                         start_pfn, start_pfn + sp);
507
508         return ret;
509 }
510
511 static int page_is_consistent(struct zone *zone, struct page *page)
512 {
513         if (!pfn_valid_within(page_to_pfn(page)))
514                 return 0;
515         if (zone != page_zone(page))
516                 return 0;
517
518         return 1;
519 }
520 /*
521  * Temporary debugging check for pages not lying within a given zone.
522  */
523 static int __maybe_unused bad_range(struct zone *zone, struct page *page)
524 {
525         if (page_outside_zone_boundaries(zone, page))
526                 return 1;
527         if (!page_is_consistent(zone, page))
528                 return 1;
529
530         return 0;
531 }
532 #else
533 static inline int __maybe_unused bad_range(struct zone *zone, struct page *page)
534 {
535         return 0;
536 }
537 #endif
538
539 static void bad_page(struct page *page, const char *reason,
540                 unsigned long bad_flags)
541 {
542         static unsigned long resume;
543         static unsigned long nr_shown;
544         static unsigned long nr_unshown;
545
546         /*
547          * Allow a burst of 60 reports, then keep quiet for that minute;
548          * or allow a steady drip of one report per second.
549          */
550         if (nr_shown == 60) {
551                 if (time_before(jiffies, resume)) {
552                         nr_unshown++;
553                         goto out;
554                 }
555                 if (nr_unshown) {
556                         pr_alert(
557                               "BUG: Bad page state: %lu messages suppressed\n",
558                                 nr_unshown);
559                         nr_unshown = 0;
560                 }
561                 nr_shown = 0;
562         }
563         if (nr_shown++ == 0)
564                 resume = jiffies + 60 * HZ;
565
566         pr_alert("BUG: Bad page state in process %s  pfn:%05lx\n",
567                 current->comm, page_to_pfn(page));
568         __dump_page(page, reason);
569         bad_flags &= page->flags;
570         if (bad_flags)
571                 pr_alert("bad because of flags: %#lx(%pGp)\n",
572                                                 bad_flags, &bad_flags);
573         dump_page_owner(page);
574
575         print_modules();
576         dump_stack();
577 out:
578         /* Leave bad fields for debug, except PageBuddy could make trouble */
579         page_mapcount_reset(page); /* remove PageBuddy */
580         add_taint(TAINT_BAD_PAGE, LOCKDEP_NOW_UNRELIABLE);
581 }
582
583 /*
584  * Higher-order pages are called "compound pages".  They are structured thusly:
585  *
586  * The first PAGE_SIZE page is called the "head page" and have PG_head set.
587  *
588  * The remaining PAGE_SIZE pages are called "tail pages". PageTail() is encoded
589  * in bit 0 of page->compound_head. The rest of bits is pointer to head page.
590  *
591  * The first tail page's ->compound_dtor holds the offset in array of compound
592  * page destructors. See compound_page_dtors.
593  *
594  * The first tail page's ->compound_order holds the order of allocation.
595  * This usage means that zero-order pages may not be compound.
596  */
597
598 void free_compound_page(struct page *page)
599 {
600         __free_pages_ok(page, compound_order(page));
601 }
602
603 void prep_compound_page(struct page *page, unsigned int order)
604 {
605         int i;
606         int nr_pages = 1 << order;
607
608         set_compound_page_dtor(page, COMPOUND_PAGE_DTOR);
609         set_compound_order(page, order);
610         __SetPageHead(page);
611         for (i = 1; i < nr_pages; i++) {
612                 struct page *p = page + i;
613                 set_page_count(p, 0);
614                 p->mapping = TAIL_MAPPING;
615                 set_compound_head(p, page);
616         }
617         atomic_set(compound_mapcount_ptr(page), -1);
618 }
619
620 #ifdef CONFIG_DEBUG_PAGEALLOC
621 unsigned int _debug_guardpage_minorder;
622 bool _debug_pagealloc_enabled __read_mostly
623                         = IS_ENABLED(CONFIG_DEBUG_PAGEALLOC_ENABLE_DEFAULT);
624 EXPORT_SYMBOL(_debug_pagealloc_enabled);
625 bool _debug_guardpage_enabled __read_mostly;
626
627 static int __init early_debug_pagealloc(char *buf)
628 {
629         if (!buf)
630                 return -EINVAL;
631         return kstrtobool(buf, &_debug_pagealloc_enabled);
632 }
633 early_param("debug_pagealloc", early_debug_pagealloc);
634
635 static bool need_debug_guardpage(void)
636 {
637         /* If we don't use debug_pagealloc, we don't need guard page */
638         if (!debug_pagealloc_enabled())
639                 return false;
640
641         if (!debug_guardpage_minorder())
642                 return false;
643
644         return true;
645 }
646
647 static void init_debug_guardpage(void)
648 {
649         if (!debug_pagealloc_enabled())
650                 return;
651
652         if (!debug_guardpage_minorder())
653                 return;
654
655         _debug_guardpage_enabled = true;
656 }
657
658 struct page_ext_operations debug_guardpage_ops = {
659         .need = need_debug_guardpage,
660         .init = init_debug_guardpage,
661 };
662
663 static int __init debug_guardpage_minorder_setup(char *buf)
664 {
665         unsigned long res;
666
667         if (kstrtoul(buf, 10, &res) < 0 ||  res > MAX_ORDER / 2) {
668                 pr_err("Bad debug_guardpage_minorder value\n");
669                 return 0;
670         }
671         _debug_guardpage_minorder = res;
672         pr_info("Setting debug_guardpage_minorder to %lu\n", res);
673         return 0;
674 }
675 early_param("debug_guardpage_minorder", debug_guardpage_minorder_setup);
676
677 static inline bool set_page_guard(struct zone *zone, struct page *page,
678                                 unsigned int order, int migratetype)
679 {
680         struct page_ext *page_ext;
681
682         if (!debug_guardpage_enabled())
683                 return false;
684
685         if (order >= debug_guardpage_minorder())
686                 return false;
687
688         page_ext = lookup_page_ext(page);
689         if (unlikely(!page_ext))
690                 return false;
691
692         __set_bit(PAGE_EXT_DEBUG_GUARD, &page_ext->flags);
693
694         INIT_LIST_HEAD(&page->lru);
695         set_page_private(page, order);
696         /* Guard pages are not available for any usage */
697         __mod_zone_freepage_state(zone, -(1 << order), migratetype);
698
699         return true;
700 }
701
702 static inline void clear_page_guard(struct zone *zone, struct page *page,
703                                 unsigned int order, int migratetype)
704 {
705         struct page_ext *page_ext;
706
707         if (!debug_guardpage_enabled())
708                 return;
709
710         page_ext = lookup_page_ext(page);
711         if (unlikely(!page_ext))
712                 return;
713
714         __clear_bit(PAGE_EXT_DEBUG_GUARD, &page_ext->flags);
715
716         set_page_private(page, 0);
717         if (!is_migrate_isolate(migratetype))
718                 __mod_zone_freepage_state(zone, (1 << order), migratetype);
719 }
720 #else
721 struct page_ext_operations debug_guardpage_ops;
722 static inline bool set_page_guard(struct zone *zone, struct page *page,
723                         unsigned int order, int migratetype) { return false; }
724 static inline void clear_page_guard(struct zone *zone, struct page *page,
725                                 unsigned int order, int migratetype) {}
726 #endif
727
728 static inline void set_page_order(struct page *page, unsigned int order)
729 {
730         set_page_private(page, order);
731         __SetPageBuddy(page);
732 }
733
734 static inline void rmv_page_order(struct page *page)
735 {
736         __ClearPageBuddy(page);
737         set_page_private(page, 0);
738 }
739
740 /*
741  * This function checks whether a page is free && is the buddy
742  * we can do coalesce a page and its buddy if
743  * (a) the buddy is not in a hole (check before calling!) &&
744  * (b) the buddy is in the buddy system &&
745  * (c) a page and its buddy have the same order &&
746  * (d) a page and its buddy are in the same zone.
747  *
748  * For recording whether a page is in the buddy system, we set ->_mapcount
749  * PAGE_BUDDY_MAPCOUNT_VALUE.
750  * Setting, clearing, and testing _mapcount PAGE_BUDDY_MAPCOUNT_VALUE is
751  * serialized by zone->lock.
752  *
753  * For recording page's order, we use page_private(page).
754  */
755 static inline int page_is_buddy(struct page *page, struct page *buddy,
756                                                         unsigned int order)
757 {
758         if (page_is_guard(buddy) && page_order(buddy) == order) {
759                 if (page_zone_id(page) != page_zone_id(buddy))
760                         return 0;
761
762                 VM_BUG_ON_PAGE(page_count(buddy) != 0, buddy);
763
764                 return 1;
765         }
766
767         if (PageBuddy(buddy) && page_order(buddy) == order) {
768                 /*
769                  * zone check is done late to avoid uselessly
770                  * calculating zone/node ids for pages that could
771                  * never merge.
772                  */
773                 if (page_zone_id(page) != page_zone_id(buddy))
774                         return 0;
775
776                 VM_BUG_ON_PAGE(page_count(buddy) != 0, buddy);
777
778                 return 1;
779         }
780         return 0;
781 }
782
783 /*
784  * Freeing function for a buddy system allocator.
785  *
786  * The concept of a buddy system is to maintain direct-mapped table
787  * (containing bit values) for memory blocks of various "orders".
788  * The bottom level table contains the map for the smallest allocatable
789  * units of memory (here, pages), and each level above it describes
790  * pairs of units from the levels below, hence, "buddies".
791  * At a high level, all that happens here is marking the table entry
792  * at the bottom level available, and propagating the changes upward
793  * as necessary, plus some accounting needed to play nicely with other
794  * parts of the VM system.
795  * At each level, we keep a list of pages, which are heads of continuous
796  * free pages of length of (1 << order) and marked with _mapcount
797  * PAGE_BUDDY_MAPCOUNT_VALUE. Page's order is recorded in page_private(page)
798  * field.
799  * So when we are allocating or freeing one, we can derive the state of the
800  * other.  That is, if we allocate a small block, and both were
801  * free, the remainder of the region must be split into blocks.
802  * If a block is freed, and its buddy is also free, then this
803  * triggers coalescing into a block of larger size.
804  *
805  * -- nyc
806  */
807
808 static inline void __free_one_page(struct page *page,
809                 unsigned long pfn,
810                 struct zone *zone, unsigned int order,
811                 int migratetype)
812 {
813         unsigned long combined_pfn;
814         unsigned long uninitialized_var(buddy_pfn);
815         struct page *buddy;
816         unsigned int max_order;
817
818         max_order = min_t(unsigned int, MAX_ORDER - 1, pageblock_order);
819
820         VM_BUG_ON(!zone_is_initialized(zone));
821         VM_BUG_ON_PAGE(page->flags & PAGE_FLAGS_CHECK_AT_PREP, page);
822
823         VM_BUG_ON(migratetype == -1);
824         if (likely(!is_migrate_isolate(migratetype)))
825                 __mod_zone_freepage_state(zone, 1 << order, migratetype);
826
827         VM_BUG_ON_PAGE(pfn & ((1 << order) - 1), page);
828         VM_BUG_ON_PAGE(bad_range(zone, page), page);
829
830 continue_merging:
831         while (order < max_order) {
832                 buddy_pfn = __find_buddy_pfn(pfn, order);
833                 buddy = page + (buddy_pfn - pfn);
834
835                 if (!pfn_valid_within(buddy_pfn))
836                         goto done_merging;
837                 if (!page_is_buddy(page, buddy, order))
838                         goto done_merging;
839                 /*
840                  * Our buddy is free or it is CONFIG_DEBUG_PAGEALLOC guard page,
841                  * merge with it and move up one order.
842                  */
843                 if (page_is_guard(buddy)) {
844                         clear_page_guard(zone, buddy, order, migratetype);
845                 } else {
846                         list_del(&buddy->lru);
847                         zone->free_area[order].nr_free--;
848                         rmv_page_order(buddy);
849                 }
850                 combined_pfn = buddy_pfn & pfn;
851                 page = page + (combined_pfn - pfn);
852                 pfn = combined_pfn;
853                 order++;
854         }
855         if (order < MAX_ORDER - 1) {
856                 /* If we are here, it means order is >= pageblock_order.
857                  * We want to prevent merge between freepages on isolate
858                  * pageblock and normal pageblock. Without this, pageblock
859                  * isolation could cause incorrect freepage or CMA accounting.
860                  *
861                  * We don't want to hit this code for the more frequent
862                  * low-order merging.
863                  */
864                 if (unlikely(has_isolate_pageblock(zone))) {
865                         int buddy_mt;
866
867                         buddy_pfn = __find_buddy_pfn(pfn, order);
868                         buddy = page + (buddy_pfn - pfn);
869                         buddy_mt = get_pageblock_migratetype(buddy);
870
871                         if (migratetype != buddy_mt
872                                         && (is_migrate_isolate(migratetype) ||
873                                                 is_migrate_isolate(buddy_mt)))
874                                 goto done_merging;
875                 }
876                 max_order = order + 1;
877                 goto continue_merging;
878         }
879
880 done_merging:
881         set_page_order(page, order);
882
883         /*
884          * If this is not the largest possible page, check if the buddy
885          * of the next-highest order is free. If it is, it's possible
886          * that pages are being freed that will coalesce soon. In case,
887          * that is happening, add the free page to the tail of the list
888          * so it's less likely to be used soon and more likely to be merged
889          * as a higher order page
890          */
891         if ((order < MAX_ORDER-2) && pfn_valid_within(buddy_pfn)) {
892                 struct page *higher_page, *higher_buddy;
893                 combined_pfn = buddy_pfn & pfn;
894                 higher_page = page + (combined_pfn - pfn);
895                 buddy_pfn = __find_buddy_pfn(combined_pfn, order + 1);
896                 higher_buddy = higher_page + (buddy_pfn - combined_pfn);
897                 if (pfn_valid_within(buddy_pfn) &&
898                     page_is_buddy(higher_page, higher_buddy, order + 1)) {
899                         list_add_tail(&page->lru,
900                                 &zone->free_area[order].free_list[migratetype]);
901                         goto out;
902                 }
903         }
904
905         list_add(&page->lru, &zone->free_area[order].free_list[migratetype]);
906 out:
907         zone->free_area[order].nr_free++;
908 }
909
910 /*
911  * A bad page could be due to a number of fields. Instead of multiple branches,
912  * try and check multiple fields with one check. The caller must do a detailed
913  * check if necessary.
914  */
915 static inline bool page_expected_state(struct page *page,
916                                         unsigned long check_flags)
917 {
918         if (unlikely(atomic_read(&page->_mapcount) != -1))
919                 return false;
920
921         if (unlikely((unsigned long)page->mapping |
922                         page_ref_count(page) |
923 #ifdef CONFIG_MEMCG
924                         (unsigned long)page->mem_cgroup |
925 #endif
926                         (page->flags & check_flags)))
927                 return false;
928
929         return true;
930 }
931
932 static void free_pages_check_bad(struct page *page)
933 {
934         const char *bad_reason;
935         unsigned long bad_flags;
936
937         bad_reason = NULL;
938         bad_flags = 0;
939
940         if (unlikely(atomic_read(&page->_mapcount) != -1))
941                 bad_reason = "nonzero mapcount";
942         if (unlikely(page->mapping != NULL))
943                 bad_reason = "non-NULL mapping";
944         if (unlikely(page_ref_count(page) != 0))
945                 bad_reason = "nonzero _refcount";
946         if (unlikely(page->flags & PAGE_FLAGS_CHECK_AT_FREE)) {
947                 bad_reason = "PAGE_FLAGS_CHECK_AT_FREE flag(s) set";
948                 bad_flags = PAGE_FLAGS_CHECK_AT_FREE;
949         }
950 #ifdef CONFIG_MEMCG
951         if (unlikely(page->mem_cgroup))
952                 bad_reason = "page still charged to cgroup";
953 #endif
954         bad_page(page, bad_reason, bad_flags);
955 }
956
957 static inline int free_pages_check(struct page *page)
958 {
959         if (likely(page_expected_state(page, PAGE_FLAGS_CHECK_AT_FREE)))
960                 return 0;
961
962         /* Something has gone sideways, find it */
963         free_pages_check_bad(page);
964         return 1;
965 }
966
967 static int free_tail_pages_check(struct page *head_page, struct page *page)
968 {
969         int ret = 1;
970
971         /*
972          * We rely page->lru.next never has bit 0 set, unless the page
973          * is PageTail(). Let's make sure that's true even for poisoned ->lru.
974          */
975         BUILD_BUG_ON((unsigned long)LIST_POISON1 & 1);
976
977         if (!IS_ENABLED(CONFIG_DEBUG_VM)) {
978                 ret = 0;
979                 goto out;
980         }
981         switch (page - head_page) {
982         case 1:
983                 /* the first tail page: ->mapping is compound_mapcount() */
984                 if (unlikely(compound_mapcount(page))) {
985                         bad_page(page, "nonzero compound_mapcount", 0);
986                         goto out;
987                 }
988                 break;
989         case 2:
990                 /*
991                  * the second tail page: ->mapping is
992                  * page_deferred_list().next -- ignore value.
993                  */
994                 break;
995         default:
996                 if (page->mapping != TAIL_MAPPING) {
997                         bad_page(page, "corrupted mapping in tail page", 0);
998                         goto out;
999                 }
1000                 break;
1001         }
1002         if (unlikely(!PageTail(page))) {
1003                 bad_page(page, "PageTail not set", 0);
1004                 goto out;
1005         }
1006         if (unlikely(compound_head(page) != head_page)) {
1007                 bad_page(page, "compound_head not consistent", 0);
1008                 goto out;
1009         }
1010         ret = 0;
1011 out:
1012         page->mapping = NULL;
1013         clear_compound_head(page);
1014         return ret;
1015 }
1016
1017 static __always_inline bool free_pages_prepare(struct page *page,
1018                                         unsigned int order, bool check_free)
1019 {
1020         int bad = 0;
1021
1022         VM_BUG_ON_PAGE(PageTail(page), page);
1023
1024         trace_mm_page_free(page, order);
1025
1026         /*
1027          * Check tail pages before head page information is cleared to
1028          * avoid checking PageCompound for order-0 pages.
1029          */
1030         if (unlikely(order)) {
1031                 bool compound = PageCompound(page);
1032                 int i;
1033
1034                 VM_BUG_ON_PAGE(compound && compound_order(page) != order, page);
1035
1036                 if (compound)
1037                         ClearPageDoubleMap(page);
1038                 for (i = 1; i < (1 << order); i++) {
1039                         if (compound)
1040                                 bad += free_tail_pages_check(page, page + i);
1041                         if (unlikely(free_pages_check(page + i))) {
1042                                 bad++;
1043                                 continue;
1044                         }
1045                         (page + i)->flags &= ~PAGE_FLAGS_CHECK_AT_PREP;
1046                 }
1047         }
1048         if (PageMappingFlags(page))
1049                 page->mapping = NULL;
1050         if (memcg_kmem_enabled() && PageKmemcg(page))
1051                 memcg_kmem_uncharge(page, order);
1052         if (check_free)
1053                 bad += free_pages_check(page);
1054         if (bad)
1055                 return false;
1056
1057         page_cpupid_reset_last(page);
1058         page->flags &= ~PAGE_FLAGS_CHECK_AT_PREP;
1059         reset_page_owner(page, order);
1060
1061         if (!PageHighMem(page)) {
1062                 debug_check_no_locks_freed(page_address(page),
1063                                            PAGE_SIZE << order);
1064                 debug_check_no_obj_freed(page_address(page),
1065                                            PAGE_SIZE << order);
1066         }
1067         arch_free_page(page, order);
1068         kernel_poison_pages(page, 1 << order, 0);
1069         kernel_map_pages(page, 1 << order, 0);
1070         kasan_free_pages(page, order);
1071
1072         return true;
1073 }
1074
1075 #ifdef CONFIG_DEBUG_VM
1076 static inline bool free_pcp_prepare(struct page *page)
1077 {
1078         return free_pages_prepare(page, 0, true);
1079 }
1080
1081 static inline bool bulkfree_pcp_prepare(struct page *page)
1082 {
1083         return false;
1084 }
1085 #else
1086 static bool free_pcp_prepare(struct page *page)
1087 {
1088         return free_pages_prepare(page, 0, false);
1089 }
1090
1091 static bool bulkfree_pcp_prepare(struct page *page)
1092 {
1093         return free_pages_check(page);
1094 }
1095 #endif /* CONFIG_DEBUG_VM */
1096
1097 /*
1098  * Frees a number of pages from the PCP lists
1099  * Assumes all pages on list are in same zone, and of same order.
1100  * count is the number of pages to free.
1101  *
1102  * If the zone was previously in an "all pages pinned" state then look to
1103  * see if this freeing clears that state.
1104  *
1105  * And clear the zone's pages_scanned counter, to hold off the "all pages are
1106  * pinned" detection logic.
1107  */
1108 static void free_pcppages_bulk(struct zone *zone, int count,
1109                                         struct per_cpu_pages *pcp)
1110 {
1111         int migratetype = 0;
1112         int batch_free = 0;
1113         bool isolated_pageblocks;
1114
1115         spin_lock(&zone->lock);
1116         isolated_pageblocks = has_isolate_pageblock(zone);
1117
1118         /*
1119          * Ensure proper count is passed which otherwise would stuck in the
1120          * below while (list_empty(list)) loop.
1121          */
1122         count = min(pcp->count, count);
1123         while (count) {
1124                 struct page *page;
1125                 struct list_head *list;
1126
1127                 /*
1128                  * Remove pages from lists in a round-robin fashion. A
1129                  * batch_free count is maintained that is incremented when an
1130                  * empty list is encountered.  This is so more pages are freed
1131                  * off fuller lists instead of spinning excessively around empty
1132                  * lists
1133                  */
1134                 do {
1135                         batch_free++;
1136                         if (++migratetype == MIGRATE_PCPTYPES)
1137                                 migratetype = 0;
1138                         list = &pcp->lists[migratetype];
1139                 } while (list_empty(list));
1140
1141                 /* This is the only non-empty list. Free them all. */
1142                 if (batch_free == MIGRATE_PCPTYPES)
1143                         batch_free = count;
1144
1145                 do {
1146                         int mt; /* migratetype of the to-be-freed page */
1147
1148                         page = list_last_entry(list, struct page, lru);
1149                         /* must delete as __free_one_page list manipulates */
1150                         list_del(&page->lru);
1151
1152                         mt = get_pcppage_migratetype(page);
1153                         /* MIGRATE_ISOLATE page should not go to pcplists */
1154                         VM_BUG_ON_PAGE(is_migrate_isolate(mt), page);
1155                         /* Pageblock could have been isolated meanwhile */
1156                         if (unlikely(isolated_pageblocks))
1157                                 mt = get_pageblock_migratetype(page);
1158
1159                         if (bulkfree_pcp_prepare(page))
1160                                 continue;
1161
1162                         __free_one_page(page, page_to_pfn(page), zone, 0, mt);
1163                         trace_mm_page_pcpu_drain(page, 0, mt);
1164                 } while (--count && --batch_free && !list_empty(list));
1165         }
1166         spin_unlock(&zone->lock);
1167 }
1168
1169 static void free_one_page(struct zone *zone,
1170                                 struct page *page, unsigned long pfn,
1171                                 unsigned int order,
1172                                 int migratetype)
1173 {
1174         spin_lock(&zone->lock);
1175         if (unlikely(has_isolate_pageblock(zone) ||
1176                 is_migrate_isolate(migratetype))) {
1177                 migratetype = get_pfnblock_migratetype(page, pfn);
1178         }
1179         __free_one_page(page, pfn, zone, order, migratetype);
1180         spin_unlock(&zone->lock);
1181 }
1182
1183 static void __meminit __init_single_page(struct page *page, unsigned long pfn,
1184                                 unsigned long zone, int nid)
1185 {
1186         set_page_links(page, zone, nid, pfn);
1187         init_page_count(page);
1188         page_mapcount_reset(page);
1189         page_cpupid_reset_last(page);
1190
1191         INIT_LIST_HEAD(&page->lru);
1192 #ifdef WANT_PAGE_VIRTUAL
1193         /* The shift won't overflow because ZONE_NORMAL is below 4G. */
1194         if (!is_highmem_idx(zone))
1195                 set_page_address(page, __va(pfn << PAGE_SHIFT));
1196 #endif
1197 }
1198
1199 static void __meminit __init_single_pfn(unsigned long pfn, unsigned long zone,
1200                                         int nid)
1201 {
1202         return __init_single_page(pfn_to_page(pfn), pfn, zone, nid);
1203 }
1204
1205 #ifdef CONFIG_DEFERRED_STRUCT_PAGE_INIT
1206 static void __meminit init_reserved_page(unsigned long pfn)
1207 {
1208         pg_data_t *pgdat;
1209         int nid, zid;
1210
1211         if (!early_page_uninitialised(pfn))
1212                 return;
1213
1214         nid = early_pfn_to_nid(pfn);
1215         pgdat = NODE_DATA(nid);
1216
1217         for (zid = 0; zid < MAX_NR_ZONES; zid++) {
1218                 struct zone *zone = &pgdat->node_zones[zid];
1219
1220                 if (pfn >= zone->zone_start_pfn && pfn < zone_end_pfn(zone))
1221                         break;
1222         }
1223         __init_single_pfn(pfn, zid, nid);
1224 }
1225 #else
1226 static inline void init_reserved_page(unsigned long pfn)
1227 {
1228 }
1229 #endif /* CONFIG_DEFERRED_STRUCT_PAGE_INIT */
1230
1231 /*
1232  * Initialised pages do not have PageReserved set. This function is
1233  * called for each range allocated by the bootmem allocator and
1234  * marks the pages PageReserved. The remaining valid pages are later
1235  * sent to the buddy page allocator.
1236  */
1237 void __meminit reserve_bootmem_region(phys_addr_t start, phys_addr_t end)
1238 {
1239         unsigned long start_pfn = PFN_DOWN(start);
1240         unsigned long end_pfn = PFN_UP(end);
1241
1242         for (; start_pfn < end_pfn; start_pfn++) {
1243                 if (pfn_valid(start_pfn)) {
1244                         struct page *page = pfn_to_page(start_pfn);
1245
1246                         init_reserved_page(start_pfn);
1247
1248                         /* Avoid false-positive PageTail() */
1249                         INIT_LIST_HEAD(&page->lru);
1250
1251                         SetPageReserved(page);
1252                 }
1253         }
1254 }
1255
1256 static void __free_pages_ok(struct page *page, unsigned int order)
1257 {
1258         unsigned long flags;
1259         int migratetype;
1260         unsigned long pfn = page_to_pfn(page);
1261
1262         if (!free_pages_prepare(page, order, true))
1263                 return;
1264
1265         migratetype = get_pfnblock_migratetype(page, pfn);
1266         local_irq_save(flags);
1267         __count_vm_events(PGFREE, 1 << order);
1268         free_one_page(page_zone(page), page, pfn, order, migratetype);
1269         local_irq_restore(flags);
1270 }
1271
1272 static void __init __free_pages_boot_core(struct page *page, unsigned int order)
1273 {
1274         unsigned int nr_pages = 1 << order;
1275         struct page *p = page;
1276         unsigned int loop;
1277
1278         prefetchw(p);
1279         for (loop = 0; loop < (nr_pages - 1); loop++, p++) {
1280                 prefetchw(p + 1);
1281                 __ClearPageReserved(p);
1282                 set_page_count(p, 0);
1283         }
1284         __ClearPageReserved(p);
1285         set_page_count(p, 0);
1286
1287         page_zone(page)->managed_pages += nr_pages;
1288         set_page_refcounted(page);
1289         __free_pages(page, order);
1290 }
1291
1292 #if defined(CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID) || \
1293         defined(CONFIG_HAVE_MEMBLOCK_NODE_MAP)
1294
1295 static struct mminit_pfnnid_cache early_pfnnid_cache __meminitdata;
1296
1297 int __meminit early_pfn_to_nid(unsigned long pfn)
1298 {
1299         static DEFINE_SPINLOCK(early_pfn_lock);
1300         int nid;
1301
1302         spin_lock(&early_pfn_lock);
1303         nid = __early_pfn_to_nid(pfn, &early_pfnnid_cache);
1304         if (nid < 0)
1305                 nid = first_online_node;
1306         spin_unlock(&early_pfn_lock);
1307
1308         return nid;
1309 }
1310 #endif
1311
1312 #ifdef CONFIG_NODES_SPAN_OTHER_NODES
1313 static inline bool __meminit __maybe_unused
1314 meminit_pfn_in_nid(unsigned long pfn, int node,
1315                    struct mminit_pfnnid_cache *state)
1316 {
1317         int nid;
1318
1319         nid = __early_pfn_to_nid(pfn, state);
1320         if (nid >= 0 && nid != node)
1321                 return false;
1322         return true;
1323 }
1324
1325 /* Only safe to use early in boot when initialisation is single-threaded */
1326 static inline bool __meminit early_pfn_in_nid(unsigned long pfn, int node)
1327 {
1328         return meminit_pfn_in_nid(pfn, node, &early_pfnnid_cache);
1329 }
1330
1331 #else
1332
1333 static inline bool __meminit early_pfn_in_nid(unsigned long pfn, int node)
1334 {
1335         return true;
1336 }
1337 static inline bool __meminit  __maybe_unused
1338 meminit_pfn_in_nid(unsigned long pfn, int node,
1339                    struct mminit_pfnnid_cache *state)
1340 {
1341         return true;
1342 }
1343 #endif
1344
1345
1346 void __init __free_pages_bootmem(struct page *page, unsigned long pfn,
1347                                                         unsigned int order)
1348 {
1349         if (early_page_uninitialised(pfn))
1350                 return;
1351         return __free_pages_boot_core(page, order);
1352 }
1353
1354 /*
1355  * Check that the whole (or subset of) a pageblock given by the interval of
1356  * [start_pfn, end_pfn) is valid and within the same zone, before scanning it
1357  * with the migration of free compaction scanner. The scanners then need to
1358  * use only pfn_valid_within() check for arches that allow holes within
1359  * pageblocks.
1360  *
1361  * Return struct page pointer of start_pfn, or NULL if checks were not passed.
1362  *
1363  * It's possible on some configurations to have a setup like node0 node1 node0
1364  * i.e. it's possible that all pages within a zones range of pages do not
1365  * belong to a single zone. We assume that a border between node0 and node1
1366  * can occur within a single pageblock, but not a node0 node1 node0
1367  * interleaving within a single pageblock. It is therefore sufficient to check
1368  * the first and last page of a pageblock and avoid checking each individual
1369  * page in a pageblock.
1370  */
1371 struct page *__pageblock_pfn_to_page(unsigned long start_pfn,
1372                                      unsigned long end_pfn, struct zone *zone)
1373 {
1374         struct page *start_page;
1375         struct page *end_page;
1376
1377         /* end_pfn is one past the range we are checking */
1378         end_pfn--;
1379
1380         if (!pfn_valid(start_pfn) || !pfn_valid(end_pfn))
1381                 return NULL;
1382
1383         start_page = pfn_to_online_page(start_pfn);
1384         if (!start_page)
1385                 return NULL;
1386
1387         if (page_zone(start_page) != zone)
1388                 return NULL;
1389
1390         end_page = pfn_to_page(end_pfn);
1391
1392         /* This gives a shorter code than deriving page_zone(end_page) */
1393         if (page_zone_id(start_page) != page_zone_id(end_page))
1394                 return NULL;
1395
1396         return start_page;
1397 }
1398
1399 void set_zone_contiguous(struct zone *zone)
1400 {
1401         unsigned long block_start_pfn = zone->zone_start_pfn;
1402         unsigned long block_end_pfn;
1403
1404         block_end_pfn = ALIGN(block_start_pfn + 1, pageblock_nr_pages);
1405         for (; block_start_pfn < zone_end_pfn(zone);
1406                         block_start_pfn = block_end_pfn,
1407                          block_end_pfn += pageblock_nr_pages) {
1408
1409                 block_end_pfn = min(block_end_pfn, zone_end_pfn(zone));
1410
1411                 if (!__pageblock_pfn_to_page(block_start_pfn,
1412                                              block_end_pfn, zone))
1413                         return;
1414                 cond_resched();
1415         }
1416
1417         /* We confirm that there is no hole */
1418         zone->contiguous = true;
1419 }
1420
1421 void clear_zone_contiguous(struct zone *zone)
1422 {
1423         zone->contiguous = false;
1424 }
1425
1426 #ifdef CONFIG_DEFERRED_STRUCT_PAGE_INIT
1427 static void __init deferred_free_range(struct page *page,
1428                                         unsigned long pfn, int nr_pages)
1429 {
1430         int i;
1431
1432         if (!page)
1433                 return;
1434
1435         /* Free a large naturally-aligned chunk if possible */
1436         if (nr_pages == pageblock_nr_pages &&
1437             (pfn & (pageblock_nr_pages - 1)) == 0) {
1438                 set_pageblock_migratetype(page, MIGRATE_MOVABLE);
1439                 __free_pages_boot_core(page, pageblock_order);
1440                 return;
1441         }
1442
1443         for (i = 0; i < nr_pages; i++, page++, pfn++) {
1444                 if ((pfn & (pageblock_nr_pages - 1)) == 0)
1445                         set_pageblock_migratetype(page, MIGRATE_MOVABLE);
1446                 __free_pages_boot_core(page, 0);
1447         }
1448 }
1449
1450 /* Completion tracking for deferred_init_memmap() threads */
1451 static atomic_t pgdat_init_n_undone __initdata;
1452 static __initdata DECLARE_COMPLETION(pgdat_init_all_done_comp);
1453
1454 static inline void __init pgdat_init_report_one_done(void)
1455 {
1456         if (atomic_dec_and_test(&pgdat_init_n_undone))
1457                 complete(&pgdat_init_all_done_comp);
1458 }
1459
1460 /* Initialise remaining memory on a node */
1461 static int __init deferred_init_memmap(void *data)
1462 {
1463         pg_data_t *pgdat = data;
1464         int nid = pgdat->node_id;
1465         struct mminit_pfnnid_cache nid_init_state = { };
1466         unsigned long start = jiffies;
1467         unsigned long nr_pages = 0;
1468         unsigned long walk_start, walk_end;
1469         int i, zid;
1470         struct zone *zone;
1471         unsigned long first_init_pfn = pgdat->first_deferred_pfn;
1472         const struct cpumask *cpumask = cpumask_of_node(pgdat->node_id);
1473
1474         if (first_init_pfn == ULONG_MAX) {
1475                 pgdat_init_report_one_done();
1476                 return 0;
1477         }
1478
1479         /* Bind memory initialisation thread to a local node if possible */
1480         if (!cpumask_empty(cpumask))
1481                 set_cpus_allowed_ptr(current, cpumask);
1482
1483         /* Sanity check boundaries */
1484         BUG_ON(pgdat->first_deferred_pfn < pgdat->node_start_pfn);
1485         BUG_ON(pgdat->first_deferred_pfn > pgdat_end_pfn(pgdat));
1486         pgdat->first_deferred_pfn = ULONG_MAX;
1487
1488         /* Only the highest zone is deferred so find it */
1489         for (zid = 0; zid < MAX_NR_ZONES; zid++) {
1490                 zone = pgdat->node_zones + zid;
1491                 if (first_init_pfn < zone_end_pfn(zone))
1492                         break;
1493         }
1494
1495         for_each_mem_pfn_range(i, nid, &walk_start, &walk_end, NULL) {
1496                 unsigned long pfn, end_pfn;
1497                 struct page *page = NULL;
1498                 struct page *free_base_page = NULL;
1499                 unsigned long free_base_pfn = 0;
1500                 int nr_to_free = 0;
1501
1502                 end_pfn = min(walk_end, zone_end_pfn(zone));
1503                 pfn = first_init_pfn;
1504                 if (pfn < walk_start)
1505                         pfn = walk_start;
1506                 if (pfn < zone->zone_start_pfn)
1507                         pfn = zone->zone_start_pfn;
1508
1509                 for (; pfn < end_pfn; pfn++) {
1510                         if (!pfn_valid_within(pfn))
1511                                 goto free_range;
1512
1513                         /*
1514                          * Ensure pfn_valid is checked every
1515                          * pageblock_nr_pages for memory holes
1516                          */
1517                         if ((pfn & (pageblock_nr_pages - 1)) == 0) {
1518                                 if (!pfn_valid(pfn)) {
1519                                         page = NULL;
1520                                         goto free_range;
1521                                 }
1522                         }
1523
1524                         if (!meminit_pfn_in_nid(pfn, nid, &nid_init_state)) {
1525                                 page = NULL;
1526                                 goto free_range;
1527                         }
1528
1529                         /* Minimise pfn page lookups and scheduler checks */
1530                         if (page && (pfn & (pageblock_nr_pages - 1)) != 0) {
1531                                 page++;
1532                         } else {
1533                                 nr_pages += nr_to_free;
1534                                 deferred_free_range(free_base_page,
1535                                                 free_base_pfn, nr_to_free);
1536                                 free_base_page = NULL;
1537                                 free_base_pfn = nr_to_free = 0;
1538
1539                                 page = pfn_to_page(pfn);
1540                                 cond_resched();
1541                         }
1542
1543                         if (page->flags) {
1544                                 VM_BUG_ON(page_zone(page) != zone);
1545                                 goto free_range;
1546                         }
1547
1548                         __init_single_page(page, pfn, zid, nid);
1549                         if (!free_base_page) {
1550                                 free_base_page = page;
1551                                 free_base_pfn = pfn;
1552                                 nr_to_free = 0;
1553                         }
1554                         nr_to_free++;
1555
1556                         /* Where possible, batch up pages for a single free */
1557                         continue;
1558 free_range:
1559                         /* Free the current block of pages to allocator */
1560                         nr_pages += nr_to_free;
1561                         deferred_free_range(free_base_page, free_base_pfn,
1562                                                                 nr_to_free);
1563                         free_base_page = NULL;
1564                         free_base_pfn = nr_to_free = 0;
1565                 }
1566                 /* Free the last block of pages to allocator */
1567                 nr_pages += nr_to_free;
1568                 deferred_free_range(free_base_page, free_base_pfn, nr_to_free);
1569
1570                 first_init_pfn = max(end_pfn, first_init_pfn);
1571         }
1572
1573         /* Sanity check that the next zone really is unpopulated */
1574         WARN_ON(++zid < MAX_NR_ZONES && populated_zone(++zone));
1575
1576         pr_info("node %d initialised, %lu pages in %ums\n", nid, nr_pages,
1577                                         jiffies_to_msecs(jiffies - start));
1578
1579         pgdat_init_report_one_done();
1580         return 0;
1581 }
1582 #endif /* CONFIG_DEFERRED_STRUCT_PAGE_INIT */
1583
1584 void __init page_alloc_init_late(void)
1585 {
1586         struct zone *zone;
1587
1588 #ifdef CONFIG_DEFERRED_STRUCT_PAGE_INIT
1589         int nid;
1590
1591         /* There will be num_node_state(N_MEMORY) threads */
1592         atomic_set(&pgdat_init_n_undone, num_node_state(N_MEMORY));
1593         for_each_node_state(nid, N_MEMORY) {
1594                 kthread_run(deferred_init_memmap, NODE_DATA(nid), "pgdatinit%d", nid);
1595         }
1596
1597         /* Block until all are initialised */
1598         wait_for_completion(&pgdat_init_all_done_comp);
1599
1600         /* Reinit limits that are based on free pages after the kernel is up */
1601         files_maxfiles_init();
1602 #endif
1603 #ifdef CONFIG_ARCH_DISCARD_MEMBLOCK
1604         /* Discard memblock private memory */
1605         memblock_discard();
1606 #endif
1607
1608         for_each_populated_zone(zone)
1609                 set_zone_contiguous(zone);
1610 }
1611
1612 #ifdef CONFIG_CMA
1613 /* Free whole pageblock and set its migration type to MIGRATE_CMA. */
1614 void __init init_cma_reserved_pageblock(struct page *page)
1615 {
1616         unsigned i = pageblock_nr_pages;
1617         struct page *p = page;
1618
1619         do {
1620                 __ClearPageReserved(p);
1621                 set_page_count(p, 0);
1622         } while (++p, --i);
1623
1624         set_pageblock_migratetype(page, MIGRATE_CMA);
1625
1626         if (pageblock_order >= MAX_ORDER) {
1627                 i = pageblock_nr_pages;
1628                 p = page;
1629                 do {
1630                         set_page_refcounted(p);
1631                         __free_pages(p, MAX_ORDER - 1);
1632                         p += MAX_ORDER_NR_PAGES;
1633                 } while (i -= MAX_ORDER_NR_PAGES);
1634         } else {
1635                 set_page_refcounted(page);
1636                 __free_pages(page, pageblock_order);
1637         }
1638
1639         adjust_managed_page_count(page, pageblock_nr_pages);
1640 }
1641 #endif
1642
1643 /*
1644  * The order of subdivision here is critical for the IO subsystem.
1645  * Please do not alter this order without good reasons and regression
1646  * testing. Specifically, as large blocks of memory are subdivided,
1647  * the order in which smaller blocks are delivered depends on the order
1648  * they're subdivided in this function. This is the primary factor
1649  * influencing the order in which pages are delivered to the IO
1650  * subsystem according to empirical testing, and this is also justified
1651  * by considering the behavior of a buddy system containing a single
1652  * large block of memory acted on by a series of small allocations.
1653  * This behavior is a critical factor in sglist merging's success.
1654  *
1655  * -- nyc
1656  */
1657 static inline void expand(struct zone *zone, struct page *page,
1658         int low, int high, struct free_area *area,
1659         int migratetype)
1660 {
1661         unsigned long size = 1 << high;
1662
1663         while (high > low) {
1664                 area--;
1665                 high--;
1666                 size >>= 1;
1667                 VM_BUG_ON_PAGE(bad_range(zone, &page[size]), &page[size]);
1668
1669                 /*
1670                  * Mark as guard pages (or page), that will allow to
1671                  * merge back to allocator when buddy will be freed.
1672                  * Corresponding page table entries will not be touched,
1673                  * pages will stay not present in virtual address space
1674                  */
1675                 if (set_page_guard(zone, &page[size], high, migratetype))
1676                         continue;
1677
1678                 list_add(&page[size].lru, &area->free_list[migratetype]);
1679                 area->nr_free++;
1680                 set_page_order(&page[size], high);
1681         }
1682 }
1683
1684 static void check_new_page_bad(struct page *page)
1685 {
1686         const char *bad_reason = NULL;
1687         unsigned long bad_flags = 0;
1688
1689         if (unlikely(atomic_read(&page->_mapcount) != -1))
1690                 bad_reason = "nonzero mapcount";
1691         if (unlikely(page->mapping != NULL))
1692                 bad_reason = "non-NULL mapping";
1693         if (unlikely(page_ref_count(page) != 0))
1694                 bad_reason = "nonzero _count";
1695         if (unlikely(page->flags & __PG_HWPOISON)) {
1696                 bad_reason = "HWPoisoned (hardware-corrupted)";
1697                 bad_flags = __PG_HWPOISON;
1698                 /* Don't complain about hwpoisoned pages */
1699                 page_mapcount_reset(page); /* remove PageBuddy */
1700                 return;
1701         }
1702         if (unlikely(page->flags & PAGE_FLAGS_CHECK_AT_PREP)) {
1703                 bad_reason = "PAGE_FLAGS_CHECK_AT_PREP flag set";
1704                 bad_flags = PAGE_FLAGS_CHECK_AT_PREP;
1705         }
1706 #ifdef CONFIG_MEMCG
1707         if (unlikely(page->mem_cgroup))
1708                 bad_reason = "page still charged to cgroup";
1709 #endif
1710         bad_page(page, bad_reason, bad_flags);
1711 }
1712
1713 /*
1714  * This page is about to be returned from the page allocator
1715  */
1716 static inline int check_new_page(struct page *page)
1717 {
1718         if (likely(page_expected_state(page,
1719                                 PAGE_FLAGS_CHECK_AT_PREP|__PG_HWPOISON)))
1720                 return 0;
1721
1722         check_new_page_bad(page);
1723         return 1;
1724 }
1725
1726 static inline bool free_pages_prezeroed(void)
1727 {
1728         return IS_ENABLED(CONFIG_PAGE_POISONING_ZERO) &&
1729                 page_poisoning_enabled();
1730 }
1731
1732 #ifdef CONFIG_DEBUG_VM
1733 static bool check_pcp_refill(struct page *page)
1734 {
1735         return false;
1736 }
1737
1738 static bool check_new_pcp(struct page *page)
1739 {
1740         return check_new_page(page);
1741 }
1742 #else
1743 static bool check_pcp_refill(struct page *page)
1744 {
1745         return check_new_page(page);
1746 }
1747 static bool check_new_pcp(struct page *page)
1748 {
1749         return false;
1750 }
1751 #endif /* CONFIG_DEBUG_VM */
1752
1753 static bool check_new_pages(struct page *page, unsigned int order)
1754 {
1755         int i;
1756         for (i = 0; i < (1 << order); i++) {
1757                 struct page *p = page + i;
1758
1759                 if (unlikely(check_new_page(p)))
1760                         return true;
1761         }
1762
1763         return false;
1764 }
1765
1766 inline void post_alloc_hook(struct page *page, unsigned int order,
1767                                 gfp_t gfp_flags)
1768 {
1769         set_page_private(page, 0);
1770         set_page_refcounted(page);
1771
1772         arch_alloc_page(page, order);
1773         kernel_map_pages(page, 1 << order, 1);
1774         kasan_alloc_pages(page, order);
1775         kernel_poison_pages(page, 1 << order, 1);
1776         set_page_owner(page, order, gfp_flags);
1777 }
1778
1779 static void prep_new_page(struct page *page, unsigned int order, gfp_t gfp_flags,
1780                                                         unsigned int alloc_flags)
1781 {
1782         int i;
1783
1784         post_alloc_hook(page, order, gfp_flags);
1785
1786         if (!free_pages_prezeroed() && (gfp_flags & __GFP_ZERO))
1787                 for (i = 0; i < (1 << order); i++)
1788                         clear_highpage(page + i);
1789
1790         if (order && (gfp_flags & __GFP_COMP))
1791                 prep_compound_page(page, order);
1792
1793         /*
1794          * page is set pfmemalloc when ALLOC_NO_WATERMARKS was necessary to
1795          * allocate the page. The expectation is that the caller is taking
1796          * steps that will free more memory. The caller should avoid the page
1797          * being used for !PFMEMALLOC purposes.
1798          */
1799         if (alloc_flags & ALLOC_NO_WATERMARKS)
1800                 set_page_pfmemalloc(page);
1801         else
1802                 clear_page_pfmemalloc(page);
1803 }
1804
1805 /*
1806  * Go through the free lists for the given migratetype and remove
1807  * the smallest available page from the freelists
1808  */
1809 static inline
1810 struct page *__rmqueue_smallest(struct zone *zone, unsigned int order,
1811                                                 int migratetype)
1812 {
1813         unsigned int current_order;
1814         struct free_area *area;
1815         struct page *page;
1816
1817         /* Find a page of the appropriate size in the preferred list */
1818         for (current_order = order; current_order < MAX_ORDER; ++current_order) {
1819                 area = &(zone->free_area[current_order]);
1820                 page = list_first_entry_or_null(&area->free_list[migratetype],
1821                                                         struct page, lru);
1822                 if (!page)
1823                         continue;
1824                 list_del(&page->lru);
1825                 rmv_page_order(page);
1826                 area->nr_free--;
1827                 expand(zone, page, order, current_order, area, migratetype);
1828                 set_pcppage_migratetype(page, migratetype);
1829                 return page;
1830         }
1831
1832         return NULL;
1833 }
1834
1835
1836 /*
1837  * This array describes the order lists are fallen back to when
1838  * the free lists for the desirable migrate type are depleted
1839  */
1840 static int fallbacks[MIGRATE_TYPES][4] = {
1841         [MIGRATE_UNMOVABLE]   = { MIGRATE_RECLAIMABLE, MIGRATE_MOVABLE,   MIGRATE_TYPES },
1842         [MIGRATE_RECLAIMABLE] = { MIGRATE_UNMOVABLE,   MIGRATE_MOVABLE,   MIGRATE_TYPES },
1843         [MIGRATE_MOVABLE]     = { MIGRATE_RECLAIMABLE, MIGRATE_UNMOVABLE, MIGRATE_TYPES },
1844 #ifdef CONFIG_CMA
1845         [MIGRATE_CMA]         = { MIGRATE_TYPES }, /* Never used */
1846 #endif
1847 #ifdef CONFIG_MEMORY_ISOLATION
1848         [MIGRATE_ISOLATE]     = { MIGRATE_TYPES }, /* Never used */
1849 #endif
1850 };
1851
1852 #ifdef CONFIG_CMA
1853 static struct page *__rmqueue_cma_fallback(struct zone *zone,
1854                                         unsigned int order)
1855 {
1856         return __rmqueue_smallest(zone, order, MIGRATE_CMA);
1857 }
1858 #else
1859 static inline struct page *__rmqueue_cma_fallback(struct zone *zone,
1860                                         unsigned int order) { return NULL; }
1861 #endif
1862
1863 /*
1864  * Move the free pages in a range to the free lists of the requested type.
1865  * Note that start_page and end_pages are not aligned on a pageblock
1866  * boundary. If alignment is required, use move_freepages_block()
1867  */
1868 static int move_freepages(struct zone *zone,
1869                           struct page *start_page, struct page *end_page,
1870                           int migratetype, int *num_movable)
1871 {
1872         struct page *page;
1873         unsigned int order;
1874         int pages_moved = 0;
1875
1876 #ifndef CONFIG_HOLES_IN_ZONE
1877         /*
1878          * page_zone is not safe to call in this context when
1879          * CONFIG_HOLES_IN_ZONE is set. This bug check is probably redundant
1880          * anyway as we check zone boundaries in move_freepages_block().
1881          * Remove at a later date when no bug reports exist related to
1882          * grouping pages by mobility
1883          */
1884         VM_BUG_ON(page_zone(start_page) != page_zone(end_page));
1885 #endif
1886
1887         if (num_movable)
1888                 *num_movable = 0;
1889
1890         for (page = start_page; page <= end_page;) {
1891                 if (!pfn_valid_within(page_to_pfn(page))) {
1892                         page++;
1893                         continue;
1894                 }
1895
1896                 /* Make sure we are not inadvertently changing nodes */
1897                 VM_BUG_ON_PAGE(page_to_nid(page) != zone_to_nid(zone), page);
1898
1899                 if (!PageBuddy(page)) {
1900                         /*
1901                          * We assume that pages that could be isolated for
1902                          * migration are movable. But we don't actually try
1903                          * isolating, as that would be expensive.
1904                          */
1905                         if (num_movable &&
1906                                         (PageLRU(page) || __PageMovable(page)))
1907                                 (*num_movable)++;
1908
1909                         page++;
1910                         continue;
1911                 }
1912
1913                 order = page_order(page);
1914                 list_move(&page->lru,
1915                           &zone->free_area[order].free_list[migratetype]);
1916                 page += 1 << order;
1917                 pages_moved += 1 << order;
1918         }
1919
1920         return pages_moved;
1921 }
1922
1923 int move_freepages_block(struct zone *zone, struct page *page,
1924                                 int migratetype, int *num_movable)
1925 {
1926         unsigned long start_pfn, end_pfn;
1927         struct page *start_page, *end_page;
1928
1929         start_pfn = page_to_pfn(page);
1930         start_pfn = start_pfn & ~(pageblock_nr_pages-1);
1931         start_page = pfn_to_page(start_pfn);
1932         end_page = start_page + pageblock_nr_pages - 1;
1933         end_pfn = start_pfn + pageblock_nr_pages - 1;
1934
1935         /* Do not cross zone boundaries */
1936         if (!zone_spans_pfn(zone, start_pfn))
1937                 start_page = page;
1938         if (!zone_spans_pfn(zone, end_pfn))
1939                 return 0;
1940
1941         return move_freepages(zone, start_page, end_page, migratetype,
1942                                                                 num_movable);
1943 }
1944
1945 static void change_pageblock_range(struct page *pageblock_page,
1946                                         int start_order, int migratetype)
1947 {
1948         int nr_pageblocks = 1 << (start_order - pageblock_order);
1949
1950         while (nr_pageblocks--) {
1951                 set_pageblock_migratetype(pageblock_page, migratetype);
1952                 pageblock_page += pageblock_nr_pages;
1953         }
1954 }
1955
1956 /*
1957  * When we are falling back to another migratetype during allocation, try to
1958  * steal extra free pages from the same pageblocks to satisfy further
1959  * allocations, instead of polluting multiple pageblocks.
1960  *
1961  * If we are stealing a relatively large buddy page, it is likely there will
1962  * be more free pages in the pageblock, so try to steal them all. For
1963  * reclaimable and unmovable allocations, we steal regardless of page size,
1964  * as fragmentation caused by those allocations polluting movable pageblocks
1965  * is worse than movable allocations stealing from unmovable and reclaimable
1966  * pageblocks.
1967  */
1968 static bool can_steal_fallback(unsigned int order, int start_mt)
1969 {
1970         /*
1971          * Leaving this order check is intended, although there is
1972          * relaxed order check in next check. The reason is that
1973          * we can actually steal whole pageblock if this condition met,
1974          * but, below check doesn't guarantee it and that is just heuristic
1975          * so could be changed anytime.
1976          */
1977         if (order >= pageblock_order)
1978                 return true;
1979
1980         if (order >= pageblock_order / 2 ||
1981                 start_mt == MIGRATE_RECLAIMABLE ||
1982                 start_mt == MIGRATE_UNMOVABLE ||
1983                 page_group_by_mobility_disabled)
1984                 return true;
1985
1986         return false;
1987 }
1988
1989 /*
1990  * This function implements actual steal behaviour. If order is large enough,
1991  * we can steal whole pageblock. If not, we first move freepages in this
1992  * pageblock to our migratetype and determine how many already-allocated pages
1993  * are there in the pageblock with a compatible migratetype. If at least half
1994  * of pages are free or compatible, we can change migratetype of the pageblock
1995  * itself, so pages freed in the future will be put on the correct free list.
1996  */
1997 static void steal_suitable_fallback(struct zone *zone, struct page *page,
1998                                         int start_type, bool whole_block)
1999 {
2000         unsigned int current_order = page_order(page);
2001         struct free_area *area;
2002         int free_pages, movable_pages, alike_pages;
2003         int old_block_type;
2004
2005         old_block_type = get_pageblock_migratetype(page);
2006
2007         /*
2008          * This can happen due to races and we want to prevent broken
2009          * highatomic accounting.
2010          */
2011         if (is_migrate_highatomic(old_block_type))
2012                 goto single_page;
2013
2014         /* Take ownership for orders >= pageblock_order */
2015         if (current_order >= pageblock_order) {
2016                 change_pageblock_range(page, current_order, start_type);
2017                 goto single_page;
2018         }
2019
2020         /* We are not allowed to try stealing from the whole block */
2021         if (!whole_block)
2022                 goto single_page;
2023
2024         free_pages = move_freepages_block(zone, page, start_type,
2025                                                 &movable_pages);
2026         /*
2027          * Determine how many pages are compatible with our allocation.
2028          * For movable allocation, it's the number of movable pages which
2029          * we just obtained. For other types it's a bit more tricky.
2030          */
2031         if (start_type == MIGRATE_MOVABLE) {
2032                 alike_pages = movable_pages;
2033         } else {
2034                 /*
2035                  * If we are falling back a RECLAIMABLE or UNMOVABLE allocation
2036                  * to MOVABLE pageblock, consider all non-movable pages as
2037                  * compatible. If it's UNMOVABLE falling back to RECLAIMABLE or
2038                  * vice versa, be conservative since we can't distinguish the
2039                  * exact migratetype of non-movable pages.
2040                  */
2041                 if (old_block_type == MIGRATE_MOVABLE)
2042                         alike_pages = pageblock_nr_pages
2043                                                 - (free_pages + movable_pages);
2044                 else
2045                         alike_pages = 0;
2046         }
2047
2048         /* moving whole block can fail due to zone boundary conditions */
2049         if (!free_pages)
2050                 goto single_page;
2051
2052         /*
2053          * If a sufficient number of pages in the block are either free or of
2054          * comparable migratability as our allocation, claim the whole block.
2055          */
2056         if (free_pages + alike_pages >= (1 << (pageblock_order-1)) ||
2057                         page_group_by_mobility_disabled)
2058                 set_pageblock_migratetype(page, start_type);
2059
2060         return;
2061
2062 single_page:
2063         area = &zone->free_area[current_order];
2064         list_move(&page->lru, &area->free_list[start_type]);
2065 }
2066
2067 /*
2068  * Check whether there is a suitable fallback freepage with requested order.
2069  * If only_stealable is true, this function returns fallback_mt only if
2070  * we can steal other freepages all together. This would help to reduce
2071  * fragmentation due to mixed migratetype pages in one pageblock.
2072  */
2073 int find_suitable_fallback(struct free_area *area, unsigned int order,
2074                         int migratetype, bool only_stealable, bool *can_steal)
2075 {
2076         int i;
2077         int fallback_mt;
2078
2079         if (area->nr_free == 0)
2080                 return -1;
2081
2082         *can_steal = false;
2083         for (i = 0;; i++) {
2084                 fallback_mt = fallbacks[migratetype][i];
2085                 if (fallback_mt == MIGRATE_TYPES)
2086                         break;
2087
2088                 if (list_empty(&area->free_list[fallback_mt]))
2089                         continue;
2090
2091                 if (can_steal_fallback(order, migratetype))
2092                         *can_steal = true;
2093
2094                 if (!only_stealable)
2095                         return fallback_mt;
2096
2097                 if (*can_steal)
2098                         return fallback_mt;
2099         }
2100
2101         return -1;
2102 }
2103
2104 /*
2105  * Reserve a pageblock for exclusive use of high-order atomic allocations if
2106  * there are no empty page blocks that contain a page with a suitable order
2107  */
2108 static void reserve_highatomic_pageblock(struct page *page, struct zone *zone,
2109                                 unsigned int alloc_order)
2110 {
2111         int mt;
2112         unsigned long max_managed, flags;
2113
2114         /*
2115          * Limit the number reserved to 1 pageblock or roughly 1% of a zone.
2116          * Check is race-prone but harmless.
2117          */
2118         max_managed = (zone->managed_pages / 100) + pageblock_nr_pages;
2119         if (zone->nr_reserved_highatomic >= max_managed)
2120                 return;
2121
2122         spin_lock_irqsave(&zone->lock, flags);
2123
2124         /* Recheck the nr_reserved_highatomic limit under the lock */
2125         if (zone->nr_reserved_highatomic >= max_managed)
2126                 goto out_unlock;
2127
2128         /* Yoink! */
2129         mt = get_pageblock_migratetype(page);
2130         if (!is_migrate_highatomic(mt) && !is_migrate_isolate(mt)
2131             && !is_migrate_cma(mt)) {
2132                 zone->nr_reserved_highatomic += pageblock_nr_pages;
2133                 set_pageblock_migratetype(page, MIGRATE_HIGHATOMIC);
2134                 move_freepages_block(zone, page, MIGRATE_HIGHATOMIC, NULL);
2135         }
2136
2137 out_unlock:
2138         spin_unlock_irqrestore(&zone->lock, flags);
2139 }
2140
2141 /*
2142  * Used when an allocation is about to fail under memory pressure. This
2143  * potentially hurts the reliability of high-order allocations when under
2144  * intense memory pressure but failed atomic allocations should be easier
2145  * to recover from than an OOM.
2146  *
2147  * If @force is true, try to unreserve a pageblock even though highatomic
2148  * pageblock is exhausted.
2149  */
2150 static bool unreserve_highatomic_pageblock(const struct alloc_context *ac,
2151                                                 bool force)
2152 {
2153         struct zonelist *zonelist = ac->zonelist;
2154         unsigned long flags;
2155         struct zoneref *z;
2156         struct zone *zone;
2157         struct page *page;
2158         int order;
2159         bool ret;
2160
2161         for_each_zone_zonelist_nodemask(zone, z, zonelist, ac->high_zoneidx,
2162                                                                 ac->nodemask) {
2163                 /*
2164                  * Preserve at least one pageblock unless memory pressure
2165                  * is really high.
2166                  */
2167                 if (!force && zone->nr_reserved_highatomic <=
2168                                         pageblock_nr_pages)
2169                         continue;
2170
2171                 spin_lock_irqsave(&zone->lock, flags);
2172                 for (order = 0; order < MAX_ORDER; order++) {
2173                         struct free_area *area = &(zone->free_area[order]);
2174
2175                         page = list_first_entry_or_null(
2176                                         &area->free_list[MIGRATE_HIGHATOMIC],
2177                                         struct page, lru);
2178                         if (!page)
2179                                 continue;
2180
2181                         /*
2182                          * In page freeing path, migratetype change is racy so
2183                          * we can counter several free pages in a pageblock
2184                          * in this loop althoug we changed the pageblock type
2185                          * from highatomic to ac->migratetype. So we should
2186                          * adjust the count once.
2187                          */
2188                         if (is_migrate_highatomic_page(page)) {
2189                                 /*
2190                                  * It should never happen but changes to
2191                                  * locking could inadvertently allow a per-cpu
2192                                  * drain to add pages to MIGRATE_HIGHATOMIC
2193                                  * while unreserving so be safe and watch for
2194                                  * underflows.
2195                                  */
2196                                 zone->nr_reserved_highatomic -= min(
2197                                                 pageblock_nr_pages,
2198                                                 zone->nr_reserved_highatomic);
2199                         }
2200
2201                         /*
2202                          * Convert to ac->migratetype and avoid the normal
2203                          * pageblock stealing heuristics. Minimally, the caller
2204                          * is doing the work and needs the pages. More
2205                          * importantly, if the block was always converted to
2206                          * MIGRATE_UNMOVABLE or another type then the number
2207                          * of pageblocks that cannot be completely freed
2208                          * may increase.
2209                          */
2210                         set_pageblock_migratetype(page, ac->migratetype);
2211                         ret = move_freepages_block(zone, page, ac->migratetype,
2212                                                                         NULL);
2213                         if (ret) {
2214                                 spin_unlock_irqrestore(&zone->lock, flags);
2215                                 return ret;
2216                         }
2217                 }
2218                 spin_unlock_irqrestore(&zone->lock, flags);
2219         }
2220
2221         return false;
2222 }
2223
2224 /*
2225  * Try finding a free buddy page on the fallback list and put it on the free
2226  * list of requested migratetype, possibly along with other pages from the same
2227  * block, depending on fragmentation avoidance heuristics. Returns true if
2228  * fallback was found so that __rmqueue_smallest() can grab it.
2229  *
2230  * The use of signed ints for order and current_order is a deliberate
2231  * deviation from the rest of this file, to make the for loop
2232  * condition simpler.
2233  */
2234 static inline bool
2235 __rmqueue_fallback(struct zone *zone, int order, int start_migratetype)
2236 {
2237         struct free_area *area;
2238         int current_order;
2239         struct page *page;
2240         int fallback_mt;
2241         bool can_steal;
2242
2243         /*
2244          * Find the largest available free page in the other list. This roughly
2245          * approximates finding the pageblock with the most free pages, which
2246          * would be too costly to do exactly.
2247          */
2248         for (current_order = MAX_ORDER - 1; current_order >= order;
2249                                 --current_order) {
2250                 area = &(zone->free_area[current_order]);
2251                 fallback_mt = find_suitable_fallback(area, current_order,
2252                                 start_migratetype, false, &can_steal);
2253                 if (fallback_mt == -1)
2254                         continue;
2255
2256                 /*
2257                  * We cannot steal all free pages from the pageblock and the
2258                  * requested migratetype is movable. In that case it's better to
2259                  * steal and split the smallest available page instead of the
2260                  * largest available page, because even if the next movable
2261                  * allocation falls back into a different pageblock than this
2262                  * one, it won't cause permanent fragmentation.
2263                  */
2264                 if (!can_steal && start_migratetype == MIGRATE_MOVABLE
2265                                         && current_order > order)
2266                         goto find_smallest;
2267
2268                 goto do_steal;
2269         }
2270
2271         return false;
2272
2273 find_smallest:
2274         for (current_order = order; current_order < MAX_ORDER;
2275                                                         current_order++) {
2276                 area = &(zone->free_area[current_order]);
2277                 fallback_mt = find_suitable_fallback(area, current_order,
2278                                 start_migratetype, false, &can_steal);
2279                 if (fallback_mt != -1)
2280                         break;
2281         }
2282
2283         /*
2284          * This should not happen - we already found a suitable fallback
2285          * when looking for the largest page.
2286          */
2287         VM_BUG_ON(current_order == MAX_ORDER);
2288
2289 do_steal:
2290         page = list_first_entry(&area->free_list[fallback_mt],
2291                                                         struct page, lru);
2292
2293         steal_suitable_fallback(zone, page, start_migratetype, can_steal);
2294
2295         trace_mm_page_alloc_extfrag(page, order, current_order,
2296                 start_migratetype, fallback_mt);
2297
2298         return true;
2299
2300 }
2301
2302 /*
2303  * Do the hard work of removing an element from the buddy allocator.
2304  * Call me with the zone->lock already held.
2305  */
2306 static struct page *__rmqueue(struct zone *zone, unsigned int order,
2307                                 int migratetype)
2308 {
2309         struct page *page;
2310
2311 retry:
2312         page = __rmqueue_smallest(zone, order, migratetype);
2313         if (unlikely(!page)) {
2314                 if (migratetype == MIGRATE_MOVABLE)
2315                         page = __rmqueue_cma_fallback(zone, order);
2316
2317                 if (!page && __rmqueue_fallback(zone, order, migratetype))
2318                         goto retry;
2319         }
2320
2321         trace_mm_page_alloc_zone_locked(page, order, migratetype);
2322         return page;
2323 }
2324
2325 /*
2326  * Obtain a specified number of elements from the buddy allocator, all under
2327  * a single hold of the lock, for efficiency.  Add them to the supplied list.
2328  * Returns the number of new pages which were placed at *list.
2329  */
2330 static int rmqueue_bulk(struct zone *zone, unsigned int order,
2331                         unsigned long count, struct list_head *list,
2332                         int migratetype, bool cold)
2333 {
2334         int i, alloced = 0;
2335
2336         spin_lock(&zone->lock);
2337         for (i = 0; i < count; ++i) {
2338                 struct page *page = __rmqueue(zone, order, migratetype);
2339                 if (unlikely(page == NULL))
2340                         break;
2341
2342                 if (unlikely(check_pcp_refill(page)))
2343                         continue;
2344
2345                 /*
2346                  * Split buddy pages returned by expand() are received here
2347                  * in physical page order. The page is added to the callers and
2348                  * list and the list head then moves forward. From the callers
2349                  * perspective, the linked list is ordered by page number in
2350                  * some conditions. This is useful for IO devices that can
2351                  * merge IO requests if the physical pages are ordered
2352                  * properly.
2353                  */
2354                 if (likely(!cold))
2355                         list_add(&page->lru, list);
2356                 else
2357                         list_add_tail(&page->lru, list);
2358                 list = &page->lru;
2359                 alloced++;
2360                 if (is_migrate_cma(get_pcppage_migratetype(page)))
2361                         __mod_zone_page_state(zone, NR_FREE_CMA_PAGES,
2362                                               -(1 << order));
2363         }
2364
2365         /*
2366          * i pages were removed from the buddy list even if some leak due
2367          * to check_pcp_refill failing so adjust NR_FREE_PAGES based
2368          * on i. Do not confuse with 'alloced' which is the number of
2369          * pages added to the pcp list.
2370          */
2371         __mod_zone_page_state(zone, NR_FREE_PAGES, -(i << order));
2372         spin_unlock(&zone->lock);
2373         return alloced;
2374 }
2375
2376 #ifdef CONFIG_NUMA
2377 /*
2378  * Called from the vmstat counter updater to drain pagesets of this
2379  * currently executing processor on remote nodes after they have
2380  * expired.
2381  *
2382  * Note that this function must be called with the thread pinned to
2383  * a single processor.
2384  */
2385 void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp)
2386 {
2387         unsigned long flags;
2388         int to_drain, batch;
2389
2390         local_irq_save(flags);
2391         batch = READ_ONCE(pcp->batch);
2392         to_drain = min(pcp->count, batch);
2393         if (to_drain > 0) {
2394                 free_pcppages_bulk(zone, to_drain, pcp);
2395                 pcp->count -= to_drain;
2396         }
2397         local_irq_restore(flags);
2398 }
2399 #endif
2400
2401 /*
2402  * Drain pcplists of the indicated processor and zone.
2403  *
2404  * The processor must either be the current processor and the
2405  * thread pinned to the current processor or a processor that
2406  * is not online.
2407  */
2408 static void drain_pages_zone(unsigned int cpu, struct zone *zone)
2409 {
2410         unsigned long flags;
2411         struct per_cpu_pageset *pset;
2412         struct per_cpu_pages *pcp;
2413
2414         local_irq_save(flags);
2415         pset = per_cpu_ptr(zone->pageset, cpu);
2416
2417         pcp = &pset->pcp;
2418         if (pcp->count) {
2419                 free_pcppages_bulk(zone, pcp->count, pcp);
2420                 pcp->count = 0;
2421         }
2422         local_irq_restore(flags);
2423 }
2424
2425 /*
2426  * Drain pcplists of all zones on the indicated processor.
2427  *
2428  * The processor must either be the current processor and the
2429  * thread pinned to the current processor or a processor that
2430  * is not online.
2431  */
2432 static void drain_pages(unsigned int cpu)
2433 {
2434         struct zone *zone;
2435
2436         for_each_populated_zone(zone) {
2437                 drain_pages_zone(cpu, zone);
2438         }
2439 }
2440
2441 /*
2442  * Spill all of this CPU's per-cpu pages back into the buddy allocator.
2443  *
2444  * The CPU has to be pinned. When zone parameter is non-NULL, spill just
2445  * the single zone's pages.
2446  */
2447 void drain_local_pages(struct zone *zone)
2448 {
2449         int cpu = smp_processor_id();
2450
2451         if (zone)
2452                 drain_pages_zone(cpu, zone);
2453         else
2454                 drain_pages(cpu);
2455 }
2456
2457 static void drain_local_pages_wq(struct work_struct *work)
2458 {
2459         /*
2460          * drain_all_pages doesn't use proper cpu hotplug protection so
2461          * we can race with cpu offline when the WQ can move this from
2462          * a cpu pinned worker to an unbound one. We can operate on a different
2463          * cpu which is allright but we also have to make sure to not move to
2464          * a different one.
2465          */
2466         preempt_disable();
2467         drain_local_pages(NULL);
2468         preempt_enable();
2469 }
2470
2471 /*
2472  * Spill all the per-cpu pages from all CPUs back into the buddy allocator.
2473  *
2474  * When zone parameter is non-NULL, spill just the single zone's pages.
2475  *
2476  * Note that this can be extremely slow as the draining happens in a workqueue.
2477  */
2478 void drain_all_pages(struct zone *zone)
2479 {
2480         int cpu;
2481
2482         /*
2483          * Allocate in the BSS so we wont require allocation in
2484          * direct reclaim path for CONFIG_CPUMASK_OFFSTACK=y
2485          */
2486         static cpumask_t cpus_with_pcps;
2487
2488         /*
2489          * Make sure nobody triggers this path before mm_percpu_wq is fully
2490          * initialized.
2491          */
2492         if (WARN_ON_ONCE(!mm_percpu_wq))
2493                 return;
2494
2495         /*
2496          * Do not drain if one is already in progress unless it's specific to
2497          * a zone. Such callers are primarily CMA and memory hotplug and need
2498          * the drain to be complete when the call returns.
2499          */
2500         if (unlikely(!mutex_trylock(&pcpu_drain_mutex))) {
2501                 if (!zone)
2502                         return;
2503                 mutex_lock(&pcpu_drain_mutex);
2504         }
2505
2506         /*
2507          * We don't care about racing with CPU hotplug event
2508          * as offline notification will cause the notified
2509          * cpu to drain that CPU pcps and on_each_cpu_mask
2510          * disables preemption as part of its processing
2511          */
2512         for_each_online_cpu(cpu) {
2513                 struct per_cpu_pageset *pcp;
2514                 struct zone *z;
2515                 bool has_pcps = false;
2516
2517                 if (zone) {
2518                         pcp = per_cpu_ptr(zone->pageset, cpu);
2519                         if (pcp->pcp.count)
2520                                 has_pcps = true;
2521                 } else {
2522                         for_each_populated_zone(z) {
2523                                 pcp = per_cpu_ptr(z->pageset, cpu);
2524                                 if (pcp->pcp.count) {
2525                                         has_pcps = true;
2526                                         break;
2527                                 }
2528                         }
2529                 }
2530
2531                 if (has_pcps)
2532                         cpumask_set_cpu(cpu, &cpus_with_pcps);
2533                 else
2534                         cpumask_clear_cpu(cpu, &cpus_with_pcps);
2535         }
2536
2537         for_each_cpu(cpu, &cpus_with_pcps) {
2538                 struct work_struct *work = per_cpu_ptr(&pcpu_drain, cpu);
2539                 INIT_WORK(work, drain_local_pages_wq);
2540                 queue_work_on(cpu, mm_percpu_wq, work);
2541         }
2542         for_each_cpu(cpu, &cpus_with_pcps)
2543                 flush_work(per_cpu_ptr(&pcpu_drain, cpu));
2544
2545         mutex_unlock(&pcpu_drain_mutex);
2546 }
2547
2548 #ifdef CONFIG_HIBERNATION
2549
2550 /*
2551  * Touch the watchdog for every WD_PAGE_COUNT pages.
2552  */
2553 #define WD_PAGE_COUNT   (128*1024)
2554
2555 void mark_free_pages(struct zone *zone)
2556 {
2557         unsigned long pfn, max_zone_pfn, page_count = WD_PAGE_COUNT;
2558         unsigned long flags;
2559         unsigned int order, t;
2560         struct page *page;
2561
2562         if (zone_is_empty(zone))
2563                 return;
2564
2565         spin_lock_irqsave(&zone->lock, flags);
2566
2567         max_zone_pfn = zone_end_pfn(zone);
2568         for (pfn = zone->zone_start_pfn; pfn < max_zone_pfn; pfn++)
2569                 if (pfn_valid(pfn)) {
2570                         page = pfn_to_page(pfn);
2571
2572                         if (!--page_count) {
2573                                 touch_nmi_watchdog();
2574                                 page_count = WD_PAGE_COUNT;
2575                         }
2576
2577                         if (page_zone(page) != zone)
2578                                 continue;
2579
2580                         if (!swsusp_page_is_forbidden(page))
2581                                 swsusp_unset_page_free(page);
2582                 }
2583
2584         for_each_migratetype_order(order, t) {
2585                 list_for_each_entry(page,
2586                                 &zone->free_area[order].free_list[t], lru) {
2587                         unsigned long i;
2588
2589                         pfn = page_to_pfn(page);
2590                         for (i = 0; i < (1UL << order); i++) {
2591                                 if (!--page_count) {
2592                                         touch_nmi_watchdog();
2593                                         page_count = WD_PAGE_COUNT;
2594                                 }
2595                                 swsusp_set_page_free(pfn_to_page(pfn + i));
2596                         }
2597                 }
2598         }
2599         spin_unlock_irqrestore(&zone->lock, flags);
2600 }
2601 #endif /* CONFIG_PM */
2602
2603 /*
2604  * Free a 0-order page
2605  * cold == true ? free a cold page : free a hot page
2606  */
2607 void free_hot_cold_page(struct page *page, bool cold)
2608 {
2609         struct zone *zone = page_zone(page);
2610         struct per_cpu_pages *pcp;
2611         unsigned long flags;
2612         unsigned long pfn = page_to_pfn(page);
2613         int migratetype;
2614
2615         if (!free_pcp_prepare(page))
2616                 return;
2617
2618         migratetype = get_pfnblock_migratetype(page, pfn);
2619         set_pcppage_migratetype(page, migratetype);
2620         local_irq_save(flags);
2621         __count_vm_event(PGFREE);
2622
2623         /*
2624          * We only track unmovable, reclaimable and movable on pcp lists.
2625          * Free ISOLATE pages back to the allocator because they are being
2626          * offlined but treat HIGHATOMIC as movable pages so we can get those
2627          * areas back if necessary. Otherwise, we may have to free
2628          * excessively into the page allocator
2629          */
2630         if (migratetype >= MIGRATE_PCPTYPES) {
2631                 if (unlikely(is_migrate_isolate(migratetype))) {
2632                         free_one_page(zone, page, pfn, 0, migratetype);
2633                         goto out;
2634                 }
2635                 migratetype = MIGRATE_MOVABLE;
2636         }
2637
2638         pcp = &this_cpu_ptr(zone->pageset)->pcp;
2639         if (!cold)
2640                 list_add(&page->lru, &pcp->lists[migratetype]);
2641         else
2642                 list_add_tail(&page->lru, &pcp->lists[migratetype]);
2643         pcp->count++;
2644         if (pcp->count >= pcp->high) {
2645                 unsigned long batch = READ_ONCE(pcp->batch);
2646                 free_pcppages_bulk(zone, batch, pcp);
2647                 pcp->count -= batch;
2648         }
2649
2650 out:
2651         local_irq_restore(flags);
2652 }
2653
2654 /*
2655  * Free a list of 0-order pages
2656  */
2657 void free_hot_cold_page_list(struct list_head *list, bool cold)
2658 {
2659         struct page *page, *next;
2660
2661         list_for_each_entry_safe(page, next, list, lru) {
2662                 trace_mm_page_free_batched(page, cold);
2663                 free_hot_cold_page(page, cold);
2664         }
2665 }
2666
2667 /*
2668  * split_page takes a non-compound higher-order page, and splits it into
2669  * n (1<<order) sub-pages: page[0..n]
2670  * Each sub-page must be freed individually.
2671  *
2672  * Note: this is probably too low level an operation for use in drivers.
2673  * Please consult with lkml before using this in your driver.
2674  */
2675 void split_page(struct page *page, unsigned int order)
2676 {
2677         int i;
2678
2679         VM_BUG_ON_PAGE(PageCompound(page), page);
2680         VM_BUG_ON_PAGE(!page_count(page), page);
2681
2682         for (i = 1; i < (1 << order); i++)
2683                 set_page_refcounted(page + i);
2684         split_page_owner(page, order);
2685 }
2686 EXPORT_SYMBOL_GPL(split_page);
2687
2688 int __isolate_free_page(struct page *page, unsigned int order)
2689 {
2690         unsigned long watermark;
2691         struct zone *zone;
2692         int mt;
2693
2694         BUG_ON(!PageBuddy(page));
2695
2696         zone = page_zone(page);
2697         mt = get_pageblock_migratetype(page);
2698
2699         if (!is_migrate_isolate(mt)) {
2700                 /*
2701                  * Obey watermarks as if the page was being allocated. We can
2702                  * emulate a high-order watermark check with a raised order-0
2703                  * watermark, because we already know our high-order page
2704                  * exists.
2705                  */
2706                 watermark = min_wmark_pages(zone) + (1UL << order);
2707                 if (!zone_watermark_ok(zone, 0, watermark, 0, ALLOC_CMA))
2708                         return 0;
2709
2710                 __mod_zone_freepage_state(zone, -(1UL << order), mt);
2711         }
2712
2713         /* Remove page from free list */
2714         list_del(&page->lru);
2715         zone->free_area[order].nr_free--;
2716         rmv_page_order(page);
2717
2718         /*
2719          * Set the pageblock if the isolated page is at least half of a
2720          * pageblock
2721          */
2722         if (order >= pageblock_order - 1) {
2723                 struct page *endpage = page + (1 << order) - 1;
2724                 for (; page < endpage; page += pageblock_nr_pages) {
2725                         int mt = get_pageblock_migratetype(page);
2726                         if (!is_migrate_isolate(mt) && !is_migrate_cma(mt)
2727                             && !is_migrate_highatomic(mt))
2728                                 set_pageblock_migratetype(page,
2729                                                           MIGRATE_MOVABLE);
2730                 }
2731         }
2732
2733
2734         return 1UL << order;
2735 }
2736
2737 /*
2738  * Update NUMA hit/miss statistics
2739  *
2740  * Must be called with interrupts disabled.
2741  */
2742 static inline void zone_statistics(struct zone *preferred_zone, struct zone *z)
2743 {
2744 #ifdef CONFIG_NUMA
2745         enum numa_stat_item local_stat = NUMA_LOCAL;
2746
2747         if (z->node != numa_node_id())
2748                 local_stat = NUMA_OTHER;
2749
2750         if (z->node == preferred_zone->node)
2751                 __inc_numa_state(z, NUMA_HIT);
2752         else {
2753                 __inc_numa_state(z, NUMA_MISS);
2754                 __inc_numa_state(preferred_zone, NUMA_FOREIGN);
2755         }
2756         __inc_numa_state(z, local_stat);
2757 #endif
2758 }
2759
2760 /* Remove page from the per-cpu list, caller must protect the list */
2761 static struct page *__rmqueue_pcplist(struct zone *zone, int migratetype,
2762                         bool cold, struct per_cpu_pages *pcp,
2763                         struct list_head *list)
2764 {
2765         struct page *page;
2766
2767         do {
2768                 if (list_empty(list)) {
2769                         pcp->count += rmqueue_bulk(zone, 0,
2770                                         pcp->batch, list,
2771                                         migratetype, cold);
2772                         if (unlikely(list_empty(list)))
2773                                 return NULL;
2774                 }
2775
2776                 if (cold)
2777                         page = list_last_entry(list, struct page, lru);
2778                 else
2779                         page = list_first_entry(list, struct page, lru);
2780
2781                 list_del(&page->lru);
2782                 pcp->count--;
2783         } while (check_new_pcp(page));
2784
2785         return page;
2786 }
2787
2788 /* Lock and remove page from the per-cpu list */
2789 static struct page *rmqueue_pcplist(struct zone *preferred_zone,
2790                         struct zone *zone, unsigned int order,
2791                         gfp_t gfp_flags, int migratetype)
2792 {
2793         struct per_cpu_pages *pcp;
2794         struct list_head *list;
2795         bool cold = ((gfp_flags & __GFP_COLD) != 0);
2796         struct page *page;
2797         unsigned long flags;
2798
2799         local_irq_save(flags);
2800         pcp = &this_cpu_ptr(zone->pageset)->pcp;
2801         list = &pcp->lists[migratetype];
2802         page = __rmqueue_pcplist(zone,  migratetype, cold, pcp, list);
2803         if (page) {
2804                 __count_zid_vm_events(PGALLOC, page_zonenum(page), 1 << order);
2805                 zone_statistics(preferred_zone, zone);
2806         }
2807         local_irq_restore(flags);
2808         return page;
2809 }
2810
2811 /*
2812  * Allocate a page from the given zone. Use pcplists for order-0 allocations.
2813  */
2814 static inline
2815 struct page *rmqueue(struct zone *preferred_zone,
2816                         struct zone *zone, unsigned int order,
2817                         gfp_t gfp_flags, unsigned int alloc_flags,
2818                         int migratetype)
2819 {
2820         unsigned long flags;
2821         struct page *page;
2822
2823         if (likely(order == 0)) {
2824                 page = rmqueue_pcplist(preferred_zone, zone, order,
2825                                 gfp_flags, migratetype);
2826                 goto out;
2827         }
2828
2829         /*
2830          * We most definitely don't want callers attempting to
2831          * allocate greater than order-1 page units with __GFP_NOFAIL.
2832          */
2833         WARN_ON_ONCE((gfp_flags & __GFP_NOFAIL) && (order > 1));
2834         spin_lock_irqsave(&zone->lock, flags);
2835
2836         do {
2837                 page = NULL;
2838                 if (alloc_flags & ALLOC_HARDER) {
2839                         page = __rmqueue_smallest(zone, order, MIGRATE_HIGHATOMIC);
2840                         if (page)
2841                                 trace_mm_page_alloc_zone_locked(page, order, migratetype);
2842                 }
2843                 if (!page)
2844                         page = __rmqueue(zone, order, migratetype);
2845         } while (page && check_new_pages(page, order));
2846         spin_unlock(&zone->lock);
2847         if (!page)
2848                 goto failed;
2849         __mod_zone_freepage_state(zone, -(1 << order),
2850                                   get_pcppage_migratetype(page));
2851
2852         __count_zid_vm_events(PGALLOC, page_zonenum(page), 1 << order);
2853         zone_statistics(preferred_zone, zone);
2854         local_irq_restore(flags);
2855
2856 out:
2857         VM_BUG_ON_PAGE(page && bad_range(zone, page), page);
2858         return page;
2859
2860 failed:
2861         local_irq_restore(flags);
2862         return NULL;
2863 }
2864
2865 #ifdef CONFIG_FAIL_PAGE_ALLOC
2866
2867 static struct {
2868         struct fault_attr attr;
2869
2870         bool ignore_gfp_highmem;
2871         bool ignore_gfp_reclaim;
2872         u32 min_order;
2873 } fail_page_alloc = {
2874         .attr = FAULT_ATTR_INITIALIZER,
2875         .ignore_gfp_reclaim = true,
2876         .ignore_gfp_highmem = true,
2877         .min_order = 1,
2878 };
2879
2880 static int __init setup_fail_page_alloc(char *str)
2881 {
2882         return setup_fault_attr(&fail_page_alloc.attr, str);
2883 }
2884 __setup("fail_page_alloc=", setup_fail_page_alloc);
2885
2886 static bool should_fail_alloc_page(gfp_t gfp_mask, unsigned int order)
2887 {
2888         if (order < fail_page_alloc.min_order)
2889                 return false;
2890         if (gfp_mask & __GFP_NOFAIL)
2891                 return false;
2892         if (fail_page_alloc.ignore_gfp_highmem && (gfp_mask & __GFP_HIGHMEM))
2893                 return false;
2894         if (fail_page_alloc.ignore_gfp_reclaim &&
2895                         (gfp_mask & __GFP_DIRECT_RECLAIM))
2896                 return false;
2897
2898         return should_fail(&fail_page_alloc.attr, 1 << order);
2899 }
2900
2901 #ifdef CONFIG_FAULT_INJECTION_DEBUG_FS
2902
2903 static int __init fail_page_alloc_debugfs(void)
2904 {
2905         umode_t mode = S_IFREG | S_IRUSR | S_IWUSR;
2906         struct dentry *dir;
2907
2908         dir = fault_create_debugfs_attr("fail_page_alloc", NULL,
2909                                         &fail_page_alloc.attr);
2910         if (IS_ERR(dir))
2911                 return PTR_ERR(dir);
2912
2913         if (!debugfs_create_bool("ignore-gfp-wait", mode, dir,
2914                                 &fail_page_alloc.ignore_gfp_reclaim))
2915                 goto fail;
2916         if (!debugfs_create_bool("ignore-gfp-highmem", mode, dir,
2917                                 &fail_page_alloc.ignore_gfp_highmem))
2918                 goto fail;
2919         if (!debugfs_create_u32("min-order", mode, dir,
2920                                 &fail_page_alloc.min_order))
2921                 goto fail;
2922
2923         return 0;
2924 fail:
2925         debugfs_remove_recursive(dir);
2926
2927         return -ENOMEM;
2928 }
2929
2930 late_initcall(fail_page_alloc_debugfs);
2931
2932 #endif /* CONFIG_FAULT_INJECTION_DEBUG_FS */
2933
2934 #else /* CONFIG_FAIL_PAGE_ALLOC */
2935
2936 static inline bool should_fail_alloc_page(gfp_t gfp_mask, unsigned int order)
2937 {
2938         return false;
2939 }
2940
2941 #endif /* CONFIG_FAIL_PAGE_ALLOC */
2942
2943 /*
2944  * Return true if free base pages are above 'mark'. For high-order checks it
2945  * will return true of the order-0 watermark is reached and there is at least
2946  * one free page of a suitable size. Checking now avoids taking the zone lock
2947  * to check in the allocation paths if no pages are free.
2948  */
2949 bool __zone_watermark_ok(struct zone *z, unsigned int order, unsigned long mark,
2950                          int classzone_idx, unsigned int alloc_flags,
2951                          long free_pages)
2952 {
2953         long min = mark;
2954         int o;
2955         const bool alloc_harder = (alloc_flags & (ALLOC_HARDER|ALLOC_OOM));
2956
2957         /* free_pages may go negative - that's OK */
2958         free_pages -= (1 << order) - 1;
2959
2960         if (alloc_flags & ALLOC_HIGH)
2961                 min -= min / 2;
2962
2963         /*
2964          * If the caller does not have rights to ALLOC_HARDER then subtract
2965          * the high-atomic reserves. This will over-estimate the size of the
2966          * atomic reserve but it avoids a search.
2967          */
2968         if (likely(!alloc_harder)) {
2969                 free_pages -= z->nr_reserved_highatomic;
2970         } else {
2971                 /*
2972                  * OOM victims can try even harder than normal ALLOC_HARDER
2973                  * users on the grounds that it's definitely going to be in
2974                  * the exit path shortly and free memory. Any allocation it
2975                  * makes during the free path will be small and short-lived.
2976                  */
2977                 if (alloc_flags & ALLOC_OOM)
2978                         min -= min / 2;
2979                 else
2980                         min -= min / 4;
2981         }
2982
2983
2984 #ifdef CONFIG_CMA
2985         /* If allocation can't use CMA areas don't use free CMA pages */
2986         if (!(alloc_flags & ALLOC_CMA))
2987                 free_pages -= zone_page_state(z, NR_FREE_CMA_PAGES);
2988 #endif
2989
2990         /*
2991          * Check watermarks for an order-0 allocation request. If these
2992          * are not met, then a high-order request also cannot go ahead
2993          * even if a suitable page happened to be free.
2994          */
2995         if (free_pages <= min + z->lowmem_reserve[classzone_idx])
2996                 return false;
2997
2998         /* If this is an order-0 request then the watermark is fine */
2999         if (!order)
3000                 return true;
3001
3002         /* For a high-order request, check at least one suitable page is free */
3003         for (o = order; o < MAX_ORDER; o++) {
3004                 struct free_area *area = &z->free_area[o];
3005                 int mt;
3006
3007                 if (!area->nr_free)
3008                         continue;
3009
3010                 for (mt = 0; mt < MIGRATE_PCPTYPES; mt++) {
3011                         if (!list_empty(&area->free_list[mt]))
3012                                 return true;
3013                 }
3014
3015 #ifdef CONFIG_CMA
3016                 if ((alloc_flags & ALLOC_CMA) &&
3017                     !list_empty(&area->free_list[MIGRATE_CMA])) {
3018                         return true;
3019                 }
3020 #endif
3021                 if (alloc_harder &&
3022                         !list_empty(&area->free_list[MIGRATE_HIGHATOMIC]))
3023                         return true;
3024         }
3025         return false;
3026 }
3027
3028 bool zone_watermark_ok(struct zone *z, unsigned int order, unsigned long mark,
3029                       int classzone_idx, unsigned int alloc_flags)
3030 {
3031         return __zone_watermark_ok(z, order, mark, classzone_idx, alloc_flags,
3032                                         zone_page_state(z, NR_FREE_PAGES));
3033 }
3034
3035 static inline bool zone_watermark_fast(struct zone *z, unsigned int order,
3036                 unsigned long mark, int classzone_idx, unsigned int alloc_flags)
3037 {
3038         long free_pages = zone_page_state(z, NR_FREE_PAGES);
3039         long cma_pages = 0;
3040
3041 #ifdef CONFIG_CMA
3042         /* If allocation can't use CMA areas don't use free CMA pages */
3043         if (!(alloc_flags & ALLOC_CMA))
3044                 cma_pages = zone_page_state(z, NR_FREE_CMA_PAGES);
3045 #endif
3046
3047         /*
3048          * Fast check for order-0 only. If this fails then the reserves
3049          * need to be calculated. There is a corner case where the check
3050          * passes but only the high-order atomic reserve are free. If
3051          * the caller is !atomic then it'll uselessly search the free
3052          * list. That corner case is then slower but it is harmless.
3053          */
3054         if (!order && (free_pages - cma_pages) > mark + z->lowmem_reserve[classzone_idx])
3055                 return true;
3056
3057         return __zone_watermark_ok(z, order, mark, classzone_idx, alloc_flags,
3058                                         free_pages);
3059 }
3060
3061 bool zone_watermark_ok_safe(struct zone *z, unsigned int order,
3062                         unsigned long mark, int classzone_idx)
3063 {
3064         long free_pages = zone_page_state(z, NR_FREE_PAGES);
3065
3066         if (z->percpu_drift_mark && free_pages < z->percpu_drift_mark)
3067                 free_pages = zone_page_state_snapshot(z, NR_FREE_PAGES);
3068
3069         return __zone_watermark_ok(z, order, mark, classzone_idx, 0,
3070                                                                 free_pages);
3071 }
3072
3073 #ifdef CONFIG_NUMA
3074 static bool zone_allows_reclaim(struct zone *local_zone, struct zone *zone)
3075 {
3076         return node_distance(zone_to_nid(local_zone), zone_to_nid(zone)) <=
3077                                 RECLAIM_DISTANCE;
3078 }
3079 #else   /* CONFIG_NUMA */
3080 static bool zone_allows_reclaim(struct zone *local_zone, struct zone *zone)
3081 {
3082         return true;
3083 }
3084 #endif  /* CONFIG_NUMA */
3085
3086 /*
3087  * get_page_from_freelist goes through the zonelist trying to allocate
3088  * a page.
3089  */
3090 static struct page *
3091 get_page_from_freelist(gfp_t gfp_mask, unsigned int order, int alloc_flags,
3092                                                 const struct alloc_context *ac)
3093 {
3094         struct zoneref *z = ac->preferred_zoneref;
3095         struct zone *zone;
3096         struct pglist_data *last_pgdat_dirty_limit = NULL;
3097
3098         /*
3099          * Scan zonelist, looking for a zone with enough free.
3100          * See also __cpuset_node_allowed() comment in kernel/cpuset.c.
3101          */
3102         for_next_zone_zonelist_nodemask(zone, z, ac->zonelist, ac->high_zoneidx,
3103                                                                 ac->nodemask) {
3104                 struct page *page;
3105                 unsigned long mark;
3106
3107                 if (cpusets_enabled() &&
3108                         (alloc_flags & ALLOC_CPUSET) &&
3109                         !__cpuset_zone_allowed(zone, gfp_mask))
3110                                 continue;
3111                 /*
3112                  * When allocating a page cache page for writing, we
3113                  * want to get it from a node that is within its dirty
3114                  * limit, such that no single node holds more than its
3115                  * proportional share of globally allowed dirty pages.
3116                  * The dirty limits take into account the node's
3117                  * lowmem reserves and high watermark so that kswapd
3118                  * should be able to balance it without having to
3119                  * write pages from its LRU list.
3120                  *
3121                  * XXX: For now, allow allocations to potentially
3122                  * exceed the per-node dirty limit in the slowpath
3123                  * (spread_dirty_pages unset) before going into reclaim,
3124                  * which is important when on a NUMA setup the allowed
3125                  * nodes are together not big enough to reach the
3126                  * global limit.  The proper fix for these situations
3127                  * will require awareness of nodes in the
3128                  * dirty-throttling and the flusher threads.
3129                  */
3130                 if (ac->spread_dirty_pages) {
3131                         if (last_pgdat_dirty_limit == zone->zone_pgdat)
3132                                 continue;
3133
3134                         if (!node_dirty_ok(zone->zone_pgdat)) {
3135                                 last_pgdat_dirty_limit = zone->zone_pgdat;
3136                                 continue;
3137                         }
3138                 }
3139
3140                 mark = zone->watermark[alloc_flags & ALLOC_WMARK_MASK];
3141                 if (!zone_watermark_fast(zone, order, mark,
3142                                        ac_classzone_idx(ac), alloc_flags)) {
3143                         int ret;
3144
3145                         /* Checked here to keep the fast path fast */
3146                         BUILD_BUG_ON(ALLOC_NO_WATERMARKS < NR_WMARK);
3147                         if (alloc_flags & ALLOC_NO_WATERMARKS)
3148                                 goto try_this_zone;
3149
3150                         if (node_reclaim_mode == 0 ||
3151                             !zone_allows_reclaim(ac->preferred_zoneref->zone, zone))
3152                                 continue;
3153
3154                         ret = node_reclaim(zone->zone_pgdat, gfp_mask, order);
3155                         switch (ret) {
3156                         case NODE_RECLAIM_NOSCAN:
3157                                 /* did not scan */
3158                                 continue;
3159                         case NODE_RECLAIM_FULL:
3160                                 /* scanned but unreclaimable */
3161                                 continue;
3162                         default:
3163                                 /* did we reclaim enough */
3164                                 if (zone_watermark_ok(zone, order, mark,
3165                                                 ac_classzone_idx(ac), alloc_flags))
3166                                         goto try_this_zone;
3167
3168                                 continue;
3169                         }
3170                 }
3171
3172 try_this_zone:
3173                 page = rmqueue(ac->preferred_zoneref->zone, zone, order,
3174                                 gfp_mask, alloc_flags, ac->migratetype);
3175                 if (page) {
3176                         prep_new_page(page, order, gfp_mask, alloc_flags);
3177
3178                         /*
3179                          * If this is a high-order atomic allocation then check
3180                          * if the pageblock should be reserved for the future
3181                          */
3182                         if (unlikely(order && (alloc_flags & ALLOC_HARDER)))
3183                                 reserve_highatomic_pageblock(page, zone, order);
3184
3185                         return page;
3186                 }
3187         }
3188
3189         return NULL;
3190 }
3191
3192 /*
3193  * Large machines with many possible nodes should not always dump per-node
3194  * meminfo in irq context.
3195  */
3196 static inline bool should_suppress_show_mem(void)
3197 {
3198         bool ret = false;
3199
3200 #if NODES_SHIFT > 8
3201         ret = in_interrupt();
3202 #endif
3203         return ret;
3204 }
3205
3206 static void warn_alloc_show_mem(gfp_t gfp_mask, nodemask_t *nodemask)
3207 {
3208         unsigned int filter = SHOW_MEM_FILTER_NODES;
3209         static DEFINE_RATELIMIT_STATE(show_mem_rs, HZ, 1);
3210
3211         if (should_suppress_show_mem() || !__ratelimit(&show_mem_rs))
3212                 return;
3213
3214         /*
3215          * This documents exceptions given to allocations in certain
3216          * contexts that are allowed to allocate outside current's set
3217          * of allowed nodes.
3218          */
3219         if (!(gfp_mask & __GFP_NOMEMALLOC))
3220                 if (tsk_is_oom_victim(current) ||
3221                     (current->flags & (PF_MEMALLOC | PF_EXITING)))
3222                         filter &= ~SHOW_MEM_FILTER_NODES;
3223         if (in_interrupt() || !(gfp_mask & __GFP_DIRECT_RECLAIM))
3224                 filter &= ~SHOW_MEM_FILTER_NODES;
3225
3226         show_mem(filter, nodemask);
3227 }
3228
3229 void warn_alloc(gfp_t gfp_mask, nodemask_t *nodemask, const char *fmt, ...)
3230 {
3231         struct va_format vaf;
3232         va_list args;
3233         static DEFINE_RATELIMIT_STATE(nopage_rs, DEFAULT_RATELIMIT_INTERVAL,
3234                                       DEFAULT_RATELIMIT_BURST);
3235
3236         if ((gfp_mask & __GFP_NOWARN) || !__ratelimit(&nopage_rs))
3237                 return;
3238
3239         pr_warn("%s: ", current->comm);
3240
3241         va_start(args, fmt);
3242         vaf.fmt = fmt;
3243         vaf.va = &args;
3244         pr_cont("%pV", &vaf);
3245         va_end(args);
3246
3247         pr_cont(", mode:%#x(%pGg), nodemask=", gfp_mask, &gfp_mask);
3248         if (nodemask)
3249                 pr_cont("%*pbl\n", nodemask_pr_args(nodemask));
3250         else
3251                 pr_cont("(null)\n");
3252
3253         cpuset_print_current_mems_allowed();
3254
3255         dump_stack();
3256         warn_alloc_show_mem(gfp_mask, nodemask);
3257 }
3258
3259 static inline struct page *
3260 __alloc_pages_cpuset_fallback(gfp_t gfp_mask, unsigned int order,
3261                               unsigned int alloc_flags,
3262                               const struct alloc_context *ac)
3263 {
3264         struct page *page;
3265
3266         page = get_page_from_freelist(gfp_mask, order,
3267                         alloc_flags|ALLOC_CPUSET, ac);
3268         /*
3269          * fallback to ignore cpuset restriction if our nodes
3270          * are depleted
3271          */
3272         if (!page)
3273                 page = get_page_from_freelist(gfp_mask, order,
3274                                 alloc_flags, ac);
3275
3276         return page;
3277 }
3278
3279 static inline struct page *
3280 __alloc_pages_may_oom(gfp_t gfp_mask, unsigned int order,
3281         const struct alloc_context *ac, unsigned long *did_some_progress)
3282 {
3283         struct oom_control oc = {
3284                 .zonelist = ac->zonelist,
3285                 .nodemask = ac->nodemask,
3286                 .memcg = NULL,
3287                 .gfp_mask = gfp_mask,
3288                 .order = order,
3289         };
3290         struct page *page;
3291
3292         *did_some_progress = 0;
3293
3294         /*
3295          * Acquire the oom lock.  If that fails, somebody else is
3296          * making progress for us.
3297          */
3298         if (!mutex_trylock(&oom_lock)) {
3299                 *did_some_progress = 1;
3300                 schedule_timeout_uninterruptible(1);
3301                 return NULL;
3302         }
3303
3304         /*
3305          * Go through the zonelist yet one more time, keep very high watermark
3306          * here, this is only to catch a parallel oom killing, we must fail if
3307          * we're still under heavy pressure. But make sure that this reclaim
3308          * attempt shall not depend on __GFP_DIRECT_RECLAIM && !__GFP_NORETRY
3309          * allocation which will never fail due to oom_lock already held.
3310          */
3311         page = get_page_from_freelist((gfp_mask | __GFP_HARDWALL) &
3312                                       ~__GFP_DIRECT_RECLAIM, order,
3313                                       ALLOC_WMARK_HIGH|ALLOC_CPUSET, ac);
3314         if (page)
3315                 goto out;
3316
3317         /* Coredumps can quickly deplete all memory reserves */
3318         if (current->flags & PF_DUMPCORE)
3319                 goto out;
3320         /* The OOM killer will not help higher order allocs */
3321         if (order > PAGE_ALLOC_COSTLY_ORDER)
3322                 goto out;
3323         /*
3324          * We have already exhausted all our reclaim opportunities without any
3325          * success so it is time to admit defeat. We will skip the OOM killer
3326          * because it is very likely that the caller has a more reasonable
3327          * fallback than shooting a random task.
3328          */
3329         if (gfp_mask & __GFP_RETRY_MAYFAIL)
3330                 goto out;
3331         /* The OOM killer does not needlessly kill tasks for lowmem */
3332         if (ac->high_zoneidx < ZONE_NORMAL)
3333                 goto out;
3334         if (pm_suspended_storage())
3335                 goto out;
3336         /*
3337          * XXX: GFP_NOFS allocations should rather fail than rely on
3338          * other request to make a forward progress.
3339          * We are in an unfortunate situation where out_of_memory cannot
3340          * do much for this context but let's try it to at least get
3341          * access to memory reserved if the current task is killed (see
3342          * out_of_memory). Once filesystems are ready to handle allocation
3343          * failures more gracefully we should just bail out here.
3344          */
3345
3346         /* The OOM killer may not free memory on a specific node */
3347         if (gfp_mask & __GFP_THISNODE)
3348                 goto out;
3349
3350         /* Exhausted what can be done so it's blamo time */
3351         if (out_of_memory(&oc) || WARN_ON_ONCE(gfp_mask & __GFP_NOFAIL)) {
3352                 *did_some_progress = 1;
3353
3354                 /*
3355                  * Help non-failing allocations by giving them access to memory
3356                  * reserves
3357                  */
3358                 if (gfp_mask & __GFP_NOFAIL)
3359                         page = __alloc_pages_cpuset_fallback(gfp_mask, order,
3360                                         ALLOC_NO_WATERMARKS, ac);
3361         }
3362 out:
3363         mutex_unlock(&oom_lock);
3364         return page;
3365 }
3366
3367 /*
3368  * Maximum number of compaction retries wit a progress before OOM
3369  * killer is consider as the only way to move forward.
3370  */
3371 #define MAX_COMPACT_RETRIES 16
3372
3373 #ifdef CONFIG_COMPACTION
3374 /* Try memory compaction for high-order allocations before reclaim */
3375 static struct page *
3376 __alloc_pages_direct_compact(gfp_t gfp_mask, unsigned int order,
3377                 unsigned int alloc_flags, const struct alloc_context *ac,
3378                 enum compact_priority prio, enum compact_result *compact_result)
3379 {
3380         struct page *page;
3381         unsigned int noreclaim_flag;
3382
3383         if (!order)
3384                 return NULL;
3385
3386         noreclaim_flag = memalloc_noreclaim_save();
3387         *compact_result = try_to_compact_pages(gfp_mask, order, alloc_flags, ac,
3388                                                                         prio);
3389         memalloc_noreclaim_restore(noreclaim_flag);
3390
3391         if (*compact_result <= COMPACT_INACTIVE)
3392                 return NULL;
3393
3394         /*
3395          * At least in one zone compaction wasn't deferred or skipped, so let's
3396          * count a compaction stall
3397          */
3398         count_vm_event(COMPACTSTALL);
3399
3400         page = get_page_from_freelist(gfp_mask, order, alloc_flags, ac);
3401
3402         if (page) {
3403                 struct zone *zone = page_zone(page);
3404
3405                 zone->compact_blockskip_flush = false;
3406                 compaction_defer_reset(zone, order, true);
3407                 count_vm_event(COMPACTSUCCESS);
3408                 return page;
3409         }
3410
3411         /*
3412          * It's bad if compaction run occurs and fails. The most likely reason
3413          * is that pages exist, but not enough to satisfy watermarks.
3414          */
3415         count_vm_event(COMPACTFAIL);
3416
3417         cond_resched();
3418
3419         return NULL;
3420 }
3421
3422 static inline bool
3423 should_compact_retry(struct alloc_context *ac, int order, int alloc_flags,
3424                      enum compact_result compact_result,
3425                      enum compact_priority *compact_priority,
3426                      int *compaction_retries)
3427 {
3428         int max_retries = MAX_COMPACT_RETRIES;
3429         int min_priority;
3430         bool ret = false;
3431         int retries = *compaction_retries;
3432         enum compact_priority priority = *compact_priority;
3433
3434         if (!order)
3435                 return false;
3436
3437         if (compaction_made_progress(compact_result))
3438                 (*compaction_retries)++;
3439
3440         /*
3441          * compaction considers all the zone as desperately out of memory
3442          * so it doesn't really make much sense to retry except when the
3443          * failure could be caused by insufficient priority
3444          */
3445         if (compaction_failed(compact_result))
3446                 goto check_priority;
3447
3448         /*
3449          * make sure the compaction wasn't deferred or didn't bail out early
3450          * due to locks contention before we declare that we should give up.
3451          * But do not retry if the given zonelist is not suitable for
3452          * compaction.
3453          */
3454         if (compaction_withdrawn(compact_result)) {
3455                 ret = compaction_zonelist_suitable(ac, order, alloc_flags);
3456                 goto out;
3457         }
3458
3459         /*
3460          * !costly requests are much more important than __GFP_RETRY_MAYFAIL
3461          * costly ones because they are de facto nofail and invoke OOM
3462          * killer to move on while costly can fail and users are ready
3463          * to cope with that. 1/4 retries is rather arbitrary but we
3464          * would need much more detailed feedback from compaction to
3465          * make a better decision.
3466          */
3467         if (order > PAGE_ALLOC_COSTLY_ORDER)
3468                 max_retries /= 4;
3469         if (*compaction_retries <= max_retries) {
3470                 ret = true;
3471                 goto out;
3472         }
3473
3474         /*
3475          * Make sure there are attempts at the highest priority if we exhausted
3476          * all retries or failed at the lower priorities.
3477          */
3478 check_priority:
3479         min_priority = (order > PAGE_ALLOC_COSTLY_ORDER) ?
3480                         MIN_COMPACT_COSTLY_PRIORITY : MIN_COMPACT_PRIORITY;
3481
3482         if (*compact_priority > min_priority) {
3483                 (*compact_priority)--;
3484                 *compaction_retries = 0;
3485                 ret = true;
3486         }
3487 out:
3488         trace_compact_retry(order, priority, compact_result, retries, max_retries, ret);
3489         return ret;
3490 }
3491 #else
3492 static inline struct page *
3493 __alloc_pages_direct_compact(gfp_t gfp_mask, unsigned int order,
3494                 unsigned int alloc_flags, const struct alloc_context *ac,
3495                 enum compact_priority prio, enum compact_result *compact_result)
3496 {
3497         *compact_result = COMPACT_SKIPPED;
3498         return NULL;
3499 }
3500
3501 static inline bool
3502 should_compact_retry(struct alloc_context *ac, unsigned int order, int alloc_flags,
3503                      enum compact_result compact_result,
3504                      enum compact_priority *compact_priority,
3505                      int *compaction_retries)
3506 {
3507         struct zone *zone;
3508         struct zoneref *z;
3509
3510         if (!order || order > PAGE_ALLOC_COSTLY_ORDER)
3511                 return false;
3512
3513         /*
3514          * There are setups with compaction disabled which would prefer to loop
3515          * inside the allocator rather than hit the oom killer prematurely.
3516          * Let's give them a good hope and keep retrying while the order-0
3517          * watermarks are OK.
3518          */
3519         for_each_zone_zonelist_nodemask(zone, z, ac->zonelist, ac->high_zoneidx,
3520                                         ac->nodemask) {
3521                 if (zone_watermark_ok(zone, 0, min_wmark_pages(zone),
3522                                         ac_classzone_idx(ac), alloc_flags))
3523                         return true;
3524         }
3525         return false;
3526 }
3527 #endif /* CONFIG_COMPACTION */
3528
3529 #ifdef CONFIG_LOCKDEP
3530 struct lockdep_map __fs_reclaim_map =
3531         STATIC_LOCKDEP_MAP_INIT("fs_reclaim", &__fs_reclaim_map);
3532
3533 static bool __need_fs_reclaim(gfp_t gfp_mask)
3534 {
3535         gfp_mask = current_gfp_context(gfp_mask);
3536
3537         /* no reclaim without waiting on it */
3538         if (!(gfp_mask & __GFP_DIRECT_RECLAIM))
3539                 return false;
3540
3541         /* this guy won't enter reclaim */
3542         if (current->flags & PF_MEMALLOC)
3543                 return false;
3544
3545         /* We're only interested __GFP_FS allocations for now */
3546         if (!(gfp_mask & __GFP_FS))
3547                 return false;
3548
3549         if (gfp_mask & __GFP_NOLOCKDEP)
3550                 return false;
3551
3552         return true;
3553 }
3554
3555 void fs_reclaim_acquire(gfp_t gfp_mask)
3556 {
3557         if (__need_fs_reclaim(gfp_mask))
3558                 lock_map_acquire(&__fs_reclaim_map);
3559 }
3560 EXPORT_SYMBOL_GPL(fs_reclaim_acquire);
3561
3562 void fs_reclaim_release(gfp_t gfp_mask)
3563 {
3564         if (__need_fs_reclaim(gfp_mask))
3565                 lock_map_release(&__fs_reclaim_map);
3566 }
3567 EXPORT_SYMBOL_GPL(fs_reclaim_release);
3568 #endif
3569
3570 /* Perform direct synchronous page reclaim */
3571 static int
3572 __perform_reclaim(gfp_t gfp_mask, unsigned int order,
3573                                         const struct alloc_context *ac)
3574 {
3575         struct reclaim_state reclaim_state;
3576         int progress;
3577         unsigned int noreclaim_flag;
3578
3579         cond_resched();
3580
3581         /* We now go into synchronous reclaim */
3582         cpuset_memory_pressure_bump();
3583         noreclaim_flag = memalloc_noreclaim_save();
3584         fs_reclaim_acquire(gfp_mask);
3585         reclaim_state.reclaimed_slab = 0;
3586         current->reclaim_state = &reclaim_state;
3587
3588         progress = try_to_free_pages(ac->zonelist, order, gfp_mask,
3589                                                                 ac->nodemask);
3590
3591         current->reclaim_state = NULL;
3592         fs_reclaim_release(gfp_mask);
3593         memalloc_noreclaim_restore(noreclaim_flag);
3594
3595         cond_resched();
3596
3597         return progress;
3598 }
3599
3600 /* The really slow allocator path where we enter direct reclaim */
3601 static inline struct page *
3602 __alloc_pages_direct_reclaim(gfp_t gfp_mask, unsigned int order,
3603                 unsigned int alloc_flags, const struct alloc_context *ac,
3604                 unsigned long *did_some_progress)
3605 {
3606         struct page *page = NULL;
3607         bool drained = false;
3608
3609         *did_some_progress = __perform_reclaim(gfp_mask, order, ac);
3610         if (unlikely(!(*did_some_progress)))
3611                 return NULL;
3612
3613 retry:
3614         page = get_page_from_freelist(gfp_mask, order, alloc_flags, ac);
3615
3616         /*
3617          * If an allocation failed after direct reclaim, it could be because
3618          * pages are pinned on the per-cpu lists or in high alloc reserves.
3619          * Shrink them them and try again
3620          */
3621         if (!page && !drained) {
3622                 unreserve_highatomic_pageblock(ac, false);
3623                 drain_all_pages(NULL);
3624                 drained = true;
3625                 goto retry;
3626         }
3627
3628         return page;
3629 }
3630
3631 static void wake_all_kswapds(unsigned int order, const struct alloc_context *ac)
3632 {
3633         struct zoneref *z;
3634         struct zone *zone;
3635         pg_data_t *last_pgdat = NULL;
3636
3637         for_each_zone_zonelist_nodemask(zone, z, ac->zonelist,
3638                                         ac->high_zoneidx, ac->nodemask) {
3639                 if (last_pgdat != zone->zone_pgdat)
3640                         wakeup_kswapd(zone, order, ac->high_zoneidx);
3641                 last_pgdat = zone->zone_pgdat;
3642         }
3643 }
3644
3645 static inline unsigned int
3646 gfp_to_alloc_flags(gfp_t gfp_mask)
3647 {
3648         unsigned int alloc_flags = ALLOC_WMARK_MIN | ALLOC_CPUSET;
3649
3650         /* __GFP_HIGH is assumed to be the same as ALLOC_HIGH to save a branch. */
3651         BUILD_BUG_ON(__GFP_HIGH != (__force gfp_t) ALLOC_HIGH);
3652
3653         /*
3654          * The caller may dip into page reserves a bit more if the caller
3655          * cannot run direct reclaim, or if the caller has realtime scheduling
3656          * policy or is asking for __GFP_HIGH memory.  GFP_ATOMIC requests will
3657          * set both ALLOC_HARDER (__GFP_ATOMIC) and ALLOC_HIGH (__GFP_HIGH).
3658          */
3659         alloc_flags |= (__force int) (gfp_mask & __GFP_HIGH);
3660
3661         if (gfp_mask & __GFP_ATOMIC) {
3662                 /*
3663                  * Not worth trying to allocate harder for __GFP_NOMEMALLOC even
3664                  * if it can't schedule.
3665                  */
3666                 if (!(gfp_mask & __GFP_NOMEMALLOC))
3667                         alloc_flags |= ALLOC_HARDER;
3668                 /*
3669                  * Ignore cpuset mems for GFP_ATOMIC rather than fail, see the
3670                  * comment for __cpuset_node_allowed().
3671                  */
3672                 alloc_flags &= ~ALLOC_CPUSET;
3673         } else if (unlikely(rt_task(current)) && !in_interrupt())
3674                 alloc_flags |= ALLOC_HARDER;
3675
3676 #ifdef CONFIG_CMA
3677         if (gfpflags_to_migratetype(gfp_mask) == MIGRATE_MOVABLE)
3678                 alloc_flags |= ALLOC_CMA;
3679 #endif
3680         return alloc_flags;
3681 }
3682
3683 static bool oom_reserves_allowed(struct task_struct *tsk)
3684 {
3685         if (!tsk_is_oom_victim(tsk))
3686                 return false;
3687
3688         /*
3689          * !MMU doesn't have oom reaper so give access to memory reserves
3690          * only to the thread with TIF_MEMDIE set
3691          */
3692         if (!IS_ENABLED(CONFIG_MMU) && !test_thread_flag(TIF_MEMDIE))
3693                 return false;
3694
3695         return true;
3696 }
3697
3698 /*
3699  * Distinguish requests which really need access to full memory
3700  * reserves from oom victims which can live with a portion of it
3701  */
3702 static inline int __gfp_pfmemalloc_flags(gfp_t gfp_mask)
3703 {
3704         if (unlikely(gfp_mask & __GFP_NOMEMALLOC))
3705                 return 0;
3706         if (gfp_mask & __GFP_MEMALLOC)
3707                 return ALLOC_NO_WATERMARKS;
3708         if (in_serving_softirq() && (current->flags & PF_MEMALLOC))
3709                 return ALLOC_NO_WATERMARKS;
3710         if (!in_interrupt()) {
3711                 if (current->flags & PF_MEMALLOC)
3712                         return ALLOC_NO_WATERMARKS;
3713                 else if (oom_reserves_allowed(current))
3714                         return ALLOC_OOM;
3715         }
3716
3717         return 0;
3718 }
3719
3720 bool gfp_pfmemalloc_allowed(gfp_t gfp_mask)
3721 {
3722         return !!__gfp_pfmemalloc_flags(gfp_mask);
3723 }
3724
3725 /*
3726  * Checks whether it makes sense to retry the reclaim to make a forward progress
3727  * for the given allocation request.
3728  *
3729  * We give up when we either have tried MAX_RECLAIM_RETRIES in a row
3730  * without success, or when we couldn't even meet the watermark if we
3731  * reclaimed all remaining pages on the LRU lists.
3732  *
3733  * Returns true if a retry is viable or false to enter the oom path.
3734  */
3735 static inline bool
3736 should_reclaim_retry(gfp_t gfp_mask, unsigned order,
3737                      struct alloc_context *ac, int alloc_flags,
3738                      bool did_some_progress, int *no_progress_loops)
3739 {
3740         struct zone *zone;
3741         struct zoneref *z;
3742
3743         /*
3744          * Costly allocations might have made a progress but this doesn't mean
3745          * their order will become available due to high fragmentation so
3746          * always increment the no progress counter for them
3747          */
3748         if (did_some_progress && order <= PAGE_ALLOC_COSTLY_ORDER)
3749                 *no_progress_loops = 0;
3750         else
3751                 (*no_progress_loops)++;
3752
3753         /*
3754          * Make sure we converge to OOM if we cannot make any progress
3755          * several times in the row.
3756          */
3757         if (*no_progress_loops > MAX_RECLAIM_RETRIES) {
3758                 /* Before OOM, exhaust highatomic_reserve */
3759                 return unreserve_highatomic_pageblock(ac, true);
3760         }
3761
3762         /*
3763          * Keep reclaiming pages while there is a chance this will lead
3764          * somewhere.  If none of the target zones can satisfy our allocation
3765          * request even if all reclaimable pages are considered then we are
3766          * screwed and have to go OOM.
3767          */
3768         for_each_zone_zonelist_nodemask(zone, z, ac->zonelist, ac->high_zoneidx,
3769                                         ac->nodemask) {
3770                 unsigned long available;
3771                 unsigned long reclaimable;
3772                 unsigned long min_wmark = min_wmark_pages(zone);
3773                 bool wmark;
3774
3775                 available = reclaimable = zone_reclaimable_pages(zone);
3776                 available += zone_page_state_snapshot(zone, NR_FREE_PAGES);
3777
3778                 /*
3779                  * Would the allocation succeed if we reclaimed all
3780                  * reclaimable pages?
3781                  */
3782                 wmark = __zone_watermark_ok(zone, order, min_wmark,
3783                                 ac_classzone_idx(ac), alloc_flags, available);
3784                 trace_reclaim_retry_zone(z, order, reclaimable,
3785                                 available, min_wmark, *no_progress_loops, wmark);
3786                 if (wmark) {
3787                         /*
3788                          * If we didn't make any progress and have a lot of
3789                          * dirty + writeback pages then we should wait for
3790                          * an IO to complete to slow down the reclaim and
3791                          * prevent from pre mature OOM
3792                          */
3793                         if (!did_some_progress) {
3794                                 unsigned long write_pending;
3795
3796                                 write_pending = zone_page_state_snapshot(zone,
3797                                                         NR_ZONE_WRITE_PENDING);
3798
3799                                 if (2 * write_pending > reclaimable) {
3800                                         congestion_wait(BLK_RW_ASYNC, HZ/10);
3801                                         return true;
3802                                 }
3803                         }
3804
3805                         /*
3806                          * Memory allocation/reclaim might be called from a WQ
3807                          * context and the current implementation of the WQ
3808                          * concurrency control doesn't recognize that
3809                          * a particular WQ is congested if the worker thread is
3810                          * looping without ever sleeping. Therefore we have to
3811                          * do a short sleep here rather than calling
3812                          * cond_resched().
3813                          */
3814                         if (current->flags & PF_WQ_WORKER)
3815                                 schedule_timeout_uninterruptible(1);
3816                         else
3817                                 cond_resched();
3818
3819                         return true;
3820                 }
3821         }
3822
3823         return false;
3824 }
3825
3826 static inline bool
3827 check_retry_cpuset(int cpuset_mems_cookie, struct alloc_context *ac)
3828 {
3829         /*
3830          * It's possible that cpuset's mems_allowed and the nodemask from
3831          * mempolicy don't intersect. This should be normally dealt with by
3832          * policy_nodemask(), but it's possible to race with cpuset update in
3833          * such a way the check therein was true, and then it became false
3834          * before we got our cpuset_mems_cookie here.
3835          * This assumes that for all allocations, ac->nodemask can come only
3836          * from MPOL_BIND mempolicy (whose documented semantics is to be ignored
3837          * when it does not intersect with the cpuset restrictions) or the
3838          * caller can deal with a violated nodemask.
3839          */
3840         if (cpusets_enabled() && ac->nodemask &&
3841                         !cpuset_nodemask_valid_mems_allowed(ac->nodemask)) {
3842                 ac->nodemask = NULL;
3843                 return true;
3844         }
3845
3846         /*
3847          * When updating a task's mems_allowed or mempolicy nodemask, it is
3848          * possible to race with parallel threads in such a way that our
3849          * allocation can fail while the mask is being updated. If we are about
3850          * to fail, check if the cpuset changed during allocation and if so,
3851          * retry.
3852          */
3853         if (read_mems_allowed_retry(cpuset_mems_cookie))
3854                 return true;
3855
3856         return false;
3857 }
3858
3859 static inline struct page *
3860 __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,
3861                                                 struct alloc_context *ac)
3862 {
3863         bool can_direct_reclaim = gfp_mask & __GFP_DIRECT_RECLAIM;
3864         const bool costly_order = order > PAGE_ALLOC_COSTLY_ORDER;
3865         struct page *page = NULL;
3866         unsigned int alloc_flags;
3867         unsigned long did_some_progress;
3868         enum compact_priority compact_priority;
3869         enum compact_result compact_result;
3870         int compaction_retries;
3871         int no_progress_loops;
3872         unsigned int cpuset_mems_cookie;
3873         int reserve_flags;
3874
3875         /*
3876          * We also sanity check to catch abuse of atomic reserves being used by
3877          * callers that are not in atomic context.
3878          */
3879         if (WARN_ON_ONCE((gfp_mask & (__GFP_ATOMIC|__GFP_DIRECT_RECLAIM)) ==
3880                                 (__GFP_ATOMIC|__GFP_DIRECT_RECLAIM)))
3881                 gfp_mask &= ~__GFP_ATOMIC;
3882
3883 retry_cpuset:
3884         compaction_retries = 0;
3885         no_progress_loops = 0;
3886         compact_priority = DEF_COMPACT_PRIORITY;
3887         cpuset_mems_cookie = read_mems_allowed_begin();
3888
3889         /*
3890          * The fast path uses conservative alloc_flags to succeed only until
3891          * kswapd needs to be woken up, and to avoid the cost of setting up
3892          * alloc_flags precisely. So we do that now.
3893          */
3894         alloc_flags = gfp_to_alloc_flags(gfp_mask);
3895
3896         /*
3897          * We need to recalculate the starting point for the zonelist iterator
3898          * because we might have used different nodemask in the fast path, or
3899          * there was a cpuset modification and we are retrying - otherwise we
3900          * could end up iterating over non-eligible zones endlessly.
3901          */
3902         ac->preferred_zoneref = first_zones_zonelist(ac->zonelist,
3903                                         ac->high_zoneidx, ac->nodemask);
3904         if (!ac->preferred_zoneref->zone)
3905                 goto nopage;
3906
3907         if (gfp_mask & __GFP_KSWAPD_RECLAIM)
3908                 wake_all_kswapds(order, ac);
3909
3910         /*
3911          * The adjusted alloc_flags might result in immediate success, so try
3912          * that first
3913          */
3914         page = get_page_from_freelist(gfp_mask, order, alloc_flags, ac);
3915         if (page)
3916                 goto got_pg;
3917
3918         /*
3919          * For costly allocations, try direct compaction first, as it's likely
3920          * that we have enough base pages and don't need to reclaim. For non-
3921          * movable high-order allocations, do that as well, as compaction will
3922          * try prevent permanent fragmentation by migrating from blocks of the
3923          * same migratetype.
3924          * Don't try this for allocations that are allowed to ignore
3925          * watermarks, as the ALLOC_NO_WATERMARKS attempt didn't yet happen.
3926          */
3927         if (can_direct_reclaim &&
3928                         (costly_order ||
3929                            (order > 0 && ac->migratetype != MIGRATE_MOVABLE))
3930                         && !gfp_pfmemalloc_allowed(gfp_mask)) {
3931                 page = __alloc_pages_direct_compact(gfp_mask, order,
3932                                                 alloc_flags, ac,
3933                                                 INIT_COMPACT_PRIORITY,
3934                                                 &compact_result);
3935                 if (page)
3936                         goto got_pg;
3937
3938                 /*
3939                  * Checks for costly allocations with __GFP_NORETRY, which
3940                  * includes THP page fault allocations
3941                  */
3942                 if (costly_order && (gfp_mask & __GFP_NORETRY)) {
3943                         /*
3944                          * If compaction is deferred for high-order allocations,
3945                          * it is because sync compaction recently failed. If
3946                          * this is the case and the caller requested a THP
3947                          * allocation, we do not want to heavily disrupt the
3948                          * system, so we fail the allocation instead of entering
3949                          * direct reclaim.
3950                          */
3951                         if (compact_result == COMPACT_DEFERRED)
3952                                 goto nopage;
3953
3954                         /*
3955                          * Looks like reclaim/compaction is worth trying, but
3956                          * sync compaction could be very expensive, so keep
3957                          * using async compaction.
3958                          */
3959                         compact_priority = INIT_COMPACT_PRIORITY;
3960                 }
3961         }
3962
3963 retry:
3964         /* Ensure kswapd doesn't accidentally go to sleep as long as we loop */
3965         if (gfp_mask & __GFP_KSWAPD_RECLAIM)
3966                 wake_all_kswapds(order, ac);
3967
3968         reserve_flags = __gfp_pfmemalloc_flags(gfp_mask);
3969         if (reserve_flags)
3970                 alloc_flags = reserve_flags;
3971
3972         /*
3973          * Reset the zonelist iterators if memory policies can be ignored.
3974          * These allocations are high priority and system rather than user
3975          * orientated.
3976          */
3977         if (!(alloc_flags & ALLOC_CPUSET) || reserve_flags) {
3978                 ac->preferred_zoneref = first_zones_zonelist(ac->zonelist,
3979                                         ac->high_zoneidx, ac->nodemask);
3980         }
3981
3982         /* Attempt with potentially adjusted zonelist and alloc_flags */
3983         page = get_page_from_freelist(gfp_mask, order, alloc_flags, ac);
3984         if (page)
3985                 goto got_pg;
3986
3987         /* Caller is not willing to reclaim, we can't balance anything */
3988         if (!can_direct_reclaim)
3989                 goto nopage;
3990
3991         /* Avoid recursion of direct reclaim */
3992         if (current->flags & PF_MEMALLOC)
3993                 goto nopage;
3994
3995         /* Try direct reclaim and then allocating */
3996         page = __alloc_pages_direct_reclaim(gfp_mask, order, alloc_flags, ac,
3997                                                         &did_some_progress);
3998         if (page)
3999                 goto got_pg;
4000
4001         /* Try direct compaction and then allocating */
4002         page = __alloc_pages_direct_compact(gfp_mask, order, alloc_flags, ac,
4003                                         compact_priority, &compact_result);
4004         if (page)
4005                 goto got_pg;
4006
4007         /* Do not loop if specifically requested */
4008         if (gfp_mask & __GFP_NORETRY)
4009                 goto nopage;
4010
4011         /*
4012          * Do not retry costly high order allocations unless they are
4013          * __GFP_RETRY_MAYFAIL
4014          */
4015         if (costly_order && !(gfp_mask & __GFP_RETRY_MAYFAIL))
4016                 goto nopage;
4017
4018         if (should_reclaim_retry(gfp_mask, order, ac, alloc_flags,
4019                                  did_some_progress > 0, &no_progress_loops))
4020                 goto retry;
4021
4022         /*
4023          * It doesn't make any sense to retry for the compaction if the order-0
4024          * reclaim is not able to make any progress because the current
4025          * implementation of the compaction depends on the sufficient amount
4026          * of free memory (see __compaction_suitable)
4027          */
4028         if (did_some_progress > 0 &&
4029                         should_compact_retry(ac, order, alloc_flags,
4030                                 compact_result, &compact_priority,
4031                                 &compaction_retries))
4032                 goto retry;
4033
4034
4035         /* Deal with possible cpuset update races before we start OOM killing */
4036         if (check_retry_cpuset(cpuset_mems_cookie, ac))
4037                 goto retry_cpuset;
4038
4039         /* Reclaim has failed us, start killing things */
4040         page = __alloc_pages_may_oom(gfp_mask, order, ac, &did_some_progress);
4041         if (page)
4042                 goto got_pg;
4043
4044         /* Avoid allocations with no watermarks from looping endlessly */
4045         if (tsk_is_oom_victim(current) &&
4046             (alloc_flags == ALLOC_OOM ||
4047              (gfp_mask & __GFP_NOMEMALLOC)))
4048                 goto nopage;
4049
4050         /* Retry as long as the OOM killer is making progress */
4051         if (did_some_progress) {
4052                 no_progress_loops = 0;
4053                 goto retry;
4054         }
4055
4056 nopage:
4057         /* Deal with possible cpuset update races before we fail */
4058         if (check_retry_cpuset(cpuset_mems_cookie, ac))
4059                 goto retry_cpuset;
4060
4061         /*
4062          * Make sure that __GFP_NOFAIL request doesn't leak out and make sure
4063          * we always retry
4064          */
4065         if (gfp_mask & __GFP_NOFAIL) {
4066                 /*
4067                  * All existing users of the __GFP_NOFAIL are blockable, so warn
4068                  * of any new users that actually require GFP_NOWAIT
4069                  */
4070                 if (WARN_ON_ONCE(!can_direct_reclaim))
4071                         goto fail;
4072
4073                 /*
4074                  * PF_MEMALLOC request from this context is rather bizarre
4075                  * because we cannot reclaim anything and only can loop waiting
4076                  * for somebody to do a work for us
4077                  */
4078                 WARN_ON_ONCE(current->flags & PF_MEMALLOC);
4079
4080                 /*
4081                  * non failing costly orders are a hard requirement which we
4082                  * are not prepared for much so let's warn about these users
4083                  * so that we can identify them and convert them to something
4084                  * else.
4085                  */
4086                 WARN_ON_ONCE(order > PAGE_ALLOC_COSTLY_ORDER);
4087
4088                 /*
4089                  * Help non-failing allocations by giving them access to memory
4090                  * reserves but do not use ALLOC_NO_WATERMARKS because this
4091                  * could deplete whole memory reserves which would just make
4092                  * the situation worse
4093                  */
4094                 page = __alloc_pages_cpuset_fallback(gfp_mask, order, ALLOC_HARDER, ac);
4095                 if (page)
4096                         goto got_pg;
4097
4098                 cond_resched();
4099                 goto retry;
4100         }
4101 fail:
4102         warn_alloc(gfp_mask, ac->nodemask,
4103                         "page allocation failure: order:%u", order);
4104 got_pg:
4105         return page;
4106 }
4107
4108 static inline bool prepare_alloc_pages(gfp_t gfp_mask, unsigned int order,
4109                 int preferred_nid, nodemask_t *nodemask,
4110                 struct alloc_context *ac, gfp_t *alloc_mask,
4111                 unsigned int *alloc_flags)
4112 {
4113         ac->high_zoneidx = gfp_zone(gfp_mask);
4114         ac->zonelist = node_zonelist(preferred_nid, gfp_mask);
4115         ac->nodemask = nodemask;
4116         ac->migratetype = gfpflags_to_migratetype(gfp_mask);
4117
4118         if (cpusets_enabled()) {
4119                 *alloc_mask |= __GFP_HARDWALL;
4120                 if (!ac->nodemask)
4121                         ac->nodemask = &cpuset_current_mems_allowed;
4122                 else
4123                         *alloc_flags |= ALLOC_CPUSET;
4124         }
4125
4126         fs_reclaim_acquire(gfp_mask);
4127         fs_reclaim_release(gfp_mask);
4128
4129         might_sleep_if(gfp_mask & __GFP_DIRECT_RECLAIM);
4130
4131         if (should_fail_alloc_page(gfp_mask, order))
4132                 return false;
4133
4134         if (IS_ENABLED(CONFIG_CMA) && ac->migratetype == MIGRATE_MOVABLE)
4135                 *alloc_flags |= ALLOC_CMA;
4136
4137         return true;
4138 }
4139
4140 /* Determine whether to spread dirty pages and what the first usable zone */
4141 static inline void finalise_ac(gfp_t gfp_mask,
4142                 unsigned int order, struct alloc_context *ac)
4143 {
4144         /* Dirty zone balancing only done in the fast path */
4145         ac->spread_dirty_pages = (gfp_mask & __GFP_WRITE);
4146
4147         /*
4148          * The preferred zone is used for statistics but crucially it is
4149          * also used as the starting point for the zonelist iterator. It
4150          * may get reset for allocations that ignore memory policies.
4151          */
4152         ac->preferred_zoneref = first_zones_zonelist(ac->zonelist,
4153                                         ac->high_zoneidx, ac->nodemask);
4154 }
4155
4156 /*
4157  * This is the 'heart' of the zoned buddy allocator.
4158  */
4159 struct page *
4160 __alloc_pages_nodemask(gfp_t gfp_mask, unsigned int order, int preferred_nid,
4161                                                         nodemask_t *nodemask)
4162 {
4163         struct page *page;
4164         unsigned int alloc_flags = ALLOC_WMARK_LOW;
4165         gfp_t alloc_mask; /* The gfp_t that was actually used for allocation */
4166         struct alloc_context ac = { };
4167
4168         /*
4169          * There are several places where we assume that the order value is sane
4170          * so bail out early if the request is out of bound.
4171          */
4172         if (unlikely(order >= MAX_ORDER)) {
4173                 WARN_ON_ONCE(!(gfp_mask & __GFP_NOWARN));
4174                 return NULL;
4175         }
4176
4177         gfp_mask &= gfp_allowed_mask;
4178         alloc_mask = gfp_mask;
4179         if (!prepare_alloc_pages(gfp_mask, order, preferred_nid, nodemask, &ac, &alloc_mask, &alloc_flags))
4180                 return NULL;
4181
4182         finalise_ac(gfp_mask, order, &ac);
4183
4184         /* First allocation attempt */
4185         page = get_page_from_freelist(alloc_mask, order, alloc_flags, &ac);
4186         if (likely(page))
4187                 goto out;
4188
4189         /*
4190          * Apply scoped allocation constraints. This is mainly about GFP_NOFS
4191          * resp. GFP_NOIO which has to be inherited for all allocation requests
4192          * from a particular context which has been marked by
4193          * memalloc_no{fs,io}_{save,restore}.
4194          */
4195         alloc_mask = current_gfp_context(gfp_mask);
4196         ac.spread_dirty_pages = false;
4197
4198         /*
4199          * Restore the original nodemask if it was potentially replaced with
4200          * &cpuset_current_mems_allowed to optimize the fast-path attempt.
4201          */
4202         if (unlikely(ac.nodemask != nodemask))
4203                 ac.nodemask = nodemask;
4204
4205         page = __alloc_pages_slowpath(alloc_mask, order, &ac);
4206
4207 out:
4208         if (memcg_kmem_enabled() && (gfp_mask & __GFP_ACCOUNT) && page &&
4209             unlikely(memcg_kmem_charge(page, gfp_mask, order) != 0)) {
4210                 __free_pages(page, order);
4211                 page = NULL;
4212         }
4213
4214         trace_mm_page_alloc(page, order, alloc_mask, ac.migratetype);
4215
4216         return page;
4217 }
4218 EXPORT_SYMBOL(__alloc_pages_nodemask);
4219
4220 /*
4221  * Common helper functions.
4222  */
4223 unsigned long __get_free_pages(gfp_t gfp_mask, unsigned int order)
4224 {
4225         struct page *page;
4226
4227         /*
4228          * __get_free_pages() returns a 32-bit address, which cannot represent
4229          * a highmem page
4230          */
4231         VM_BUG_ON((gfp_mask & __GFP_HIGHMEM) != 0);
4232
4233         page = alloc_pages(gfp_mask, order);
4234         if (!page)
4235                 return 0;
4236         return (unsigned long) page_address(page);
4237 }
4238 EXPORT_SYMBOL(__get_free_pages);
4239
4240 unsigned long get_zeroed_page(gfp_t gfp_mask)
4241 {
4242         return __get_free_pages(gfp_mask | __GFP_ZERO, 0);
4243 }
4244 EXPORT_SYMBOL(get_zeroed_page);
4245
4246 void __free_pages(struct page *page, unsigned int order)
4247 {
4248         if (put_page_testzero(page)) {
4249                 if (order == 0)
4250                         free_hot_cold_page(page, false);
4251                 else
4252                         __free_pages_ok(page, order);
4253         }
4254 }
4255
4256 EXPORT_SYMBOL(__free_pages);
4257
4258 void free_pages(unsigned long addr, unsigned int order)
4259 {
4260         if (addr != 0) {
4261                 VM_BUG_ON(!virt_addr_valid((void *)addr));
4262                 __free_pages(virt_to_page((void *)addr), order);
4263         }
4264 }
4265
4266 EXPORT_SYMBOL(free_pages);
4267
4268 /*
4269  * Page Fragment:
4270  *  An arbitrary-length arbitrary-offset area of memory which resides
4271  *  within a 0 or higher order page.  Multiple fragments within that page
4272  *  are individually refcounted, in the page's reference counter.
4273  *
4274  * The page_frag functions below provide a simple allocation framework for
4275  * page fragments.  This is used by the network stack and network device
4276  * drivers to provide a backing region of memory for use as either an
4277  * sk_buff->head, or to be used in the "frags" portion of skb_shared_info.
4278  */
4279 static struct page *__page_frag_cache_refill(struct page_frag_cache *nc,
4280                                              gfp_t gfp_mask)
4281 {
4282         struct page *page = NULL;
4283         gfp_t gfp = gfp_mask;
4284
4285 #if (PAGE_SIZE < PAGE_FRAG_CACHE_MAX_SIZE)
4286         gfp_mask |= __GFP_COMP | __GFP_NOWARN | __GFP_NORETRY |
4287                     __GFP_NOMEMALLOC;
4288         page = alloc_pages_node(NUMA_NO_NODE, gfp_mask,
4289                                 PAGE_FRAG_CACHE_MAX_ORDER);
4290         nc->size = page ? PAGE_FRAG_CACHE_MAX_SIZE : PAGE_SIZE;
4291 #endif
4292         if (unlikely(!page))
4293                 page = alloc_pages_node(NUMA_NO_NODE, gfp, 0);
4294
4295         nc->va = page ? page_address(page) : NULL;
4296
4297         return page;
4298 }
4299
4300 void __page_frag_cache_drain(struct page *page, unsigned int count)
4301 {
4302         VM_BUG_ON_PAGE(page_ref_count(page) == 0, page);
4303
4304         if (page_ref_sub_and_test(page, count)) {
4305                 unsigned int order = compound_order(page);
4306
4307                 if (order == 0)
4308                         free_hot_cold_page(page, false);
4309                 else
4310                         __free_pages_ok(page, order);
4311         }
4312 }
4313 EXPORT_SYMBOL(__page_frag_cache_drain);
4314
4315 void *page_frag_alloc(struct page_frag_cache *nc,
4316                       unsigned int fragsz, gfp_t gfp_mask)
4317 {
4318         unsigned int size = PAGE_SIZE;
4319         struct page *page;
4320         int offset;
4321
4322         if (unlikely(!nc->va)) {
4323 refill:
4324                 page = __page_frag_cache_refill(nc, gfp_mask);
4325                 if (!page)
4326                         return NULL;
4327
4328 #if (PAGE_SIZE < PAGE_FRAG_CACHE_MAX_SIZE)
4329                 /* if size can vary use size else just use PAGE_SIZE */
4330                 size = nc->size;
4331 #endif
4332                 /* Even if we own the page, we do not use atomic_set().
4333                  * This would break get_page_unless_zero() users.
4334                  */
4335                 page_ref_add(page, PAGE_FRAG_CACHE_MAX_SIZE);
4336
4337                 /* reset page count bias and offset to start of new frag */
4338                 nc->pfmemalloc = page_is_pfmemalloc(page);
4339                 nc->pagecnt_bias = PAGE_FRAG_CACHE_MAX_SIZE + 1;
4340                 nc->offset = size;
4341         }
4342
4343         offset = nc->offset - fragsz;
4344         if (unlikely(offset < 0)) {
4345                 page = virt_to_page(nc->va);
4346
4347                 if (!page_ref_sub_and_test(page, nc->pagecnt_bias))
4348                         goto refill;
4349
4350 #if (PAGE_SIZE < PAGE_FRAG_CACHE_MAX_SIZE)
4351                 /* if size can vary use size else just use PAGE_SIZE */
4352                 size = nc->size;
4353 #endif
4354                 /* OK, page count is 0, we can safely set it */
4355                 set_page_count(page, PAGE_FRAG_CACHE_MAX_SIZE + 1);
4356
4357                 /* reset page count bias and offset to start of new frag */
4358                 nc->pagecnt_bias = PAGE_FRAG_CACHE_MAX_SIZE + 1;
4359                 offset = size - fragsz;
4360         }
4361
4362         nc->pagecnt_bias--;
4363         nc->offset = offset;
4364
4365         return nc->va + offset;
4366 }
4367 EXPORT_SYMBOL(page_frag_alloc);
4368
4369 /*
4370  * Frees a page fragment allocated out of either a compound or order 0 page.
4371  */
4372 void page_frag_free(void *addr)
4373 {
4374         struct page *page = virt_to_head_page(addr);
4375
4376         if (unlikely(put_page_testzero(page)))
4377                 __free_pages_ok(page, compound_order(page));
4378 }
4379 EXPORT_SYMBOL(page_frag_free);
4380
4381 static void *make_alloc_exact(unsigned long addr, unsigned int order,
4382                 size_t size)
4383 {
4384         if (addr) {
4385                 unsigned long alloc_end = addr + (PAGE_SIZE << order);
4386                 unsigned long used = addr + PAGE_ALIGN(size);
4387
4388                 split_page(virt_to_page((void *)addr), order);
4389                 while (used < alloc_end) {
4390                         free_page(used);
4391                         used += PAGE_SIZE;
4392                 }
4393         }
4394         return (void *)addr;
4395 }
4396
4397 /**
4398  * alloc_pages_exact - allocate an exact number physically-contiguous pages.
4399  * @size: the number of bytes to allocate
4400  * @gfp_mask: GFP flags for the allocation
4401  *
4402  * This function is similar to alloc_pages(), except that it allocates the
4403  * minimum number of pages to satisfy the request.  alloc_pages() can only
4404  * allocate memory in power-of-two pages.
4405  *
4406  * This function is also limited by MAX_ORDER.
4407  *
4408  * Memory allocated by this function must be released by free_pages_exact().
4409  */
4410 void *alloc_pages_exact(size_t size, gfp_t gfp_mask)
4411 {
4412         unsigned int order = get_order(size);
4413         unsigned long addr;
4414
4415         addr = __get_free_pages(gfp_mask, order);
4416         return make_alloc_exact(addr, order, size);
4417 }
4418 EXPORT_SYMBOL(alloc_pages_exact);
4419
4420 /**
4421  * alloc_pages_exact_nid - allocate an exact number of physically-contiguous
4422  *                         pages on a node.
4423  * @nid: the preferred node ID where memory should be allocated
4424  * @size: the number of bytes to allocate
4425  * @gfp_mask: GFP flags for the allocation
4426  *
4427  * Like alloc_pages_exact(), but try to allocate on node nid first before falling
4428  * back.
4429  */
4430 void * __meminit alloc_pages_exact_nid(int nid, size_t size, gfp_t gfp_mask)
4431 {
4432         unsigned int order = get_order(size);
4433         struct page *p = alloc_pages_node(nid, gfp_mask, order);
4434         if (!p)
4435                 return NULL;
4436         return make_alloc_exact((unsigned long)page_address(p), order, size);
4437 }
4438
4439 /**
4440  * free_pages_exact - release memory allocated via alloc_pages_exact()
4441  * @virt: the value returned by alloc_pages_exact.
4442  * @size: size of allocation, same value as passed to alloc_pages_exact().
4443  *
4444  * Release the memory allocated by a previous call to alloc_pages_exact.
4445  */
4446 void free_pages_exact(void *virt, size_t size)
4447 {
4448         unsigned long addr = (unsigned long)virt;
4449         unsigned long end = addr + PAGE_ALIGN(size);
4450
4451         while (addr < end) {
4452                 free_page(addr);
4453                 addr += PAGE_SIZE;
4454         }
4455 }
4456 EXPORT_SYMBOL(free_pages_exact);
4457
4458 /**
4459  * nr_free_zone_pages - count number of pages beyond high watermark
4460  * @offset: The zone index of the highest zone
4461  *
4462  * nr_free_zone_pages() counts the number of counts pages which are beyond the
4463  * high watermark within all zones at or below a given zone index.  For each
4464  * zone, the number of pages is calculated as:
4465  *
4466  *     nr_free_zone_pages = managed_pages - high_pages
4467  */
4468 static unsigned long nr_free_zone_pages(int offset)
4469 {
4470         struct zoneref *z;
4471         struct zone *zone;
4472
4473         /* Just pick one node, since fallback list is circular */
4474         unsigned long sum = 0;
4475
4476         struct zonelist *zonelist = node_zonelist(numa_node_id(), GFP_KERNEL);
4477
4478         for_each_zone_zonelist(zone, z, zonelist, offset) {
4479                 unsigned long size = zone->managed_pages;
4480                 unsigned long high = high_wmark_pages(zone);
4481                 if (size > high)
4482                         sum += size - high;
4483         }
4484
4485         return sum;
4486 }
4487
4488 /**
4489  * nr_free_buffer_pages - count number of pages beyond high watermark
4490  *
4491  * nr_free_buffer_pages() counts the number of pages which are beyond the high
4492  * watermark within ZONE_DMA and ZONE_NORMAL.
4493  */
4494 unsigned long nr_free_buffer_pages(void)
4495 {
4496         return nr_free_zone_pages(gfp_zone(GFP_USER));
4497 }
4498 EXPORT_SYMBOL_GPL(nr_free_buffer_pages);
4499
4500 /**
4501  * nr_free_pagecache_pages - count number of pages beyond high watermark
4502  *
4503  * nr_free_pagecache_pages() counts the number of pages which are beyond the
4504  * high watermark within all zones.
4505  */
4506 unsigned long nr_free_pagecache_pages(void)
4507 {
4508         return nr_free_zone_pages(gfp_zone(GFP_HIGHUSER_MOVABLE));
4509 }
4510
4511 static inline void show_node(struct zone *zone)
4512 {
4513         if (IS_ENABLED(CONFIG_NUMA))
4514                 printk("Node %d ", zone_to_nid(zone));
4515 }
4516
4517 long si_mem_available(void)
4518 {
4519         long available;
4520         unsigned long pagecache;
4521         unsigned long wmark_low = 0;
4522         unsigned long pages[NR_LRU_LISTS];
4523         struct zone *zone;
4524         int lru;
4525
4526         for (lru = LRU_BASE; lru < NR_LRU_LISTS; lru++)
4527                 pages[lru] = global_node_page_state(NR_LRU_BASE + lru);
4528
4529         for_each_zone(zone)
4530                 wmark_low += zone->watermark[WMARK_LOW];
4531
4532         /*
4533          * Estimate the amount of memory available for userspace allocations,
4534          * without causing swapping.
4535          */
4536         available = global_zone_page_state(NR_FREE_PAGES) - totalreserve_pages;
4537
4538         /*
4539          * Not all the page cache can be freed, otherwise the system will
4540          * start swapping. Assume at least half of the page cache, or the
4541          * low watermark worth of cache, needs to stay.
4542          */
4543         pagecache = pages[LRU_ACTIVE_FILE] + pages[LRU_INACTIVE_FILE];
4544         pagecache -= min(pagecache / 2, wmark_low);
4545         available += pagecache;
4546
4547         /*
4548          * Part of the reclaimable slab consists of items that are in use,
4549          * and cannot be freed. Cap this estimate at the low watermark.
4550          */
4551         available += global_node_page_state(NR_SLAB_RECLAIMABLE) -
4552                      min(global_node_page_state(NR_SLAB_RECLAIMABLE) / 2,
4553                          wmark_low);
4554
4555         /*
4556          * Part of the kernel memory, which can be released under memory
4557          * pressure.
4558          */
4559         available += global_node_page_state(NR_INDIRECTLY_RECLAIMABLE_BYTES) >>
4560                 PAGE_SHIFT;
4561
4562         if (available < 0)
4563                 available = 0;
4564         return available;
4565 }
4566 EXPORT_SYMBOL_GPL(si_mem_available);
4567
4568 void si_meminfo(struct sysinfo *val)
4569 {
4570         val->totalram = totalram_pages;
4571         val->sharedram = global_node_page_state(NR_SHMEM);
4572         val->freeram = global_zone_page_state(NR_FREE_PAGES);
4573         val->bufferram = nr_blockdev_pages();
4574         val->totalhigh = totalhigh_pages;
4575         val->freehigh = nr_free_highpages();
4576         val->mem_unit = PAGE_SIZE;
4577 }
4578
4579 EXPORT_SYMBOL(si_meminfo);
4580
4581 #ifdef CONFIG_NUMA
4582 void si_meminfo_node(struct sysinfo *val, int nid)
4583 {
4584         int zone_type;          /* needs to be signed */
4585         unsigned long managed_pages = 0;
4586         unsigned long managed_highpages = 0;
4587         unsigned long free_highpages = 0;
4588         pg_data_t *pgdat = NODE_DATA(nid);
4589
4590         for (zone_type = 0; zone_type < MAX_NR_ZONES; zone_type++)
4591                 managed_pages += pgdat->node_zones[zone_type].managed_pages;
4592         val->totalram = managed_pages;
4593         val->sharedram = node_page_state(pgdat, NR_SHMEM);
4594         val->freeram = sum_zone_node_page_state(nid, NR_FREE_PAGES);
4595 #ifdef CONFIG_HIGHMEM
4596         for (zone_type = 0; zone_type < MAX_NR_ZONES; zone_type++) {
4597                 struct zone *zone = &pgdat->node_zones[zone_type];
4598
4599                 if (is_highmem(zone)) {
4600                         managed_highpages += zone->managed_pages;
4601                         free_highpages += zone_page_state(zone, NR_FREE_PAGES);
4602                 }
4603         }
4604         val->totalhigh = managed_highpages;
4605         val->freehigh = free_highpages;
4606 #else
4607         val->totalhigh = managed_highpages;
4608         val->freehigh = free_highpages;
4609 #endif
4610         val->mem_unit = PAGE_SIZE;
4611 }
4612 #endif
4613
4614 /*
4615  * Determine whether the node should be displayed or not, depending on whether
4616  * SHOW_MEM_FILTER_NODES was passed to show_free_areas().
4617  */
4618 static bool show_mem_node_skip(unsigned int flags, int nid, nodemask_t *nodemask)
4619 {
4620         if (!(flags & SHOW_MEM_FILTER_NODES))
4621                 return false;
4622
4623         /*
4624          * no node mask - aka implicit memory numa policy. Do not bother with
4625          * the synchronization - read_mems_allowed_begin - because we do not
4626          * have to be precise here.
4627          */
4628         if (!nodemask)
4629                 nodemask = &cpuset_current_mems_allowed;
4630
4631         return !node_isset(nid, *nodemask);
4632 }
4633
4634 #define K(x) ((x) << (PAGE_SHIFT-10))
4635
4636 static void show_migration_types(unsigned char type)
4637 {
4638         static const char types[MIGRATE_TYPES] = {
4639                 [MIGRATE_UNMOVABLE]     = 'U',
4640                 [MIGRATE_MOVABLE]       = 'M',
4641                 [MIGRATE_RECLAIMABLE]   = 'E',
4642                 [MIGRATE_HIGHATOMIC]    = 'H',
4643 #ifdef CONFIG_CMA
4644                 [MIGRATE_CMA]           = 'C',
4645 #endif
4646 #ifdef CONFIG_MEMORY_ISOLATION
4647                 [MIGRATE_ISOLATE]       = 'I',
4648 #endif
4649         };
4650         char tmp[MIGRATE_TYPES + 1];
4651         char *p = tmp;
4652         int i;
4653
4654         for (i = 0; i < MIGRATE_TYPES; i++) {
4655                 if (type & (1 << i))
4656                         *p++ = types[i];
4657         }
4658
4659         *p = '\0';
4660         printk(KERN_CONT "(%s) ", tmp);
4661 }
4662
4663 /*
4664  * Show free area list (used inside shift_scroll-lock stuff)
4665  * We also calculate the percentage fragmentation. We do this by counting the
4666  * memory on each free list with the exception of the first item on the list.
4667  *
4668  * Bits in @filter:
4669  * SHOW_MEM_FILTER_NODES: suppress nodes that are not allowed by current's
4670  *   cpuset.
4671  */
4672 void show_free_areas(unsigned int filter, nodemask_t *nodemask)
4673 {
4674         unsigned long free_pcp = 0;
4675         int cpu;
4676         struct zone *zone;
4677         pg_data_t *pgdat;
4678
4679         for_each_populated_zone(zone) {
4680                 if (show_mem_node_skip(filter, zone_to_nid(zone), nodemask))
4681                         continue;
4682
4683                 for_each_online_cpu(cpu)
4684                         free_pcp += per_cpu_ptr(zone->pageset, cpu)->pcp.count;
4685         }
4686
4687         printk("active_anon:%lu inactive_anon:%lu isolated_anon:%lu\n"
4688                 " active_file:%lu inactive_file:%lu isolated_file:%lu\n"
4689                 " unevictable:%lu dirty:%lu writeback:%lu unstable:%lu\n"
4690                 " slab_reclaimable:%lu slab_unreclaimable:%lu\n"
4691                 " mapped:%lu shmem:%lu pagetables:%lu bounce:%lu\n"
4692                 " free:%lu free_pcp:%lu free_cma:%lu\n",
4693                 global_node_page_state(NR_ACTIVE_ANON),
4694                 global_node_page_state(NR_INACTIVE_ANON),
4695                 global_node_page_state(NR_ISOLATED_ANON),
4696                 global_node_page_state(NR_ACTIVE_FILE),
4697                 global_node_page_state(NR_INACTIVE_FILE),
4698                 global_node_page_state(NR_ISOLATED_FILE),
4699                 global_node_page_state(NR_UNEVICTABLE),
4700                 global_node_page_state(NR_FILE_DIRTY),
4701                 global_node_page_state(NR_WRITEBACK),
4702                 global_node_page_state(NR_UNSTABLE_NFS),
4703                 global_node_page_state(NR_SLAB_RECLAIMABLE),
4704                 global_node_page_state(NR_SLAB_UNRECLAIMABLE),
4705                 global_node_page_state(NR_FILE_MAPPED),
4706                 global_node_page_state(NR_SHMEM),
4707                 global_zone_page_state(NR_PAGETABLE),
4708                 global_zone_page_state(NR_BOUNCE),
4709                 global_zone_page_state(NR_FREE_PAGES),
4710                 free_pcp,
4711                 global_zone_page_state(NR_FREE_CMA_PAGES));
4712
4713         for_each_online_pgdat(pgdat) {
4714                 if (show_mem_node_skip(filter, pgdat->node_id, nodemask))
4715                         continue;
4716
4717                 printk("Node %d"
4718                         " active_anon:%lukB"
4719                         " inactive_anon:%lukB"
4720                         " active_file:%lukB"
4721                         " inactive_file:%lukB"
4722                         " unevictable:%lukB"
4723                         " isolated(anon):%lukB"
4724                         " isolated(file):%lukB"
4725                         " mapped:%lukB"
4726                         " dirty:%lukB"
4727                         " writeback:%lukB"
4728                         " shmem:%lukB"
4729 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
4730                         " shmem_thp: %lukB"
4731                         " shmem_pmdmapped: %lukB"
4732                         " anon_thp: %lukB"
4733 #endif
4734                         " writeback_tmp:%lukB"
4735                         " unstable:%lukB"
4736                         " all_unreclaimable? %s"
4737                         "\n",
4738                         pgdat->node_id,
4739                         K(node_page_state(pgdat, NR_ACTIVE_ANON)),
4740                         K(node_page_state(pgdat, NR_INACTIVE_ANON)),
4741                         K(node_page_state(pgdat, NR_ACTIVE_FILE)),
4742                         K(node_page_state(pgdat, NR_INACTIVE_FILE)),
4743                         K(node_page_state(pgdat, NR_UNEVICTABLE)),
4744                         K(node_page_state(pgdat, NR_ISOLATED_ANON)),
4745                         K(node_page_state(pgdat, NR_ISOLATED_FILE)),
4746                         K(node_page_state(pgdat, NR_FILE_MAPPED)),
4747                         K(node_page_state(pgdat, NR_FILE_DIRTY)),
4748                         K(node_page_state(pgdat, NR_WRITEBACK)),
4749                         K(node_page_state(pgdat, NR_SHMEM)),
4750 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
4751                         K(node_page_state(pgdat, NR_SHMEM_THPS) * HPAGE_PMD_NR),
4752                         K(node_page_state(pgdat, NR_SHMEM_PMDMAPPED)
4753                                         * HPAGE_PMD_NR),
4754                         K(node_page_state(pgdat, NR_ANON_THPS) * HPAGE_PMD_NR),
4755 #endif
4756                         K(node_page_state(pgdat, NR_WRITEBACK_TEMP)),
4757                         K(node_page_state(pgdat, NR_UNSTABLE_NFS)),
4758                         pgdat->kswapd_failures >= MAX_RECLAIM_RETRIES ?
4759                                 "yes" : "no");
4760         }
4761
4762         for_each_populated_zone(zone) {
4763                 int i;
4764
4765                 if (show_mem_node_skip(filter, zone_to_nid(zone), nodemask))
4766                         continue;
4767
4768                 free_pcp = 0;
4769                 for_each_online_cpu(cpu)
4770                         free_pcp += per_cpu_ptr(zone->pageset, cpu)->pcp.count;
4771
4772                 show_node(zone);
4773                 printk(KERN_CONT
4774                         "%s"
4775                         " free:%lukB"
4776                         " min:%lukB"
4777                         " low:%lukB"
4778                         " high:%lukB"
4779                         " active_anon:%lukB"
4780                         " inactive_anon:%lukB"
4781                         " active_file:%lukB"
4782                         " inactive_file:%lukB"
4783                         " unevictable:%lukB"
4784                         " writepending:%lukB"
4785                         " present:%lukB"
4786                         " managed:%lukB"
4787                         " mlocked:%lukB"
4788                         " kernel_stack:%lukB"
4789                         " pagetables:%lukB"
4790                         " bounce:%lukB"
4791                         " free_pcp:%lukB"
4792                         " local_pcp:%ukB"
4793                         " free_cma:%lukB"
4794                         "\n",
4795                         zone->name,
4796                         K(zone_page_state(zone, NR_FREE_PAGES)),
4797                         K(min_wmark_pages(zone)),
4798                         K(low_wmark_pages(zone)),
4799                         K(high_wmark_pages(zone)),
4800                         K(zone_page_state(zone, NR_ZONE_ACTIVE_ANON)),
4801                         K(zone_page_state(zone, NR_ZONE_INACTIVE_ANON)),
4802                         K(zone_page_state(zone, NR_ZONE_ACTIVE_FILE)),
4803                         K(zone_page_state(zone, NR_ZONE_INACTIVE_FILE)),
4804                         K(zone_page_state(zone, NR_ZONE_UNEVICTABLE)),
4805                         K(zone_page_state(zone, NR_ZONE_WRITE_PENDING)),
4806                         K(zone->present_pages),
4807                         K(zone->managed_pages),
4808                         K(zone_page_state(zone, NR_MLOCK)),
4809                         zone_page_state(zone, NR_KERNEL_STACK_KB),
4810                         K(zone_page_state(zone, NR_PAGETABLE)),
4811                         K(zone_page_state(zone, NR_BOUNCE)),
4812                         K(free_pcp),
4813                         K(this_cpu_read(zone->pageset->pcp.count)),
4814                         K(zone_page_state(zone, NR_FREE_CMA_PAGES)));
4815                 printk("lowmem_reserve[]:");
4816                 for (i = 0; i < MAX_NR_ZONES; i++)
4817                         printk(KERN_CONT " %ld", zone->lowmem_reserve[i]);
4818                 printk(KERN_CONT "\n");
4819         }
4820
4821         for_each_populated_zone(zone) {
4822                 unsigned int order;
4823                 unsigned long nr[MAX_ORDER], flags, total = 0;
4824                 unsigned char types[MAX_ORDER];
4825
4826                 if (show_mem_node_skip(filter, zone_to_nid(zone), nodemask))
4827                         continue;
4828                 show_node(zone);
4829                 printk(KERN_CONT "%s: ", zone->name);
4830
4831                 spin_lock_irqsave(&zone->lock, flags);
4832                 for (order = 0; order < MAX_ORDER; order++) {
4833                         struct free_area *area = &zone->free_area[order];
4834                         int type;
4835
4836                         nr[order] = area->nr_free;
4837                         total += nr[order] << order;
4838
4839                         types[order] = 0;
4840                         for (type = 0; type < MIGRATE_TYPES; type++) {
4841                                 if (!list_empty(&area->free_list[type]))
4842                                         types[order] |= 1 << type;
4843                         }
4844                 }
4845                 spin_unlock_irqrestore(&zone->lock, flags);
4846                 for (order = 0; order < MAX_ORDER; order++) {
4847                         printk(KERN_CONT "%lu*%lukB ",
4848                                nr[order], K(1UL) << order);
4849                         if (nr[order])
4850                                 show_migration_types(types[order]);
4851                 }
4852                 printk(KERN_CONT "= %lukB\n", K(total));
4853         }
4854
4855         hugetlb_show_meminfo();
4856
4857         printk("%ld total pagecache pages\n", global_node_page_state(NR_FILE_PAGES));
4858
4859         show_swap_cache_info();
4860 }
4861
4862 static void zoneref_set_zone(struct zone *zone, struct zoneref *zoneref)
4863 {
4864         zoneref->zone = zone;
4865         zoneref->zone_idx = zone_idx(zone);
4866 }
4867
4868 /*
4869  * Builds allocation fallback zone lists.
4870  *
4871  * Add all populated zones of a node to the zonelist.
4872  */
4873 static int build_zonerefs_node(pg_data_t *pgdat, struct zoneref *zonerefs)
4874 {
4875         struct zone *zone;
4876         enum zone_type zone_type = MAX_NR_ZONES;
4877         int nr_zones = 0;
4878
4879         do {
4880                 zone_type--;
4881                 zone = pgdat->node_zones + zone_type;
4882                 if (managed_zone(zone)) {
4883                         zoneref_set_zone(zone, &zonerefs[nr_zones++]);
4884                         check_highest_zone(zone_type);
4885                 }
4886         } while (zone_type);
4887
4888         return nr_zones;
4889 }
4890
4891 #ifdef CONFIG_NUMA
4892
4893 static int __parse_numa_zonelist_order(char *s)
4894 {
4895         /*
4896          * We used to support different zonlists modes but they turned
4897          * out to be just not useful. Let's keep the warning in place
4898          * if somebody still use the cmd line parameter so that we do
4899          * not fail it silently
4900          */
4901         if (!(*s == 'd' || *s == 'D' || *s == 'n' || *s == 'N')) {
4902                 pr_warn("Ignoring unsupported numa_zonelist_order value:  %s\n", s);
4903                 return -EINVAL;
4904         }
4905         return 0;
4906 }
4907
4908 static __init int setup_numa_zonelist_order(char *s)
4909 {
4910         if (!s)
4911                 return 0;
4912
4913         return __parse_numa_zonelist_order(s);
4914 }
4915 early_param("numa_zonelist_order", setup_numa_zonelist_order);
4916
4917 char numa_zonelist_order[] = "Node";
4918
4919 /*
4920  * sysctl handler for numa_zonelist_order
4921  */
4922 int numa_zonelist_order_handler(struct ctl_table *table, int write,
4923                 void __user *buffer, size_t *length,
4924                 loff_t *ppos)
4925 {
4926         char *str;
4927         int ret;
4928
4929         if (!write)
4930                 return proc_dostring(table, write, buffer, length, ppos);
4931         str = memdup_user_nul(buffer, 16);
4932         if (IS_ERR(str))
4933                 return PTR_ERR(str);
4934
4935         ret = __parse_numa_zonelist_order(str);
4936         kfree(str);
4937         return ret;
4938 }
4939
4940
4941 #define MAX_NODE_LOAD (nr_online_nodes)
4942 static int node_load[MAX_NUMNODES];
4943
4944 /**
4945  * find_next_best_node - find the next node that should appear in a given node's fallback list
4946  * @node: node whose fallback list we're appending
4947  * @used_node_mask: nodemask_t of already used nodes
4948  *
4949  * We use a number of factors to determine which is the next node that should
4950  * appear on a given node's fallback list.  The node should not have appeared
4951  * already in @node's fallback list, and it should be the next closest node
4952  * according to the distance array (which contains arbitrary distance values
4953  * from each node to each node in the system), and should also prefer nodes
4954  * with no CPUs, since presumably they'll have very little allocation pressure
4955  * on them otherwise.
4956  * It returns -1 if no node is found.
4957  */
4958 static int find_next_best_node(int node, nodemask_t *used_node_mask)
4959 {
4960         int n, val;
4961         int min_val = INT_MAX;
4962         int best_node = NUMA_NO_NODE;
4963         const struct cpumask *tmp = cpumask_of_node(0);
4964
4965         /* Use the local node if we haven't already */
4966         if (!node_isset(node, *used_node_mask)) {
4967                 node_set(node, *used_node_mask);
4968                 return node;
4969         }
4970
4971         for_each_node_state(n, N_MEMORY) {
4972
4973                 /* Don't want a node to appear more than once */
4974                 if (node_isset(n, *used_node_mask))
4975                         continue;
4976
4977                 /* Use the distance array to find the distance */
4978                 val = node_distance(node, n);
4979
4980                 /* Penalize nodes under us ("prefer the next node") */
4981                 val += (n < node);
4982
4983                 /* Give preference to headless and unused nodes */
4984                 tmp = cpumask_of_node(n);
4985                 if (!cpumask_empty(tmp))
4986                         val += PENALTY_FOR_NODE_WITH_CPUS;
4987
4988                 /* Slight preference for less loaded node */
4989                 val *= (MAX_NODE_LOAD*MAX_NUMNODES);
4990                 val += node_load[n];
4991
4992                 if (val < min_val) {
4993                         min_val = val;
4994                         best_node = n;
4995                 }
4996         }
4997
4998         if (best_node >= 0)
4999                 node_set(best_node, *used_node_mask);
5000
5001         return best_node;
5002 }
5003
5004
5005 /*
5006  * Build zonelists ordered by node and zones within node.
5007  * This results in maximum locality--normal zone overflows into local
5008  * DMA zone, if any--but risks exhausting DMA zone.
5009  */
5010 static void build_zonelists_in_node_order(pg_data_t *pgdat, int *node_order,
5011                 unsigned nr_nodes)
5012 {
5013         struct zoneref *zonerefs;
5014         int i;
5015
5016         zonerefs = pgdat->node_zonelists[ZONELIST_FALLBACK]._zonerefs;
5017
5018         for (i = 0; i < nr_nodes; i++) {
5019                 int nr_zones;
5020
5021                 pg_data_t *node = NODE_DATA(node_order[i]);
5022
5023                 nr_zones = build_zonerefs_node(node, zonerefs);
5024                 zonerefs += nr_zones;
5025         }
5026         zonerefs->zone = NULL;
5027         zonerefs->zone_idx = 0;
5028 }
5029
5030 /*
5031  * Build gfp_thisnode zonelists
5032  */
5033 static void build_thisnode_zonelists(pg_data_t *pgdat)
5034 {
5035         struct zoneref *zonerefs;
5036         int nr_zones;
5037
5038         zonerefs = pgdat->node_zonelists[ZONELIST_NOFALLBACK]._zonerefs;
5039         nr_zones = build_zonerefs_node(pgdat, zonerefs);
5040         zonerefs += nr_zones;
5041         zonerefs->zone = NULL;
5042         zonerefs->zone_idx = 0;
5043 }
5044
5045 /*
5046  * Build zonelists ordered by zone and nodes within zones.
5047  * This results in conserving DMA zone[s] until all Normal memory is
5048  * exhausted, but results in overflowing to remote node while memory
5049  * may still exist in local DMA zone.
5050  */
5051
5052 static void build_zonelists(pg_data_t *pgdat)
5053 {
5054         static int node_order[MAX_NUMNODES];
5055         int node, load, nr_nodes = 0;
5056         nodemask_t used_mask;
5057         int local_node, prev_node;
5058
5059         /* NUMA-aware ordering of nodes */
5060         local_node = pgdat->node_id;
5061         load = nr_online_nodes;
5062         prev_node = local_node;
5063         nodes_clear(used_mask);
5064
5065         memset(node_order, 0, sizeof(node_order));
5066         while ((node = find_next_best_node(local_node, &used_mask)) >= 0) {
5067                 /*
5068                  * We don't want to pressure a particular node.
5069                  * So adding penalty to the first node in same
5070                  * distance group to make it round-robin.
5071                  */
5072                 if (node_distance(local_node, node) !=
5073                     node_distance(local_node, prev_node))
5074                         node_load[node] = load;
5075
5076                 node_order[nr_nodes++] = node;
5077                 prev_node = node;
5078                 load--;
5079         }
5080
5081         build_zonelists_in_node_order(pgdat, node_order, nr_nodes);
5082         build_thisnode_zonelists(pgdat);
5083 }
5084
5085 #ifdef CONFIG_HAVE_MEMORYLESS_NODES
5086 /*
5087  * Return node id of node used for "local" allocations.
5088  * I.e., first node id of first zone in arg node's generic zonelist.
5089  * Used for initializing percpu 'numa_mem', which is used primarily
5090  * for kernel allocations, so use GFP_KERNEL flags to locate zonelist.
5091  */
5092 int local_memory_node(int node)
5093 {
5094         struct zoneref *z;
5095
5096         z = first_zones_zonelist(node_zonelist(node, GFP_KERNEL),
5097                                    gfp_zone(GFP_KERNEL),
5098                                    NULL);
5099         return z->zone->node;
5100 }
5101 #endif
5102
5103 static void setup_min_unmapped_ratio(void);
5104 static void setup_min_slab_ratio(void);
5105 #else   /* CONFIG_NUMA */
5106
5107 static void build_zonelists(pg_data_t *pgdat)
5108 {
5109         int node, local_node;
5110         struct zoneref *zonerefs;
5111         int nr_zones;
5112
5113         local_node = pgdat->node_id;
5114
5115         zonerefs = pgdat->node_zonelists[ZONELIST_FALLBACK]._zonerefs;
5116         nr_zones = build_zonerefs_node(pgdat, zonerefs);
5117         zonerefs += nr_zones;
5118
5119         /*
5120          * Now we build the zonelist so that it contains the zones
5121          * of all the other nodes.
5122          * We don't want to pressure a particular node, so when
5123          * building the zones for node N, we make sure that the
5124          * zones coming right after the local ones are those from
5125          * node N+1 (modulo N)
5126          */
5127         for (node = local_node + 1; node < MAX_NUMNODES; node++) {
5128                 if (!node_online(node))
5129                         continue;
5130                 nr_zones = build_zonerefs_node(NODE_DATA(node), zonerefs);
5131                 zonerefs += nr_zones;
5132         }
5133         for (node = 0; node < local_node; node++) {
5134                 if (!node_online(node))
5135                         continue;
5136                 nr_zones = build_zonerefs_node(NODE_DATA(node), zonerefs);
5137                 zonerefs += nr_zones;
5138         }
5139
5140         zonerefs->zone = NULL;
5141         zonerefs->zone_idx = 0;
5142 }
5143
5144 #endif  /* CONFIG_NUMA */
5145
5146 /*
5147  * Boot pageset table. One per cpu which is going to be used for all
5148  * zones and all nodes. The parameters will be set in such a way
5149  * that an item put on a list will immediately be handed over to
5150  * the buddy list. This is safe since pageset manipulation is done
5151  * with interrupts disabled.
5152  *
5153  * The boot_pagesets must be kept even after bootup is complete for
5154  * unused processors and/or zones. They do play a role for bootstrapping
5155  * hotplugged processors.
5156  *
5157  * zoneinfo_show() and maybe other functions do
5158  * not check if the processor is online before following the pageset pointer.
5159  * Other parts of the kernel may not check if the zone is available.
5160  */
5161 static void setup_pageset(struct per_cpu_pageset *p, unsigned long batch);
5162 static DEFINE_PER_CPU(struct per_cpu_pageset, boot_pageset);
5163 static DEFINE_PER_CPU(struct per_cpu_nodestat, boot_nodestats);
5164
5165 static void __build_all_zonelists(void *data)
5166 {
5167         int nid;
5168         int __maybe_unused cpu;
5169         pg_data_t *self = data;
5170         static DEFINE_SPINLOCK(lock);
5171
5172         spin_lock(&lock);
5173
5174 #ifdef CONFIG_NUMA
5175         memset(node_load, 0, sizeof(node_load));
5176 #endif
5177
5178         /*
5179          * This node is hotadded and no memory is yet present.   So just
5180          * building zonelists is fine - no need to touch other nodes.
5181          */
5182         if (self && !node_online(self->node_id)) {
5183                 build_zonelists(self);
5184         } else {
5185                 for_each_online_node(nid) {
5186                         pg_data_t *pgdat = NODE_DATA(nid);
5187
5188                         build_zonelists(pgdat);
5189                 }
5190
5191 #ifdef CONFIG_HAVE_MEMORYLESS_NODES
5192                 /*
5193                  * We now know the "local memory node" for each node--
5194                  * i.e., the node of the first zone in the generic zonelist.
5195                  * Set up numa_mem percpu variable for on-line cpus.  During
5196                  * boot, only the boot cpu should be on-line;  we'll init the
5197                  * secondary cpus' numa_mem as they come on-line.  During
5198                  * node/memory hotplug, we'll fixup all on-line cpus.
5199                  */
5200                 for_each_online_cpu(cpu)
5201                         set_cpu_numa_mem(cpu, local_memory_node(cpu_to_node(cpu)));
5202 #endif
5203         }
5204
5205         spin_unlock(&lock);
5206 }
5207
5208 static noinline void __init
5209 build_all_zonelists_init(void)
5210 {
5211         int cpu;
5212
5213         __build_all_zonelists(NULL);
5214
5215         /*
5216          * Initialize the boot_pagesets that are going to be used
5217          * for bootstrapping processors. The real pagesets for
5218          * each zone will be allocated later when the per cpu
5219          * allocator is available.
5220          *
5221          * boot_pagesets are used also for bootstrapping offline
5222          * cpus if the system is already booted because the pagesets
5223          * are needed to initialize allocators on a specific cpu too.
5224          * F.e. the percpu allocator needs the page allocator which
5225          * needs the percpu allocator in order to allocate its pagesets
5226          * (a chicken-egg dilemma).
5227          */
5228         for_each_possible_cpu(cpu)
5229                 setup_pageset(&per_cpu(boot_pageset, cpu), 0);
5230
5231         mminit_verify_zonelist();
5232         cpuset_init_current_mems_allowed();
5233 }
5234
5235 /*
5236  * unless system_state == SYSTEM_BOOTING.
5237  *
5238  * __ref due to call of __init annotated helper build_all_zonelists_init
5239  * [protected by SYSTEM_BOOTING].
5240  */
5241 void __ref build_all_zonelists(pg_data_t *pgdat)
5242 {
5243         if (system_state == SYSTEM_BOOTING) {
5244                 build_all_zonelists_init();
5245         } else {
5246                 __build_all_zonelists(pgdat);
5247                 /* cpuset refresh routine should be here */
5248         }
5249         vm_total_pages = nr_free_pagecache_pages();
5250         /*
5251          * Disable grouping by mobility if the number of pages in the
5252          * system is too low to allow the mechanism to work. It would be
5253          * more accurate, but expensive to check per-zone. This check is
5254          * made on memory-hotadd so a system can start with mobility
5255          * disabled and enable it later
5256          */
5257         if (vm_total_pages < (pageblock_nr_pages * MIGRATE_TYPES))
5258                 page_group_by_mobility_disabled = 1;
5259         else
5260                 page_group_by_mobility_disabled = 0;
5261
5262         pr_info("Built %i zonelists, mobility grouping %s.  Total pages: %ld\n",
5263                 nr_online_nodes,
5264                 page_group_by_mobility_disabled ? "off" : "on",
5265                 vm_total_pages);
5266 #ifdef CONFIG_NUMA
5267         pr_info("Policy zone: %s\n", zone_names[policy_zone]);
5268 #endif
5269 }
5270
5271 /*
5272  * Initially all pages are reserved - free ones are freed
5273  * up by free_all_bootmem() once the early boot process is
5274  * done. Non-atomic initialization, single-pass.
5275  */
5276 void __meminit memmap_init_zone(unsigned long size, int nid, unsigned long zone,
5277                 unsigned long start_pfn, enum memmap_context context)
5278 {
5279         struct vmem_altmap *altmap = to_vmem_altmap(__pfn_to_phys(start_pfn));
5280         unsigned long end_pfn = start_pfn + size;
5281         pg_data_t *pgdat = NODE_DATA(nid);
5282         unsigned long pfn;
5283         unsigned long nr_initialised = 0;
5284 #ifdef CONFIG_HAVE_MEMBLOCK_NODE_MAP
5285         struct memblock_region *r = NULL, *tmp;
5286 #endif
5287
5288         if (highest_memmap_pfn < end_pfn - 1)
5289                 highest_memmap_pfn = end_pfn - 1;
5290
5291         /*
5292          * Honor reservation requested by the driver for this ZONE_DEVICE
5293          * memory
5294          */
5295         if (altmap && start_pfn == altmap->base_pfn)
5296                 start_pfn += altmap->reserve;
5297
5298         for (pfn = start_pfn; pfn < end_pfn; pfn++) {
5299                 /*
5300                  * There can be holes in boot-time mem_map[]s handed to this
5301                  * function.  They do not exist on hotplugged memory.
5302                  */
5303                 if (context != MEMMAP_EARLY)
5304                         goto not_early;
5305
5306                 if (!early_pfn_valid(pfn))
5307                         continue;
5308                 if (!early_pfn_in_nid(pfn, nid))
5309                         continue;
5310                 if (!update_defer_init(pgdat, pfn, end_pfn, &nr_initialised))
5311                         break;
5312
5313 #ifdef CONFIG_HAVE_MEMBLOCK_NODE_MAP
5314                 /*
5315                  * Check given memblock attribute by firmware which can affect
5316                  * kernel memory layout.  If zone==ZONE_MOVABLE but memory is
5317                  * mirrored, it's an overlapped memmap init. skip it.
5318                  */
5319                 if (mirrored_kernelcore && zone == ZONE_MOVABLE) {
5320                         if (!r || pfn >= memblock_region_memory_end_pfn(r)) {
5321                                 for_each_memblock(memory, tmp)
5322                                         if (pfn < memblock_region_memory_end_pfn(tmp))
5323                                                 break;
5324                                 r = tmp;
5325                         }
5326                         if (pfn >= memblock_region_memory_base_pfn(r) &&
5327                             memblock_is_mirror(r)) {
5328                                 /* already initialized as NORMAL */
5329                                 pfn = memblock_region_memory_end_pfn(r);
5330                                 continue;
5331                         }
5332                 }
5333 #endif
5334
5335 not_early:
5336                 /*
5337                  * Mark the block movable so that blocks are reserved for
5338                  * movable at startup. This will force kernel allocations
5339                  * to reserve their blocks rather than leaking throughout
5340                  * the address space during boot when many long-lived
5341                  * kernel allocations are made.
5342                  *
5343                  * bitmap is created for zone's valid pfn range. but memmap
5344                  * can be created for invalid pages (for alignment)
5345                  * check here not to call set_pageblock_migratetype() against
5346                  * pfn out of zone.
5347                  */
5348                 if (!(pfn & (pageblock_nr_pages - 1))) {
5349                         struct page *page = pfn_to_page(pfn);
5350
5351                         __init_single_page(page, pfn, zone, nid);
5352                         set_pageblock_migratetype(page, MIGRATE_MOVABLE);
5353                         cond_resched();
5354                 } else {
5355                         __init_single_pfn(pfn, zone, nid);
5356                 }
5357         }
5358 }
5359
5360 static void __meminit zone_init_free_lists(struct zone *zone)
5361 {
5362         unsigned int order, t;
5363         for_each_migratetype_order(order, t) {
5364                 INIT_LIST_HEAD(&zone->free_area[order].free_list[t]);
5365                 zone->free_area[order].nr_free = 0;
5366         }
5367 }
5368
5369 #ifndef __HAVE_ARCH_MEMMAP_INIT
5370 #define memmap_init(size, nid, zone, start_pfn) \
5371         memmap_init_zone((size), (nid), (zone), (start_pfn), MEMMAP_EARLY)
5372 #endif
5373
5374 static int zone_batchsize(struct zone *zone)
5375 {
5376 #ifdef CONFIG_MMU
5377         int batch;
5378
5379         /*
5380          * The per-cpu-pages pools are set to around 1000th of the
5381          * size of the zone.  But no more than 1/2 of a meg.
5382          *
5383          * OK, so we don't know how big the cache is.  So guess.
5384          */
5385         batch = zone->managed_pages / 1024;
5386         if (batch * PAGE_SIZE > 512 * 1024)
5387                 batch = (512 * 1024) / PAGE_SIZE;
5388         batch /= 4;             /* We effectively *= 4 below */
5389         if (batch < 1)
5390                 batch = 1;
5391
5392         /*
5393          * Clamp the batch to a 2^n - 1 value. Having a power
5394          * of 2 value was found to be more likely to have
5395          * suboptimal cache aliasing properties in some cases.
5396          *
5397          * For example if 2 tasks are alternately allocating
5398          * batches of pages, one task can end up with a lot
5399          * of pages of one half of the possible page colors
5400          * and the other with pages of the other colors.
5401          */
5402         batch = rounddown_pow_of_two(batch + batch/2) - 1;
5403
5404         return batch;
5405
5406 #else
5407         /* The deferral and batching of frees should be suppressed under NOMMU
5408          * conditions.
5409          *
5410          * The problem is that NOMMU needs to be able to allocate large chunks
5411          * of contiguous memory as there's no hardware page translation to
5412          * assemble apparent contiguous memory from discontiguous pages.
5413          *
5414          * Queueing large contiguous runs of pages for batching, however,
5415          * causes the pages to actually be freed in smaller chunks.  As there
5416          * can be a significant delay between the individual batches being
5417          * recycled, this leads to the once large chunks of space being
5418          * fragmented and becoming unavailable for high-order allocations.
5419          */
5420         return 0;
5421 #endif
5422 }
5423
5424 /*
5425  * pcp->high and pcp->batch values are related and dependent on one another:
5426  * ->batch must never be higher then ->high.
5427  * The following function updates them in a safe manner without read side
5428  * locking.
5429  *
5430  * Any new users of pcp->batch and pcp->high should ensure they can cope with
5431  * those fields changing asynchronously (acording the the above rule).
5432  *
5433  * mutex_is_locked(&pcp_batch_high_lock) required when calling this function
5434  * outside of boot time (or some other assurance that no concurrent updaters
5435  * exist).
5436  */
5437 static void pageset_update(struct per_cpu_pages *pcp, unsigned long high,
5438                 unsigned long batch)
5439 {
5440        /* start with a fail safe value for batch */
5441         pcp->batch = 1;
5442         smp_wmb();
5443
5444        /* Update high, then batch, in order */
5445         pcp->high = high;
5446         smp_wmb();
5447
5448         pcp->batch = batch;
5449 }
5450
5451 /* a companion to pageset_set_high() */
5452 static void pageset_set_batch(struct per_cpu_pageset *p, unsigned long batch)
5453 {
5454         pageset_update(&p->pcp, 6 * batch, max(1UL, 1 * batch));
5455 }
5456
5457 static void pageset_init(struct per_cpu_pageset *p)
5458 {
5459         struct per_cpu_pages *pcp;
5460         int migratetype;
5461
5462         memset(p, 0, sizeof(*p));
5463
5464         pcp = &p->pcp;
5465         pcp->count = 0;
5466         for (migratetype = 0; migratetype < MIGRATE_PCPTYPES; migratetype++)
5467                 INIT_LIST_HEAD(&pcp->lists[migratetype]);
5468 }
5469
5470 static void setup_pageset(struct per_cpu_pageset *p, unsigned long batch)
5471 {
5472         pageset_init(p);
5473         pageset_set_batch(p, batch);
5474 }
5475
5476 /*
5477  * pageset_set_high() sets the high water mark for hot per_cpu_pagelist
5478  * to the value high for the pageset p.
5479  */
5480 static void pageset_set_high(struct per_cpu_pageset *p,
5481                                 unsigned long high)
5482 {
5483         unsigned long batch = max(1UL, high / 4);
5484         if ((high / 4) > (PAGE_SHIFT * 8))
5485                 batch = PAGE_SHIFT * 8;
5486
5487         pageset_update(&p->pcp, high, batch);
5488 }
5489
5490 static void pageset_set_high_and_batch(struct zone *zone,
5491                                        struct per_cpu_pageset *pcp)
5492 {
5493         if (percpu_pagelist_fraction)
5494                 pageset_set_high(pcp,
5495                         (zone->managed_pages /
5496                                 percpu_pagelist_fraction));
5497         else
5498                 pageset_set_batch(pcp, zone_batchsize(zone));
5499 }
5500
5501 static void __meminit zone_pageset_init(struct zone *zone, int cpu)
5502 {
5503         struct per_cpu_pageset *pcp = per_cpu_ptr(zone->pageset, cpu);
5504
5505         pageset_init(pcp);
5506         pageset_set_high_and_batch(zone, pcp);
5507 }
5508
5509 void __meminit setup_zone_pageset(struct zone *zone)
5510 {
5511         int cpu;
5512         zone->pageset = alloc_percpu(struct per_cpu_pageset);
5513         for_each_possible_cpu(cpu)
5514                 zone_pageset_init(zone, cpu);
5515 }
5516
5517 /*
5518  * Allocate per cpu pagesets and initialize them.
5519  * Before this call only boot pagesets were available.
5520  */
5521 void __init setup_per_cpu_pageset(void)
5522 {
5523         struct pglist_data *pgdat;
5524         struct zone *zone;
5525
5526         for_each_populated_zone(zone)
5527                 setup_zone_pageset(zone);
5528
5529         for_each_online_pgdat(pgdat)
5530                 pgdat->per_cpu_nodestats =
5531                         alloc_percpu(struct per_cpu_nodestat);
5532 }
5533
5534 static __meminit void zone_pcp_init(struct zone *zone)
5535 {
5536         /*
5537          * per cpu subsystem is not up at this point. The following code
5538          * relies on the ability of the linker to provide the
5539          * offset of a (static) per cpu variable into the per cpu area.
5540          */
5541         zone->pageset = &boot_pageset;
5542
5543         if (populated_zone(zone))
5544                 printk(KERN_DEBUG "  %s zone: %lu pages, LIFO batch:%u\n",
5545                         zone->name, zone->present_pages,
5546                                          zone_batchsize(zone));
5547 }
5548
5549 void __meminit init_currently_empty_zone(struct zone *zone,
5550                                         unsigned long zone_start_pfn,
5551                                         unsigned long size)
5552 {
5553         struct pglist_data *pgdat = zone->zone_pgdat;
5554         int zone_idx = zone_idx(zone) + 1;
5555
5556         if (zone_idx > pgdat->nr_zones)
5557                 pgdat->nr_zones = zone_idx;
5558
5559         zone->zone_start_pfn = zone_start_pfn;
5560
5561         mminit_dprintk(MMINIT_TRACE, "memmap_init",
5562                         "Initialising map node %d zone %lu pfns %lu -> %lu\n",
5563                         pgdat->node_id,
5564                         (unsigned long)zone_idx(zone),
5565                         zone_start_pfn, (zone_start_pfn + size));
5566
5567         zone_init_free_lists(zone);
5568         zone->initialized = 1;
5569 }
5570
5571 #ifdef CONFIG_HAVE_MEMBLOCK_NODE_MAP
5572 #ifndef CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID
5573
5574 /*
5575  * Required by SPARSEMEM. Given a PFN, return what node the PFN is on.
5576  */
5577 int __meminit __early_pfn_to_nid(unsigned long pfn,
5578                                         struct mminit_pfnnid_cache *state)
5579 {
5580         unsigned long start_pfn, end_pfn;
5581         int nid;
5582
5583         if (state->last_start <= pfn && pfn < state->last_end)
5584                 return state->last_nid;
5585
5586         nid = memblock_search_pfn_nid(pfn, &start_pfn, &end_pfn);
5587         if (nid != -1) {
5588                 state->last_start = start_pfn;
5589                 state->last_end = end_pfn;
5590                 state->last_nid = nid;
5591         }
5592
5593         return nid;
5594 }
5595 #endif /* CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID */
5596
5597 /**
5598  * free_bootmem_with_active_regions - Call memblock_free_early_nid for each active range
5599  * @nid: The node to free memory on. If MAX_NUMNODES, all nodes are freed.
5600  * @max_low_pfn: The highest PFN that will be passed to memblock_free_early_nid
5601  *
5602  * If an architecture guarantees that all ranges registered contain no holes
5603  * and may be freed, this this function may be used instead of calling
5604  * memblock_free_early_nid() manually.
5605  */
5606 void __init free_bootmem_with_active_regions(int nid, unsigned long max_low_pfn)
5607 {
5608         unsigned long start_pfn, end_pfn;
5609         int i, this_nid;
5610
5611         for_each_mem_pfn_range(i, nid, &start_pfn, &end_pfn, &this_nid) {
5612                 start_pfn = min(start_pfn, max_low_pfn);
5613                 end_pfn = min(end_pfn, max_low_pfn);
5614
5615                 if (start_pfn < end_pfn)
5616                         memblock_free_early_nid(PFN_PHYS(start_pfn),
5617                                         (end_pfn - start_pfn) << PAGE_SHIFT,
5618                                         this_nid);
5619         }
5620 }
5621
5622 /**
5623  * sparse_memory_present_with_active_regions - Call memory_present for each active range
5624  * @nid: The node to call memory_present for. If MAX_NUMNODES, all nodes will be used.
5625  *
5626  * If an architecture guarantees that all ranges registered contain no holes and may
5627  * be freed, this function may be used instead of calling memory_present() manually.
5628  */
5629 void __init sparse_memory_present_with_active_regions(int nid)
5630 {
5631         unsigned long start_pfn, end_pfn;
5632         int i, this_nid;
5633
5634         for_each_mem_pfn_range(i, nid, &start_pfn, &end_pfn, &this_nid)
5635                 memory_present(this_nid, start_pfn, end_pfn);
5636 }
5637
5638 /**
5639  * get_pfn_range_for_nid - Return the start and end page frames for a node
5640  * @nid: The nid to return the range for. If MAX_NUMNODES, the min and max PFN are returned.
5641  * @start_pfn: Passed by reference. On return, it will have the node start_pfn.
5642  * @end_pfn: Passed by reference. On return, it will have the node end_pfn.
5643  *
5644  * It returns the start and end page frame of a node based on information
5645  * provided by memblock_set_node(). If called for a node
5646  * with no available memory, a warning is printed and the start and end
5647  * PFNs will be 0.
5648  */
5649 void __meminit get_pfn_range_for_nid(unsigned int nid,
5650                         unsigned long *start_pfn, unsigned long *end_pfn)
5651 {
5652         unsigned long this_start_pfn, this_end_pfn;
5653         int i;
5654
5655         *start_pfn = -1UL;
5656         *end_pfn = 0;
5657
5658         for_each_mem_pfn_range(i, nid, &this_start_pfn, &this_end_pfn, NULL) {
5659                 *start_pfn = min(*start_pfn, this_start_pfn);
5660                 *end_pfn = max(*end_pfn, this_end_pfn);
5661         }
5662
5663         if (*start_pfn == -1UL)
5664                 *start_pfn = 0;
5665 }
5666
5667 /*
5668  * This finds a zone that can be used for ZONE_MOVABLE pages. The
5669  * assumption is made that zones within a node are ordered in monotonic
5670  * increasing memory addresses so that the "highest" populated zone is used
5671  */
5672 static void __init find_usable_zone_for_movable(void)
5673 {
5674         int zone_index;
5675         for (zone_index = MAX_NR_ZONES - 1; zone_index >= 0; zone_index--) {
5676                 if (zone_index == ZONE_MOVABLE)
5677                         continue;
5678
5679                 if (arch_zone_highest_possible_pfn[zone_index] >
5680                                 arch_zone_lowest_possible_pfn[zone_index])
5681                         break;
5682         }
5683
5684         VM_BUG_ON(zone_index == -1);
5685         movable_zone = zone_index;
5686 }
5687
5688 /*
5689  * The zone ranges provided by the architecture do not include ZONE_MOVABLE
5690  * because it is sized independent of architecture. Unlike the other zones,
5691  * the starting point for ZONE_MOVABLE is not fixed. It may be different
5692  * in each node depending on the size of each node and how evenly kernelcore
5693  * is distributed. This helper function adjusts the zone ranges
5694  * provided by the architecture for a given node by using the end of the
5695  * highest usable zone for ZONE_MOVABLE. This preserves the assumption that
5696  * zones within a node are in order of monotonic increases memory addresses
5697  */
5698 static void __meminit adjust_zone_range_for_zone_movable(int nid,
5699                                         unsigned long zone_type,
5700                                         unsigned long node_start_pfn,
5701                                         unsigned long node_end_pfn,
5702                                         unsigned long *zone_start_pfn,
5703                                         unsigned long *zone_end_pfn)
5704 {
5705         /* Only adjust if ZONE_MOVABLE is on this node */
5706         if (zone_movable_pfn[nid]) {
5707                 /* Size ZONE_MOVABLE */
5708                 if (zone_type == ZONE_MOVABLE) {
5709                         *zone_start_pfn = zone_movable_pfn[nid];
5710                         *zone_end_pfn = min(node_end_pfn,
5711                                 arch_zone_highest_possible_pfn[movable_zone]);
5712
5713                 /* Adjust for ZONE_MOVABLE starting within this range */
5714                 } else if (!mirrored_kernelcore &&
5715                         *zone_start_pfn < zone_movable_pfn[nid] &&
5716                         *zone_end_pfn > zone_movable_pfn[nid]) {
5717                         *zone_end_pfn = zone_movable_pfn[nid];
5718
5719                 /* Check if this whole range is within ZONE_MOVABLE */
5720                 } else if (*zone_start_pfn >= zone_movable_pfn[nid])
5721                         *zone_start_pfn = *zone_end_pfn;
5722         }
5723 }
5724
5725 /*
5726  * Return the number of pages a zone spans in a node, including holes
5727  * present_pages = zone_spanned_pages_in_node() - zone_absent_pages_in_node()
5728  */
5729 static unsigned long __meminit zone_spanned_pages_in_node(int nid,
5730                                         unsigned long zone_type,
5731                                         unsigned long node_start_pfn,
5732                                         unsigned long node_end_pfn,
5733                                         unsigned long *zone_start_pfn,
5734                                         unsigned long *zone_end_pfn,
5735                                         unsigned long *ignored)
5736 {
5737         unsigned long zone_low = arch_zone_lowest_possible_pfn[zone_type];
5738         unsigned long zone_high = arch_zone_highest_possible_pfn[zone_type];
5739         /* When hotadd a new node from cpu_up(), the node should be empty */
5740         if (!node_start_pfn && !node_end_pfn)
5741                 return 0;
5742
5743         /* Get the start and end of the zone */
5744         *zone_start_pfn = clamp(node_start_pfn, zone_low, zone_high);
5745         *zone_end_pfn = clamp(node_end_pfn, zone_low, zone_high);
5746         adjust_zone_range_for_zone_movable(nid, zone_type,
5747                                 node_start_pfn, node_end_pfn,
5748                                 zone_start_pfn, zone_end_pfn);
5749
5750         /* Check that this node has pages within the zone's required range */
5751         if (*zone_end_pfn < node_start_pfn || *zone_start_pfn > node_end_pfn)
5752                 return 0;
5753
5754         /* Move the zone boundaries inside the node if necessary */
5755         *zone_end_pfn = min(*zone_end_pfn, node_end_pfn);
5756         *zone_start_pfn = max(*zone_start_pfn, node_start_pfn);
5757
5758         /* Return the spanned pages */
5759         return *zone_end_pfn - *zone_start_pfn;
5760 }
5761
5762 /*
5763  * Return the number of holes in a range on a node. If nid is MAX_NUMNODES,
5764  * then all holes in the requested range will be accounted for.
5765  */
5766 unsigned long __meminit __absent_pages_in_range(int nid,
5767                                 unsigned long range_start_pfn,
5768                                 unsigned long range_end_pfn)
5769 {
5770         unsigned long nr_absent = range_end_pfn - range_start_pfn;
5771         unsigned long start_pfn, end_pfn;
5772         int i;
5773
5774         for_each_mem_pfn_range(i, nid, &start_pfn, &end_pfn, NULL) {
5775                 start_pfn = clamp(start_pfn, range_start_pfn, range_end_pfn);
5776                 end_pfn = clamp(end_pfn, range_start_pfn, range_end_pfn);
5777                 nr_absent -= end_pfn - start_pfn;
5778         }
5779         return nr_absent;
5780 }
5781
5782 /**
5783  * absent_pages_in_range - Return number of page frames in holes within a range
5784  * @start_pfn: The start PFN to start searching for holes
5785  * @end_pfn: The end PFN to stop searching for holes
5786  *
5787  * It returns the number of pages frames in memory holes within a range.
5788  */
5789 unsigned long __init absent_pages_in_range(unsigned long start_pfn,
5790                                                         unsigned long end_pfn)
5791 {
5792         return __absent_pages_in_range(MAX_NUMNODES, start_pfn, end_pfn);
5793 }
5794
5795 /* Return the number of page frames in holes in a zone on a node */
5796 static unsigned long __meminit zone_absent_pages_in_node(int nid,
5797                                         unsigned long zone_type,
5798                                         unsigned long node_start_pfn,
5799                                         unsigned long node_end_pfn,
5800                                         unsigned long *ignored)
5801 {
5802         unsigned long zone_low = arch_zone_lowest_possible_pfn[zone_type];
5803         unsigned long zone_high = arch_zone_highest_possible_pfn[zone_type];
5804         unsigned long zone_start_pfn, zone_end_pfn;
5805         unsigned long nr_absent;
5806
5807         /* When hotadd a new node from cpu_up(), the node should be empty */
5808         if (!node_start_pfn && !node_end_pfn)
5809                 return 0;
5810
5811         zone_start_pfn = clamp(node_start_pfn, zone_low, zone_high);
5812         zone_end_pfn = clamp(node_end_pfn, zone_low, zone_high);
5813
5814         adjust_zone_range_for_zone_movable(nid, zone_type,
5815                         node_start_pfn, node_end_pfn,
5816                         &zone_start_pfn, &zone_end_pfn);
5817         nr_absent = __absent_pages_in_range(nid, zone_start_pfn, zone_end_pfn);
5818
5819         /*
5820          * ZONE_MOVABLE handling.
5821          * Treat pages to be ZONE_MOVABLE in ZONE_NORMAL as absent pages
5822          * and vice versa.
5823          */
5824         if (mirrored_kernelcore && zone_movable_pfn[nid]) {
5825                 unsigned long start_pfn, end_pfn;
5826                 struct memblock_region *r;
5827
5828                 for_each_memblock(memory, r) {
5829                         start_pfn = clamp(memblock_region_memory_base_pfn(r),
5830                                           zone_start_pfn, zone_end_pfn);
5831                         end_pfn = clamp(memblock_region_memory_end_pfn(r),
5832                                         zone_start_pfn, zone_end_pfn);
5833
5834                         if (zone_type == ZONE_MOVABLE &&
5835                             memblock_is_mirror(r))
5836                                 nr_absent += end_pfn - start_pfn;
5837
5838                         if (zone_type == ZONE_NORMAL &&
5839                             !memblock_is_mirror(r))
5840                                 nr_absent += end_pfn - start_pfn;
5841                 }
5842         }
5843
5844         return nr_absent;
5845 }
5846
5847 #else /* CONFIG_HAVE_MEMBLOCK_NODE_MAP */
5848 static inline unsigned long __meminit zone_spanned_pages_in_node(int nid,
5849                                         unsigned long zone_type,
5850                                         unsigned long node_start_pfn,
5851                                         unsigned long node_end_pfn,
5852                                         unsigned long *zone_start_pfn,
5853                                         unsigned long *zone_end_pfn,
5854                                         unsigned long *zones_size)
5855 {
5856         unsigned int zone;
5857
5858         *zone_start_pfn = node_start_pfn;
5859         for (zone = 0; zone < zone_type; zone++)
5860                 *zone_start_pfn += zones_size[zone];
5861
5862         *zone_end_pfn = *zone_start_pfn + zones_size[zone_type];
5863
5864         return zones_size[zone_type];
5865 }
5866
5867 static inline unsigned long __meminit zone_absent_pages_in_node(int nid,
5868                                                 unsigned long zone_type,
5869                                                 unsigned long node_start_pfn,
5870                                                 unsigned long node_end_pfn,
5871                                                 unsigned long *zholes_size)
5872 {
5873         if (!zholes_size)
5874                 return 0;
5875
5876         return zholes_size[zone_type];
5877 }
5878
5879 #endif /* CONFIG_HAVE_MEMBLOCK_NODE_MAP */
5880
5881 static void __meminit calculate_node_totalpages(struct pglist_data *pgdat,
5882                                                 unsigned long node_start_pfn,
5883                                                 unsigned long node_end_pfn,
5884                                                 unsigned long *zones_size,
5885                                                 unsigned long *zholes_size)
5886 {
5887         unsigned long realtotalpages = 0, totalpages = 0;
5888         enum zone_type i;
5889
5890         for (i = 0; i < MAX_NR_ZONES; i++) {
5891                 struct zone *zone = pgdat->node_zones + i;
5892                 unsigned long zone_start_pfn, zone_end_pfn;
5893                 unsigned long size, real_size;
5894
5895                 size = zone_spanned_pages_in_node(pgdat->node_id, i,
5896                                                   node_start_pfn,
5897                                                   node_end_pfn,
5898                                                   &zone_start_pfn,
5899                                                   &zone_end_pfn,
5900                                                   zones_size);
5901                 real_size = size - zone_absent_pages_in_node(pgdat->node_id, i,
5902                                                   node_start_pfn, node_end_pfn,
5903                                                   zholes_size);
5904                 if (size)
5905                         zone->zone_start_pfn = zone_start_pfn;
5906                 else
5907                         zone->zone_start_pfn = 0;
5908                 zone->spanned_pages = size;
5909                 zone->present_pages = real_size;
5910
5911                 totalpages += size;
5912                 realtotalpages += real_size;
5913         }
5914
5915         pgdat->node_spanned_pages = totalpages;
5916         pgdat->node_present_pages = realtotalpages;
5917         printk(KERN_DEBUG "On node %d totalpages: %lu\n", pgdat->node_id,
5918                                                         realtotalpages);
5919 }
5920
5921 #ifndef CONFIG_SPARSEMEM
5922 /*
5923  * Calculate the size of the zone->blockflags rounded to an unsigned long
5924  * Start by making sure zonesize is a multiple of pageblock_order by rounding
5925  * up. Then use 1 NR_PAGEBLOCK_BITS worth of bits per pageblock, finally
5926  * round what is now in bits to nearest long in bits, then return it in
5927  * bytes.
5928  */
5929 static unsigned long __init usemap_size(unsigned long zone_start_pfn, unsigned long zonesize)
5930 {
5931         unsigned long usemapsize;
5932
5933         zonesize += zone_start_pfn & (pageblock_nr_pages-1);
5934         usemapsize = roundup(zonesize, pageblock_nr_pages);
5935         usemapsize = usemapsize >> pageblock_order;
5936         usemapsize *= NR_PAGEBLOCK_BITS;
5937         usemapsize = roundup(usemapsize, 8 * sizeof(unsigned long));
5938
5939         return usemapsize / 8;
5940 }
5941
5942 static void __init setup_usemap(struct pglist_data *pgdat,
5943                                 struct zone *zone,
5944                                 unsigned long zone_start_pfn,
5945                                 unsigned long zonesize)
5946 {
5947         unsigned long usemapsize = usemap_size(zone_start_pfn, zonesize);
5948         zone->pageblock_flags = NULL;
5949         if (usemapsize)
5950                 zone->pageblock_flags =
5951                         memblock_virt_alloc_node_nopanic(usemapsize,
5952                                                          pgdat->node_id);
5953 }
5954 #else
5955 static inline void setup_usemap(struct pglist_data *pgdat, struct zone *zone,
5956                                 unsigned long zone_start_pfn, unsigned long zonesize) {}
5957 #endif /* CONFIG_SPARSEMEM */
5958
5959 #ifdef CONFIG_HUGETLB_PAGE_SIZE_VARIABLE
5960
5961 /* Initialise the number of pages represented by NR_PAGEBLOCK_BITS */
5962 void __paginginit set_pageblock_order(void)
5963 {
5964         unsigned int order;
5965
5966         /* Check that pageblock_nr_pages has not already been setup */
5967         if (pageblock_order)
5968                 return;
5969
5970         if (HPAGE_SHIFT > PAGE_SHIFT)
5971                 order = HUGETLB_PAGE_ORDER;
5972         else
5973                 order = MAX_ORDER - 1;
5974
5975         /*
5976          * Assume the largest contiguous order of interest is a huge page.
5977          * This value may be variable depending on boot parameters on IA64 and
5978          * powerpc.
5979          */
5980         pageblock_order = order;
5981 }
5982 #else /* CONFIG_HUGETLB_PAGE_SIZE_VARIABLE */
5983
5984 /*
5985  * When CONFIG_HUGETLB_PAGE_SIZE_VARIABLE is not set, set_pageblock_order()
5986  * is unused as pageblock_order is set at compile-time. See
5987  * include/linux/pageblock-flags.h for the values of pageblock_order based on
5988  * the kernel config
5989  */
5990 void __paginginit set_pageblock_order(void)
5991 {
5992 }
5993
5994 #endif /* CONFIG_HUGETLB_PAGE_SIZE_VARIABLE */
5995
5996 static unsigned long __paginginit calc_memmap_size(unsigned long spanned_pages,
5997                                                    unsigned long present_pages)
5998 {
5999         unsigned long pages = spanned_pages;
6000
6001         /*
6002          * Provide a more accurate estimation if there are holes within
6003          * the zone and SPARSEMEM is in use. If there are holes within the
6004          * zone, each populated memory region may cost us one or two extra
6005          * memmap pages due to alignment because memmap pages for each
6006          * populated regions may not be naturally aligned on page boundary.
6007          * So the (present_pages >> 4) heuristic is a tradeoff for that.
6008          */
6009         if (spanned_pages > present_pages + (present_pages >> 4) &&
6010             IS_ENABLED(CONFIG_SPARSEMEM))
6011                 pages = present_pages;
6012
6013         return PAGE_ALIGN(pages * sizeof(struct page)) >> PAGE_SHIFT;
6014 }
6015
6016 /*
6017  * Set up the zone data structures:
6018  *   - mark all pages reserved
6019  *   - mark all memory queues empty
6020  *   - clear the memory bitmaps
6021  *
6022  * NOTE: pgdat should get zeroed by caller.
6023  */
6024 static void __paginginit free_area_init_core(struct pglist_data *pgdat)
6025 {
6026         enum zone_type j;
6027         int nid = pgdat->node_id;
6028
6029         pgdat_resize_init(pgdat);
6030 #ifdef CONFIG_NUMA_BALANCING
6031         spin_lock_init(&pgdat->numabalancing_migrate_lock);
6032         pgdat->numabalancing_migrate_nr_pages = 0;
6033         pgdat->numabalancing_migrate_next_window = jiffies;
6034 #endif
6035 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
6036         spin_lock_init(&pgdat->split_queue_lock);
6037         INIT_LIST_HEAD(&pgdat->split_queue);
6038         pgdat->split_queue_len = 0;
6039 #endif
6040         init_waitqueue_head(&pgdat->kswapd_wait);
6041         init_waitqueue_head(&pgdat->pfmemalloc_wait);
6042 #ifdef CONFIG_COMPACTION
6043         init_waitqueue_head(&pgdat->kcompactd_wait);
6044 #endif
6045         pgdat_page_ext_init(pgdat);
6046         spin_lock_init(&pgdat->lru_lock);
6047         lruvec_init(node_lruvec(pgdat));
6048
6049         pgdat->per_cpu_nodestats = &boot_nodestats;
6050
6051         for (j = 0; j < MAX_NR_ZONES; j++) {
6052                 struct zone *zone = pgdat->node_zones + j;
6053                 unsigned long size, realsize, freesize, memmap_pages;
6054                 unsigned long zone_start_pfn = zone->zone_start_pfn;
6055
6056                 size = zone->spanned_pages;
6057                 realsize = freesize = zone->present_pages;
6058
6059                 /*
6060                  * Adjust freesize so that it accounts for how much memory
6061                  * is used by this zone for memmap. This affects the watermark
6062                  * and per-cpu initialisations
6063                  */
6064                 memmap_pages = calc_memmap_size(size, realsize);
6065                 if (!is_highmem_idx(j)) {
6066                         if (freesize >= memmap_pages) {
6067                                 freesize -= memmap_pages;
6068                                 if (memmap_pages)
6069                                         printk(KERN_DEBUG
6070                                                "  %s zone: %lu pages used for memmap\n",
6071                                                zone_names[j], memmap_pages);
6072                         } else
6073                                 pr_warn("  %s zone: %lu pages exceeds freesize %lu\n",
6074                                         zone_names[j], memmap_pages, freesize);
6075                 }
6076
6077                 /* Account for reserved pages */
6078                 if (j == 0 && freesize > dma_reserve) {
6079                         freesize -= dma_reserve;
6080                         printk(KERN_DEBUG "  %s zone: %lu pages reserved\n",
6081                                         zone_names[0], dma_reserve);
6082                 }
6083
6084                 if (!is_highmem_idx(j))
6085                         nr_kernel_pages += freesize;
6086                 /* Charge for highmem memmap if there are enough kernel pages */
6087                 else if (nr_kernel_pages > memmap_pages * 2)
6088                         nr_kernel_pages -= memmap_pages;
6089                 nr_all_pages += freesize;
6090
6091                 /*
6092                  * Set an approximate value for lowmem here, it will be adjusted
6093                  * when the bootmem allocator frees pages into the buddy system.
6094                  * And all highmem pages will be managed by the buddy system.
6095                  */
6096                 zone->managed_pages = is_highmem_idx(j) ? realsize : freesize;
6097 #ifdef CONFIG_NUMA
6098                 zone->node = nid;
6099 #endif
6100                 zone->name = zone_names[j];
6101                 zone->zone_pgdat = pgdat;
6102                 spin_lock_init(&zone->lock);
6103                 zone_seqlock_init(zone);
6104                 zone_pcp_init(zone);
6105
6106                 if (!size)
6107                         continue;
6108
6109                 set_pageblock_order();
6110                 setup_usemap(pgdat, zone, zone_start_pfn, size);
6111                 init_currently_empty_zone(zone, zone_start_pfn, size);
6112                 memmap_init(size, nid, j, zone_start_pfn);
6113         }
6114 }
6115
6116 static void __ref alloc_node_mem_map(struct pglist_data *pgdat)
6117 {
6118         unsigned long __maybe_unused start = 0;
6119         unsigned long __maybe_unused offset = 0;
6120
6121         /* Skip empty nodes */
6122         if (!pgdat->node_spanned_pages)
6123                 return;
6124
6125 #ifdef CONFIG_FLAT_NODE_MEM_MAP
6126         start = pgdat->node_start_pfn & ~(MAX_ORDER_NR_PAGES - 1);
6127         offset = pgdat->node_start_pfn - start;
6128         /* ia64 gets its own node_mem_map, before this, without bootmem */
6129         if (!pgdat->node_mem_map) {
6130                 unsigned long size, end;
6131                 struct page *map;
6132
6133                 /*
6134                  * The zone's endpoints aren't required to be MAX_ORDER
6135                  * aligned but the node_mem_map endpoints must be in order
6136                  * for the buddy allocator to function correctly.
6137                  */
6138                 end = pgdat_end_pfn(pgdat);
6139                 end = ALIGN(end, MAX_ORDER_NR_PAGES);
6140                 size =  (end - start) * sizeof(struct page);
6141                 map = alloc_remap(pgdat->node_id, size);
6142                 if (!map)
6143                         map = memblock_virt_alloc_node_nopanic(size,
6144                                                                pgdat->node_id);
6145                 pgdat->node_mem_map = map + offset;
6146         }
6147 #ifndef CONFIG_NEED_MULTIPLE_NODES
6148         /*
6149          * With no DISCONTIG, the global mem_map is just set as node 0's
6150          */
6151         if (pgdat == NODE_DATA(0)) {
6152                 mem_map = NODE_DATA(0)->node_mem_map;
6153 #if defined(CONFIG_HAVE_MEMBLOCK_NODE_MAP) || defined(CONFIG_FLATMEM)
6154                 if (page_to_pfn(mem_map) != pgdat->node_start_pfn)
6155                         mem_map -= offset;
6156 #endif /* CONFIG_HAVE_MEMBLOCK_NODE_MAP */
6157         }
6158 #endif
6159 #endif /* CONFIG_FLAT_NODE_MEM_MAP */
6160 }
6161
6162 void __paginginit free_area_init_node(int nid, unsigned long *zones_size,
6163                 unsigned long node_start_pfn, unsigned long *zholes_size)
6164 {
6165         pg_data_t *pgdat = NODE_DATA(nid);
6166         unsigned long start_pfn = 0;
6167         unsigned long end_pfn = 0;
6168
6169         /* pg_data_t should be reset to zero when it's allocated */
6170         WARN_ON(pgdat->nr_zones || pgdat->kswapd_classzone_idx);
6171
6172         pgdat->node_id = nid;
6173         pgdat->node_start_pfn = node_start_pfn;
6174         pgdat->per_cpu_nodestats = NULL;
6175 #ifdef CONFIG_HAVE_MEMBLOCK_NODE_MAP
6176         get_pfn_range_for_nid(nid, &start_pfn, &end_pfn);
6177         pr_info("Initmem setup node %d [mem %#018Lx-%#018Lx]\n", nid,
6178                 (u64)start_pfn << PAGE_SHIFT,
6179                 end_pfn ? ((u64)end_pfn << PAGE_SHIFT) - 1 : 0);
6180 #else
6181         start_pfn = node_start_pfn;
6182 #endif
6183         calculate_node_totalpages(pgdat, start_pfn, end_pfn,
6184                                   zones_size, zholes_size);
6185
6186         alloc_node_mem_map(pgdat);
6187 #ifdef CONFIG_FLAT_NODE_MEM_MAP
6188         printk(KERN_DEBUG "free_area_init_node: node %d, pgdat %08lx, node_mem_map %08lx\n",
6189                 nid, (unsigned long)pgdat,
6190                 (unsigned long)pgdat->node_mem_map);
6191 #endif
6192
6193         reset_deferred_meminit(pgdat);
6194         free_area_init_core(pgdat);
6195 }
6196
6197 #ifdef CONFIG_HAVE_MEMBLOCK_NODE_MAP
6198
6199 #if MAX_NUMNODES > 1
6200 /*
6201  * Figure out the number of possible node ids.
6202  */
6203 void __init setup_nr_node_ids(void)
6204 {
6205         unsigned int highest;
6206
6207         highest = find_last_bit(node_possible_map.bits, MAX_NUMNODES);
6208         nr_node_ids = highest + 1;
6209 }
6210 #endif
6211
6212 /**
6213  * node_map_pfn_alignment - determine the maximum internode alignment
6214  *
6215  * This function should be called after node map is populated and sorted.
6216  * It calculates the maximum power of two alignment which can distinguish
6217  * all the nodes.
6218  *
6219  * For example, if all nodes are 1GiB and aligned to 1GiB, the return value
6220  * would indicate 1GiB alignment with (1 << (30 - PAGE_SHIFT)).  If the
6221  * nodes are shifted by 256MiB, 256MiB.  Note that if only the last node is
6222  * shifted, 1GiB is enough and this function will indicate so.
6223  *
6224  * This is used to test whether pfn -> nid mapping of the chosen memory
6225  * model has fine enough granularity to avoid incorrect mapping for the
6226  * populated node map.
6227  *
6228  * Returns the determined alignment in pfn's.  0 if there is no alignment
6229  * requirement (single node).
6230  */
6231 unsigned long __init node_map_pfn_alignment(void)
6232 {
6233         unsigned long accl_mask = 0, last_end = 0;
6234         unsigned long start, end, mask;
6235         int last_nid = -1;
6236         int i, nid;
6237
6238         for_each_mem_pfn_range(i, MAX_NUMNODES, &start, &end, &nid) {
6239                 if (!start || last_nid < 0 || last_nid == nid) {
6240                         last_nid = nid;
6241                         last_end = end;
6242                         continue;
6243                 }
6244
6245                 /*
6246                  * Start with a mask granular enough to pin-point to the
6247                  * start pfn and tick off bits one-by-one until it becomes
6248                  * too coarse to separate the current node from the last.
6249                  */
6250                 mask = ~((1 << __ffs(start)) - 1);
6251                 while (mask && last_end <= (start & (mask << 1)))
6252                         mask <<= 1;
6253
6254                 /* accumulate all internode masks */
6255                 accl_mask |= mask;
6256         }
6257
6258         /* convert mask to number of pages */
6259         return ~accl_mask + 1;
6260 }
6261
6262 /* Find the lowest pfn for a node */
6263 static unsigned long __init find_min_pfn_for_node(int nid)
6264 {
6265         unsigned long min_pfn = ULONG_MAX;
6266         unsigned long start_pfn;
6267         int i;
6268
6269         for_each_mem_pfn_range(i, nid, &start_pfn, NULL, NULL)
6270                 min_pfn = min(min_pfn, start_pfn);
6271
6272         if (min_pfn == ULONG_MAX) {
6273                 pr_warn("Could not find start_pfn for node %d\n", nid);
6274                 return 0;
6275         }
6276
6277         return min_pfn;
6278 }
6279
6280 /**
6281  * find_min_pfn_with_active_regions - Find the minimum PFN registered
6282  *
6283  * It returns the minimum PFN based on information provided via
6284  * memblock_set_node().
6285  */
6286 unsigned long __init find_min_pfn_with_active_regions(void)
6287 {
6288         return find_min_pfn_for_node(MAX_NUMNODES);
6289 }
6290
6291 /*
6292  * early_calculate_totalpages()
6293  * Sum pages in active regions for movable zone.
6294  * Populate N_MEMORY for calculating usable_nodes.
6295  */
6296 static unsigned long __init early_calculate_totalpages(void)
6297 {
6298         unsigned long totalpages = 0;
6299         unsigned long start_pfn, end_pfn;
6300         int i, nid;
6301
6302         for_each_mem_pfn_range(i, MAX_NUMNODES, &start_pfn, &end_pfn, &nid) {
6303                 unsigned long pages = end_pfn - start_pfn;
6304
6305                 totalpages += pages;
6306                 if (pages)
6307                         node_set_state(nid, N_MEMORY);
6308         }
6309         return totalpages;
6310 }
6311
6312 /*
6313  * Find the PFN the Movable zone begins in each node. Kernel memory
6314  * is spread evenly between nodes as long as the nodes have enough
6315  * memory. When they don't, some nodes will have more kernelcore than
6316  * others
6317  */
6318 static void __init find_zone_movable_pfns_for_nodes(void)
6319 {
6320         int i, nid;
6321         unsigned long usable_startpfn;
6322         unsigned long kernelcore_node, kernelcore_remaining;
6323         /* save the state before borrow the nodemask */
6324         nodemask_t saved_node_state = node_states[N_MEMORY];
6325         unsigned long totalpages = early_calculate_totalpages();
6326         int usable_nodes = nodes_weight(node_states[N_MEMORY]);
6327         struct memblock_region *r;
6328
6329         /* Need to find movable_zone earlier when movable_node is specified. */
6330         find_usable_zone_for_movable();
6331
6332         /*
6333          * If movable_node is specified, ignore kernelcore and movablecore
6334          * options.
6335          */
6336         if (movable_node_is_enabled()) {
6337                 for_each_memblock(memory, r) {
6338                         if (!memblock_is_hotpluggable(r))
6339                                 continue;
6340
6341                         nid = r->nid;
6342
6343                         usable_startpfn = PFN_DOWN(r->base);
6344                         zone_movable_pfn[nid] = zone_movable_pfn[nid] ?
6345                                 min(usable_startpfn, zone_movable_pfn[nid]) :
6346                                 usable_startpfn;
6347                 }
6348
6349                 goto out2;
6350         }
6351
6352         /*
6353          * If kernelcore=mirror is specified, ignore movablecore option
6354          */
6355         if (mirrored_kernelcore) {
6356                 bool mem_below_4gb_not_mirrored = false;
6357
6358                 for_each_memblock(memory, r) {
6359                         if (memblock_is_mirror(r))
6360                                 continue;
6361
6362                         nid = r->nid;
6363
6364                         usable_startpfn = memblock_region_memory_base_pfn(r);
6365
6366                         if (usable_startpfn < 0x100000) {
6367                                 mem_below_4gb_not_mirrored = true;
6368                                 continue;
6369                         }
6370
6371                         zone_movable_pfn[nid] = zone_movable_pfn[nid] ?
6372                                 min(usable_startpfn, zone_movable_pfn[nid]) :
6373                                 usable_startpfn;
6374                 }
6375
6376                 if (mem_below_4gb_not_mirrored)
6377                         pr_warn("This configuration results in unmirrored kernel memory.");
6378
6379                 goto out2;
6380         }
6381
6382         /*
6383          * If movablecore=nn[KMG] was specified, calculate what size of
6384          * kernelcore that corresponds so that memory usable for
6385          * any allocation type is evenly spread. If both kernelcore
6386          * and movablecore are specified, then the value of kernelcore
6387          * will be used for required_kernelcore if it's greater than
6388          * what movablecore would have allowed.
6389          */
6390         if (required_movablecore) {
6391                 unsigned long corepages;
6392
6393                 /*
6394                  * Round-up so that ZONE_MOVABLE is at least as large as what
6395                  * was requested by the user
6396                  */
6397                 required_movablecore =
6398                         roundup(required_movablecore, MAX_ORDER_NR_PAGES);
6399                 required_movablecore = min(totalpages, required_movablecore);
6400                 corepages = totalpages - required_movablecore;
6401
6402                 required_kernelcore = max(required_kernelcore, corepages);
6403         }
6404
6405         /*
6406          * If kernelcore was not specified or kernelcore size is larger
6407          * than totalpages, there is no ZONE_MOVABLE.
6408          */
6409         if (!required_kernelcore || required_kernelcore >= totalpages)
6410                 goto out;
6411
6412         /* usable_startpfn is the lowest possible pfn ZONE_MOVABLE can be at */
6413         usable_startpfn = arch_zone_lowest_possible_pfn[movable_zone];
6414
6415 restart:
6416         /* Spread kernelcore memory as evenly as possible throughout nodes */
6417         kernelcore_node = required_kernelcore / usable_nodes;
6418         for_each_node_state(nid, N_MEMORY) {
6419                 unsigned long start_pfn, end_pfn;
6420
6421                 /*
6422                  * Recalculate kernelcore_node if the division per node
6423                  * now exceeds what is necessary to satisfy the requested
6424                  * amount of memory for the kernel
6425                  */
6426                 if (required_kernelcore < kernelcore_node)
6427                         kernelcore_node = required_kernelcore / usable_nodes;
6428
6429                 /*
6430                  * As the map is walked, we track how much memory is usable
6431                  * by the kernel using kernelcore_remaining. When it is
6432                  * 0, the rest of the node is usable by ZONE_MOVABLE
6433                  */
6434                 kernelcore_remaining = kernelcore_node;
6435
6436                 /* Go through each range of PFNs within this node */
6437                 for_each_mem_pfn_range(i, nid, &start_pfn, &end_pfn, NULL) {
6438                         unsigned long size_pages;
6439
6440                         start_pfn = max(start_pfn, zone_movable_pfn[nid]);
6441                         if (start_pfn >= end_pfn)
6442                                 continue;
6443
6444                         /* Account for what is only usable for kernelcore */
6445                         if (start_pfn < usable_startpfn) {
6446                                 unsigned long kernel_pages;
6447                                 kernel_pages = min(end_pfn, usable_startpfn)
6448                                                                 - start_pfn;
6449
6450                                 kernelcore_remaining -= min(kernel_pages,
6451                                                         kernelcore_remaining);
6452                                 required_kernelcore -= min(kernel_pages,
6453                                                         required_kernelcore);
6454
6455                                 /* Continue if range is now fully accounted */
6456                                 if (end_pfn <= usable_startpfn) {
6457
6458                                         /*
6459                                          * Push zone_movable_pfn to the end so
6460                                          * that if we have to rebalance
6461                                          * kernelcore across nodes, we will
6462                                          * not double account here
6463                                          */
6464                                         zone_movable_pfn[nid] = end_pfn;
6465                                         continue;
6466                                 }
6467                                 start_pfn = usable_startpfn;
6468                         }
6469
6470                         /*
6471                          * The usable PFN range for ZONE_MOVABLE is from
6472                          * start_pfn->end_pfn. Calculate size_pages as the
6473                          * number of pages used as kernelcore
6474                          */
6475                         size_pages = end_pfn - start_pfn;
6476                         if (size_pages > kernelcore_remaining)
6477                                 size_pages = kernelcore_remaining;
6478                         zone_movable_pfn[nid] = start_pfn + size_pages;
6479
6480                         /*
6481                          * Some kernelcore has been met, update counts and
6482                          * break if the kernelcore for this node has been
6483                          * satisfied
6484                          */
6485                         required_kernelcore -= min(required_kernelcore,
6486                                                                 size_pages);
6487                         kernelcore_remaining -= size_pages;
6488                         if (!kernelcore_remaining)
6489                                 break;
6490                 }
6491         }
6492
6493         /*
6494          * If there is still required_kernelcore, we do another pass with one
6495          * less node in the count. This will push zone_movable_pfn[nid] further
6496          * along on the nodes that still have memory until kernelcore is
6497          * satisfied
6498          */
6499         usable_nodes--;
6500         if (usable_nodes && required_kernelcore > usable_nodes)
6501                 goto restart;
6502
6503 out2:
6504         /* Align start of ZONE_MOVABLE on all nids to MAX_ORDER_NR_PAGES */
6505         for (nid = 0; nid < MAX_NUMNODES; nid++)
6506                 zone_movable_pfn[nid] =
6507                         roundup(zone_movable_pfn[nid], MAX_ORDER_NR_PAGES);
6508
6509 out:
6510         /* restore the node_state */
6511         node_states[N_MEMORY] = saved_node_state;
6512 }
6513
6514 /* Any regular or high memory on that node ? */
6515 static void check_for_memory(pg_data_t *pgdat, int nid)
6516 {
6517         enum zone_type zone_type;
6518
6519         if (N_MEMORY == N_NORMAL_MEMORY)
6520                 return;
6521
6522         for (zone_type = 0; zone_type <= ZONE_MOVABLE - 1; zone_type++) {
6523                 struct zone *zone = &pgdat->node_zones[zone_type];
6524                 if (populated_zone(zone)) {
6525                         node_set_state(nid, N_HIGH_MEMORY);
6526                         if (N_NORMAL_MEMORY != N_HIGH_MEMORY &&
6527                             zone_type <= ZONE_NORMAL)
6528                                 node_set_state(nid, N_NORMAL_MEMORY);
6529                         break;
6530                 }
6531         }
6532 }
6533
6534 /**
6535  * free_area_init_nodes - Initialise all pg_data_t and zone data
6536  * @max_zone_pfn: an array of max PFNs for each zone
6537  *
6538  * This will call free_area_init_node() for each active node in the system.
6539  * Using the page ranges provided by memblock_set_node(), the size of each
6540  * zone in each node and their holes is calculated. If the maximum PFN
6541  * between two adjacent zones match, it is assumed that the zone is empty.
6542  * For example, if arch_max_dma_pfn == arch_max_dma32_pfn, it is assumed
6543  * that arch_max_dma32_pfn has no pages. It is also assumed that a zone
6544  * starts where the previous one ended. For example, ZONE_DMA32 starts
6545  * at arch_max_dma_pfn.
6546  */
6547 void __init free_area_init_nodes(unsigned long *max_zone_pfn)
6548 {
6549         unsigned long start_pfn, end_pfn;
6550         int i, nid;
6551
6552         /* Record where the zone boundaries are */
6553         memset(arch_zone_lowest_possible_pfn, 0,
6554                                 sizeof(arch_zone_lowest_possible_pfn));
6555         memset(arch_zone_highest_possible_pfn, 0,
6556                                 sizeof(arch_zone_highest_possible_pfn));
6557
6558         start_pfn = find_min_pfn_with_active_regions();
6559
6560         for (i = 0; i < MAX_NR_ZONES; i++) {
6561                 if (i == ZONE_MOVABLE)
6562                         continue;
6563
6564                 end_pfn = max(max_zone_pfn[i], start_pfn);
6565                 arch_zone_lowest_possible_pfn[i] = start_pfn;
6566                 arch_zone_highest_possible_pfn[i] = end_pfn;
6567
6568                 start_pfn = end_pfn;
6569         }
6570
6571         /* Find the PFNs that ZONE_MOVABLE begins at in each node */
6572         memset(zone_movable_pfn, 0, sizeof(zone_movable_pfn));
6573         find_zone_movable_pfns_for_nodes();
6574
6575         /* Print out the zone ranges */
6576         pr_info("Zone ranges:\n");
6577         for (i = 0; i < MAX_NR_ZONES; i++) {
6578                 if (i == ZONE_MOVABLE)
6579                         continue;
6580                 pr_info("  %-8s ", zone_names[i]);
6581                 if (arch_zone_lowest_possible_pfn[i] ==
6582                                 arch_zone_highest_possible_pfn[i])
6583                         pr_cont("empty\n");
6584                 else
6585                         pr_cont("[mem %#018Lx-%#018Lx]\n",
6586                                 (u64)arch_zone_lowest_possible_pfn[i]
6587                                         << PAGE_SHIFT,
6588                                 ((u64)arch_zone_highest_possible_pfn[i]
6589                                         << PAGE_SHIFT) - 1);
6590         }
6591
6592         /* Print out the PFNs ZONE_MOVABLE begins at in each node */
6593         pr_info("Movable zone start for each node\n");
6594         for (i = 0; i < MAX_NUMNODES; i++) {
6595                 if (zone_movable_pfn[i])
6596                         pr_info("  Node %d: %#018Lx\n", i,
6597                                (u64)zone_movable_pfn[i] << PAGE_SHIFT);
6598         }
6599
6600         /* Print out the early node map */
6601         pr_info("Early memory node ranges\n");
6602         for_each_mem_pfn_range(i, MAX_NUMNODES, &start_pfn, &end_pfn, &nid)
6603                 pr_info("  node %3d: [mem %#018Lx-%#018Lx]\n", nid,
6604                         (u64)start_pfn << PAGE_SHIFT,
6605                         ((u64)end_pfn << PAGE_SHIFT) - 1);
6606
6607         /* Initialise every node */
6608         mminit_verify_pageflags_layout();
6609         setup_nr_node_ids();
6610         for_each_online_node(nid) {
6611                 pg_data_t *pgdat = NODE_DATA(nid);
6612                 free_area_init_node(nid, NULL,
6613                                 find_min_pfn_for_node(nid), NULL);
6614
6615                 /* Any memory on that node */
6616                 if (pgdat->node_present_pages)
6617                         node_set_state(nid, N_MEMORY);
6618                 check_for_memory(pgdat, nid);
6619         }
6620 }
6621
6622 static int __init cmdline_parse_core(char *p, unsigned long *core)
6623 {
6624         unsigned long long coremem;
6625         if (!p)
6626                 return -EINVAL;
6627
6628         coremem = memparse(p, &p);
6629         *core = coremem >> PAGE_SHIFT;
6630
6631         /* Paranoid check that UL is enough for the coremem value */
6632         WARN_ON((coremem >> PAGE_SHIFT) > ULONG_MAX);
6633
6634         return 0;
6635 }
6636
6637 /*
6638  * kernelcore=size sets the amount of memory for use for allocations that
6639  * cannot be reclaimed or migrated.
6640  */
6641 static int __init cmdline_parse_kernelcore(char *p)
6642 {
6643         /* parse kernelcore=mirror */
6644         if (parse_option_str(p, "mirror")) {
6645                 mirrored_kernelcore = true;
6646                 return 0;
6647         }
6648
6649         return cmdline_parse_core(p, &required_kernelcore);
6650 }
6651
6652 /*
6653  * movablecore=size sets the amount of memory for use for allocations that
6654  * can be reclaimed or migrated.
6655  */
6656 static int __init cmdline_parse_movablecore(char *p)
6657 {
6658         return cmdline_parse_core(p, &required_movablecore);
6659 }
6660
6661 early_param("kernelcore", cmdline_parse_kernelcore);
6662 early_param("movablecore", cmdline_parse_movablecore);
6663
6664 #endif /* CONFIG_HAVE_MEMBLOCK_NODE_MAP */
6665
6666 void adjust_managed_page_count(struct page *page, long count)
6667 {
6668         spin_lock(&managed_page_count_lock);
6669         page_zone(page)->managed_pages += count;
6670         totalram_pages += count;
6671 #ifdef CONFIG_HIGHMEM
6672         if (PageHighMem(page))
6673                 totalhigh_pages += count;
6674 #endif
6675         spin_unlock(&managed_page_count_lock);
6676 }
6677 EXPORT_SYMBOL(adjust_managed_page_count);
6678
6679 unsigned long free_reserved_area(void *start, void *end, int poison, char *s)
6680 {
6681         void *pos;
6682         unsigned long pages = 0;
6683
6684         start = (void *)PAGE_ALIGN((unsigned long)start);
6685         end = (void *)((unsigned long)end & PAGE_MASK);
6686         for (pos = start; pos < end; pos += PAGE_SIZE, pages++) {
6687                 if ((unsigned int)poison <= 0xFF)
6688                         memset(pos, poison, PAGE_SIZE);
6689                 free_reserved_page(virt_to_page(pos));
6690         }
6691
6692         if (pages && s)
6693                 pr_info("Freeing %s memory: %ldK\n",
6694                         s, pages << (PAGE_SHIFT - 10));
6695
6696         return pages;
6697 }
6698 EXPORT_SYMBOL(free_reserved_area);
6699
6700 #ifdef  CONFIG_HIGHMEM
6701 void free_highmem_page(struct page *page)
6702 {
6703         __free_reserved_page(page);
6704         totalram_pages++;
6705         page_zone(page)->managed_pages++;
6706         totalhigh_pages++;
6707 }
6708 #endif
6709
6710
6711 void __init mem_init_print_info(const char *str)
6712 {
6713         unsigned long physpages, codesize, datasize, rosize, bss_size;
6714         unsigned long init_code_size, init_data_size;
6715
6716         physpages = get_num_physpages();
6717         codesize = _etext - _stext;
6718         datasize = _edata - _sdata;
6719         rosize = __end_rodata - __start_rodata;
6720         bss_size = __bss_stop - __bss_start;
6721         init_data_size = __init_end - __init_begin;
6722         init_code_size = _einittext - _sinittext;
6723
6724         /*
6725          * Detect special cases and adjust section sizes accordingly:
6726          * 1) .init.* may be embedded into .data sections
6727          * 2) .init.text.* may be out of [__init_begin, __init_end],
6728          *    please refer to arch/tile/kernel/vmlinux.lds.S.
6729          * 3) .rodata.* may be embedded into .text or .data sections.
6730          */
6731 #define adj_init_size(start, end, size, pos, adj) \
6732         do { \
6733                 if (start <= pos && pos < end && size > adj) \
6734                         size -= adj; \
6735         } while (0)
6736
6737         adj_init_size(__init_begin, __init_end, init_data_size,
6738                      _sinittext, init_code_size);
6739         adj_init_size(_stext, _etext, codesize, _sinittext, init_code_size);
6740         adj_init_size(_sdata, _edata, datasize, __init_begin, init_data_size);
6741         adj_init_size(_stext, _etext, codesize, __start_rodata, rosize);
6742         adj_init_size(_sdata, _edata, datasize, __start_rodata, rosize);
6743
6744 #undef  adj_init_size
6745
6746         pr_info("Memory: %luK/%luK available (%luK kernel code, %luK rwdata, %luK rodata, %luK init, %luK bss, %luK reserved, %luK cma-reserved"
6747 #ifdef  CONFIG_HIGHMEM
6748                 ", %luK highmem"
6749 #endif
6750                 "%s%s)\n",
6751                 nr_free_pages() << (PAGE_SHIFT - 10),
6752                 physpages << (PAGE_SHIFT - 10),
6753                 codesize >> 10, datasize >> 10, rosize >> 10,
6754                 (init_data_size + init_code_size) >> 10, bss_size >> 10,
6755                 (physpages - totalram_pages - totalcma_pages) << (PAGE_SHIFT - 10),
6756                 totalcma_pages << (PAGE_SHIFT - 10),
6757 #ifdef  CONFIG_HIGHMEM
6758                 totalhigh_pages << (PAGE_SHIFT - 10),
6759 #endif
6760                 str ? ", " : "", str ? str : "");
6761 }
6762
6763 /**
6764  * set_dma_reserve - set the specified number of pages reserved in the first zone
6765  * @new_dma_reserve: The number of pages to mark reserved
6766  *
6767  * The per-cpu batchsize and zone watermarks are determined by managed_pages.
6768  * In the DMA zone, a significant percentage may be consumed by kernel image
6769  * and other unfreeable allocations which can skew the watermarks badly. This
6770  * function may optionally be used to account for unfreeable pages in the
6771  * first zone (e.g., ZONE_DMA). The effect will be lower watermarks and
6772  * smaller per-cpu batchsize.
6773  */
6774 void __init set_dma_reserve(unsigned long new_dma_reserve)
6775 {
6776         dma_reserve = new_dma_reserve;
6777 }
6778
6779 void __init free_area_init(unsigned long *zones_size)
6780 {
6781         free_area_init_node(0, zones_size,
6782                         __pa(PAGE_OFFSET) >> PAGE_SHIFT, NULL);
6783 }
6784
6785 static int page_alloc_cpu_dead(unsigned int cpu)
6786 {
6787
6788         lru_add_drain_cpu(cpu);
6789         drain_pages(cpu);
6790
6791         /*
6792          * Spill the event counters of the dead processor
6793          * into the current processors event counters.
6794          * This artificially elevates the count of the current
6795          * processor.
6796          */
6797         vm_events_fold_cpu(cpu);
6798
6799         /*
6800          * Zero the differential counters of the dead processor
6801          * so that the vm statistics are consistent.
6802          *
6803          * This is only okay since the processor is dead and cannot
6804          * race with what we are doing.
6805          */
6806         cpu_vm_stats_fold(cpu);
6807         return 0;
6808 }
6809
6810 void __init page_alloc_init(void)
6811 {
6812         int ret;
6813
6814         ret = cpuhp_setup_state_nocalls(CPUHP_PAGE_ALLOC_DEAD,
6815                                         "mm/page_alloc:dead", NULL,
6816                                         page_alloc_cpu_dead);
6817         WARN_ON(ret < 0);
6818 }
6819
6820 /*
6821  * calculate_totalreserve_pages - called when sysctl_lowmem_reserve_ratio
6822  *      or min_free_kbytes changes.
6823  */
6824 static void calculate_totalreserve_pages(void)
6825 {
6826         struct pglist_data *pgdat;
6827         unsigned long reserve_pages = 0;
6828         enum zone_type i, j;
6829
6830         for_each_online_pgdat(pgdat) {
6831
6832                 pgdat->totalreserve_pages = 0;
6833
6834                 for (i = 0; i < MAX_NR_ZONES; i++) {
6835                         struct zone *zone = pgdat->node_zones + i;
6836                         long max = 0;
6837
6838                         /* Find valid and maximum lowmem_reserve in the zone */
6839                         for (j = i; j < MAX_NR_ZONES; j++) {
6840                                 if (zone->lowmem_reserve[j] > max)
6841                                         max = zone->lowmem_reserve[j];
6842                         }
6843
6844                         /* we treat the high watermark as reserved pages. */
6845                         max += high_wmark_pages(zone);
6846
6847                         if (max > zone->managed_pages)
6848                                 max = zone->managed_pages;
6849
6850                         pgdat->totalreserve_pages += max;
6851
6852                         reserve_pages += max;
6853                 }
6854         }
6855         totalreserve_pages = reserve_pages;
6856 }
6857
6858 /*
6859  * setup_per_zone_lowmem_reserve - called whenever
6860  *      sysctl_lowmem_reserve_ratio changes.  Ensures that each zone
6861  *      has a correct pages reserved value, so an adequate number of
6862  *      pages are left in the zone after a successful __alloc_pages().
6863  */
6864 static void setup_per_zone_lowmem_reserve(void)
6865 {
6866         struct pglist_data *pgdat;
6867         enum zone_type j, idx;
6868
6869         for_each_online_pgdat(pgdat) {
6870                 for (j = 0; j < MAX_NR_ZONES; j++) {
6871                         struct zone *zone = pgdat->node_zones + j;
6872                         unsigned long managed_pages = zone->managed_pages;
6873
6874                         zone->lowmem_reserve[j] = 0;
6875
6876                         idx = j;
6877                         while (idx) {
6878                                 struct zone *lower_zone;
6879
6880                                 idx--;
6881
6882                                 if (sysctl_lowmem_reserve_ratio[idx] < 1)
6883                                         sysctl_lowmem_reserve_ratio[idx] = 1;
6884
6885                                 lower_zone = pgdat->node_zones + idx;
6886                                 lower_zone->lowmem_reserve[j] = managed_pages /
6887                                         sysctl_lowmem_reserve_ratio[idx];
6888                                 managed_pages += lower_zone->managed_pages;
6889                         }
6890                 }
6891         }
6892
6893         /* update totalreserve_pages */
6894         calculate_totalreserve_pages();
6895 }
6896
6897 static void __setup_per_zone_wmarks(void)
6898 {
6899         unsigned long pages_min = min_free_kbytes >> (PAGE_SHIFT - 10);
6900         unsigned long lowmem_pages = 0;
6901         struct zone *zone;
6902         unsigned long flags;
6903
6904         /* Calculate total number of !ZONE_HIGHMEM pages */
6905         for_each_zone(zone) {
6906                 if (!is_highmem(zone))
6907                         lowmem_pages += zone->managed_pages;
6908         }
6909
6910         for_each_zone(zone) {
6911                 u64 tmp;
6912
6913                 spin_lock_irqsave(&zone->lock, flags);
6914                 tmp = (u64)pages_min * zone->managed_pages;
6915                 do_div(tmp, lowmem_pages);
6916                 if (is_highmem(zone)) {
6917                         /*
6918                          * __GFP_HIGH and PF_MEMALLOC allocations usually don't
6919                          * need highmem pages, so cap pages_min to a small
6920                          * value here.
6921                          *
6922                          * The WMARK_HIGH-WMARK_LOW and (WMARK_LOW-WMARK_MIN)
6923                          * deltas control asynch page reclaim, and so should
6924                          * not be capped for highmem.
6925                          */
6926                         unsigned long min_pages;
6927
6928                         min_pages = zone->managed_pages / 1024;
6929                         min_pages = clamp(min_pages, SWAP_CLUSTER_MAX, 128UL);
6930                         zone->watermark[WMARK_MIN] = min_pages;
6931                 } else {
6932                         /*
6933                          * If it's a lowmem zone, reserve a number of pages
6934                          * proportionate to the zone's size.
6935                          */
6936                         zone->watermark[WMARK_MIN] = tmp;
6937                 }
6938
6939                 /*
6940                  * Set the kswapd watermarks distance according to the
6941                  * scale factor in proportion to available memory, but
6942                  * ensure a minimum size on small systems.
6943                  */
6944                 tmp = max_t(u64, tmp >> 2,
6945                             mult_frac(zone->managed_pages,
6946                                       watermark_scale_factor, 10000));
6947
6948                 zone->watermark[WMARK_LOW]  = min_wmark_pages(zone) + tmp;
6949                 zone->watermark[WMARK_HIGH] = min_wmark_pages(zone) + tmp * 2;
6950
6951                 spin_unlock_irqrestore(&zone->lock, flags);
6952         }
6953
6954         /* update totalreserve_pages */
6955         calculate_totalreserve_pages();
6956 }
6957
6958 /**
6959  * setup_per_zone_wmarks - called when min_free_kbytes changes
6960  * or when memory is hot-{added|removed}
6961  *
6962  * Ensures that the watermark[min,low,high] values for each zone are set
6963  * correctly with respect to min_free_kbytes.
6964  */
6965 void setup_per_zone_wmarks(void)
6966 {
6967         static DEFINE_SPINLOCK(lock);
6968
6969         spin_lock(&lock);
6970         __setup_per_zone_wmarks();
6971         spin_unlock(&lock);
6972 }
6973
6974 /*
6975  * Initialise min_free_kbytes.
6976  *
6977  * For small machines we want it small (128k min).  For large machines
6978  * we want it large (64MB max).  But it is not linear, because network
6979  * bandwidth does not increase linearly with machine size.  We use
6980  *
6981  *      min_free_kbytes = 4 * sqrt(lowmem_kbytes), for better accuracy:
6982  *      min_free_kbytes = sqrt(lowmem_kbytes * 16)
6983  *
6984  * which yields
6985  *
6986  * 16MB:        512k
6987  * 32MB:        724k
6988  * 64MB:        1024k
6989  * 128MB:       1448k
6990  * 256MB:       2048k
6991  * 512MB:       2896k
6992  * 1024MB:      4096k
6993  * 2048MB:      5792k
6994  * 4096MB:      8192k
6995  * 8192MB:      11584k
6996  * 16384MB:     16384k
6997  */
6998 int __meminit init_per_zone_wmark_min(void)
6999 {
7000         unsigned long lowmem_kbytes;
7001         int new_min_free_kbytes;
7002
7003         lowmem_kbytes = nr_free_buffer_pages() * (PAGE_SIZE >> 10);
7004         new_min_free_kbytes = int_sqrt(lowmem_kbytes * 16);
7005
7006         if (new_min_free_kbytes > user_min_free_kbytes) {
7007                 min_free_kbytes = new_min_free_kbytes;
7008                 if (min_free_kbytes < 128)
7009                         min_free_kbytes = 128;
7010                 if (min_free_kbytes > 65536)
7011                         min_free_kbytes = 65536;
7012         } else {
7013                 pr_warn("min_free_kbytes is not updated to %d because user defined value %d is preferred\n",
7014                                 new_min_free_kbytes, user_min_free_kbytes);
7015         }
7016         setup_per_zone_wmarks();
7017         refresh_zone_stat_thresholds();
7018         setup_per_zone_lowmem_reserve();
7019
7020 #ifdef CONFIG_NUMA
7021         setup_min_unmapped_ratio();
7022         setup_min_slab_ratio();
7023 #endif
7024
7025         khugepaged_min_free_kbytes_update();
7026
7027         return 0;
7028 }
7029 postcore_initcall(init_per_zone_wmark_min)
7030
7031 /*
7032  * min_free_kbytes_sysctl_handler - just a wrapper around proc_dointvec() so
7033  *      that we can call two helper functions whenever min_free_kbytes
7034  *      changes.
7035  */
7036 int min_free_kbytes_sysctl_handler(struct ctl_table *table, int write,
7037         void __user *buffer, size_t *length, loff_t *ppos)
7038 {
7039         int rc;
7040
7041         rc = proc_dointvec_minmax(table, write, buffer, length, ppos);
7042         if (rc)
7043                 return rc;
7044
7045         if (write) {
7046                 user_min_free_kbytes = min_free_kbytes;
7047                 setup_per_zone_wmarks();
7048         }
7049         return 0;
7050 }
7051
7052 int watermark_scale_factor_sysctl_handler(struct ctl_table *table, int write,
7053         void __user *buffer, size_t *length, loff_t *ppos)
7054 {
7055         int rc;
7056
7057         rc = proc_dointvec_minmax(table, write, buffer, length, ppos);
7058         if (rc)
7059                 return rc;
7060
7061         if (write)
7062                 setup_per_zone_wmarks();
7063
7064         return 0;
7065 }
7066
7067 #ifdef CONFIG_NUMA
7068 static void setup_min_unmapped_ratio(void)
7069 {
7070         pg_data_t *pgdat;
7071         struct zone *zone;
7072
7073         for_each_online_pgdat(pgdat)
7074                 pgdat->min_unmapped_pages = 0;
7075
7076         for_each_zone(zone)
7077                 zone->zone_pgdat->min_unmapped_pages += (zone->managed_pages *
7078                                 sysctl_min_unmapped_ratio) / 100;
7079 }
7080
7081
7082 int sysctl_min_unmapped_ratio_sysctl_handler(struct ctl_table *table, int write,
7083         void __user *buffer, size_t *length, loff_t *ppos)
7084 {
7085         int rc;
7086
7087         rc = proc_dointvec_minmax(table, write, buffer, length, ppos);
7088         if (rc)
7089                 return rc;
7090
7091         setup_min_unmapped_ratio();
7092
7093         return 0;
7094 }
7095
7096 static void setup_min_slab_ratio(void)
7097 {
7098         pg_data_t *pgdat;
7099         struct zone *zone;
7100
7101         for_each_online_pgdat(pgdat)
7102                 pgdat->min_slab_pages = 0;
7103
7104         for_each_zone(zone)
7105                 zone->zone_pgdat->min_slab_pages += (zone->managed_pages *
7106                                 sysctl_min_slab_ratio) / 100;
7107 }
7108
7109 int sysctl_min_slab_ratio_sysctl_handler(struct ctl_table *table, int write,
7110         void __user *buffer, size_t *length, loff_t *ppos)
7111 {
7112         int rc;
7113
7114         rc = proc_dointvec_minmax(table, write, buffer, length, ppos);
7115         if (rc)
7116                 return rc;
7117
7118         setup_min_slab_ratio();
7119
7120         return 0;
7121 }
7122 #endif
7123
7124 /*
7125  * lowmem_reserve_ratio_sysctl_handler - just a wrapper around
7126  *      proc_dointvec() so that we can call setup_per_zone_lowmem_reserve()
7127  *      whenever sysctl_lowmem_reserve_ratio changes.
7128  *
7129  * The reserve ratio obviously has absolutely no relation with the
7130  * minimum watermarks. The lowmem reserve ratio can only make sense
7131  * if in function of the boot time zone sizes.
7132  */
7133 int lowmem_reserve_ratio_sysctl_handler(struct ctl_table *table, int write,
7134         void __user *buffer, size_t *length, loff_t *ppos)
7135 {
7136         proc_dointvec_minmax(table, write, buffer, length, ppos);
7137         setup_per_zone_lowmem_reserve();
7138         return 0;
7139 }
7140
7141 /*
7142  * percpu_pagelist_fraction - changes the pcp->high for each zone on each
7143  * cpu.  It is the fraction of total pages in each zone that a hot per cpu
7144  * pagelist can have before it gets flushed back to buddy allocator.
7145  */
7146 int percpu_pagelist_fraction_sysctl_handler(struct ctl_table *table, int write,
7147         void __user *buffer, size_t *length, loff_t *ppos)
7148 {
7149         struct zone *zone;
7150         int old_percpu_pagelist_fraction;
7151         int ret;
7152
7153         mutex_lock(&pcp_batch_high_lock);
7154         old_percpu_pagelist_fraction = percpu_pagelist_fraction;
7155
7156         ret = proc_dointvec_minmax(table, write, buffer, length, ppos);
7157         if (!write || ret < 0)
7158                 goto out;
7159
7160         /* Sanity checking to avoid pcp imbalance */
7161         if (percpu_pagelist_fraction &&
7162             percpu_pagelist_fraction < MIN_PERCPU_PAGELIST_FRACTION) {
7163                 percpu_pagelist_fraction = old_percpu_pagelist_fraction;
7164                 ret = -EINVAL;
7165                 goto out;
7166         }
7167
7168         /* No change? */
7169         if (percpu_pagelist_fraction == old_percpu_pagelist_fraction)
7170                 goto out;
7171
7172         for_each_populated_zone(zone) {
7173                 unsigned int cpu;
7174
7175                 for_each_possible_cpu(cpu)
7176                         pageset_set_high_and_batch(zone,
7177                                         per_cpu_ptr(zone->pageset, cpu));
7178         }
7179 out:
7180         mutex_unlock(&pcp_batch_high_lock);
7181         return ret;
7182 }
7183
7184 #ifdef CONFIG_NUMA
7185 int hashdist = HASHDIST_DEFAULT;
7186
7187 static int __init set_hashdist(char *str)
7188 {
7189         if (!str)
7190                 return 0;
7191         hashdist = simple_strtoul(str, &str, 0);
7192         return 1;
7193 }
7194 __setup("hashdist=", set_hashdist);
7195 #endif
7196
7197 #ifndef __HAVE_ARCH_RESERVED_KERNEL_PAGES
7198 /*
7199  * Returns the number of pages that arch has reserved but
7200  * is not known to alloc_large_system_hash().
7201  */
7202 static unsigned long __init arch_reserved_kernel_pages(void)
7203 {
7204         return 0;
7205 }
7206 #endif
7207
7208 /*
7209  * Adaptive scale is meant to reduce sizes of hash tables on large memory
7210  * machines. As memory size is increased the scale is also increased but at
7211  * slower pace.  Starting from ADAPT_SCALE_BASE (64G), every time memory
7212  * quadruples the scale is increased by one, which means the size of hash table
7213  * only doubles, instead of quadrupling as well.
7214  * Because 32-bit systems cannot have large physical memory, where this scaling
7215  * makes sense, it is disabled on such platforms.
7216  */
7217 #if __BITS_PER_LONG > 32
7218 #define ADAPT_SCALE_BASE        (64ul << 30)
7219 #define ADAPT_SCALE_SHIFT       2
7220 #define ADAPT_SCALE_NPAGES      (ADAPT_SCALE_BASE >> PAGE_SHIFT)
7221 #endif
7222
7223 /*
7224  * allocate a large system hash table from bootmem
7225  * - it is assumed that the hash table must contain an exact power-of-2
7226  *   quantity of entries
7227  * - limit is the number of hash buckets, not the total allocation size
7228  */
7229 void *__init alloc_large_system_hash(const char *tablename,
7230                                      unsigned long bucketsize,
7231                                      unsigned long numentries,
7232                                      int scale,
7233                                      int flags,
7234                                      unsigned int *_hash_shift,
7235                                      unsigned int *_hash_mask,
7236                                      unsigned long low_limit,
7237                                      unsigned long high_limit)
7238 {
7239         unsigned long long max = high_limit;
7240         unsigned long log2qty, size;
7241         void *table = NULL;
7242         gfp_t gfp_flags;
7243
7244         /* allow the kernel cmdline to have a say */
7245         if (!numentries) {
7246                 /* round applicable memory size up to nearest megabyte */
7247                 numentries = nr_kernel_pages;
7248                 numentries -= arch_reserved_kernel_pages();
7249
7250                 /* It isn't necessary when PAGE_SIZE >= 1MB */
7251                 if (PAGE_SHIFT < 20)
7252                         numentries = round_up(numentries, (1<<20)/PAGE_SIZE);
7253
7254 #if __BITS_PER_LONG > 32
7255                 if (!high_limit) {
7256                         unsigned long adapt;
7257
7258                         for (adapt = ADAPT_SCALE_NPAGES; adapt < numentries;
7259                              adapt <<= ADAPT_SCALE_SHIFT)
7260                                 scale++;
7261                 }
7262 #endif
7263
7264                 /* limit to 1 bucket per 2^scale bytes of low memory */
7265                 if (scale > PAGE_SHIFT)
7266                         numentries >>= (scale - PAGE_SHIFT);
7267                 else
7268                         numentries <<= (PAGE_SHIFT - scale);
7269
7270                 /* Make sure we've got at least a 0-order allocation.. */
7271                 if (unlikely(flags & HASH_SMALL)) {
7272                         /* Makes no sense without HASH_EARLY */
7273                         WARN_ON(!(flags & HASH_EARLY));
7274                         if (!(numentries >> *_hash_shift)) {
7275                                 numentries = 1UL << *_hash_shift;
7276                                 BUG_ON(!numentries);
7277                         }
7278                 } else if (unlikely((numentries * bucketsize) < PAGE_SIZE))
7279                         numentries = PAGE_SIZE / bucketsize;
7280         }
7281         numentries = roundup_pow_of_two(numentries);
7282
7283         /* limit allocation size to 1/16 total memory by default */
7284         if (max == 0) {
7285                 max = ((unsigned long long)nr_all_pages << PAGE_SHIFT) >> 4;
7286                 do_div(max, bucketsize);
7287         }
7288         max = min(max, 0x80000000ULL);
7289
7290         if (numentries < low_limit)
7291                 numentries = low_limit;
7292         if (numentries > max)
7293                 numentries = max;
7294
7295         log2qty = ilog2(numentries);
7296
7297         /*
7298          * memblock allocator returns zeroed memory already, so HASH_ZERO is
7299          * currently not used when HASH_EARLY is specified.
7300          */
7301         gfp_flags = (flags & HASH_ZERO) ? GFP_ATOMIC | __GFP_ZERO : GFP_ATOMIC;
7302         do {
7303                 size = bucketsize << log2qty;
7304                 if (flags & HASH_EARLY)
7305                         table = memblock_virt_alloc_nopanic(size, 0);
7306                 else if (hashdist)
7307                         table = __vmalloc(size, gfp_flags, PAGE_KERNEL);
7308                 else {
7309                         /*
7310                          * If bucketsize is not a power-of-two, we may free
7311                          * some pages at the end of hash table which
7312                          * alloc_pages_exact() automatically does
7313                          */
7314                         if (get_order(size) < MAX_ORDER) {
7315                                 table = alloc_pages_exact(size, gfp_flags);
7316                                 kmemleak_alloc(table, size, 1, gfp_flags);
7317                         }
7318                 }
7319         } while (!table && size > PAGE_SIZE && --log2qty);
7320
7321         if (!table)
7322                 panic("Failed to allocate %s hash table\n", tablename);
7323
7324         pr_info("%s hash table entries: %ld (order: %d, %lu bytes)\n",
7325                 tablename, 1UL << log2qty, ilog2(size) - PAGE_SHIFT, size);
7326
7327         if (_hash_shift)
7328                 *_hash_shift = log2qty;
7329         if (_hash_mask)
7330                 *_hash_mask = (1 << log2qty) - 1;
7331
7332         return table;
7333 }
7334
7335 /*
7336  * This function checks whether pageblock includes unmovable pages or not.
7337  * If @count is not zero, it is okay to include less @count unmovable pages
7338  *
7339  * PageLRU check without isolation or lru_lock could race so that
7340  * MIGRATE_MOVABLE block might include unmovable pages. And __PageMovable
7341  * check without lock_page also may miss some movable non-lru pages at
7342  * race condition. So you can't expect this function should be exact.
7343  */
7344 bool has_unmovable_pages(struct zone *zone, struct page *page, int count,
7345                          bool skip_hwpoisoned_pages)
7346 {
7347         unsigned long pfn, iter, found;
7348         int mt;
7349
7350         /*
7351          * For avoiding noise data, lru_add_drain_all() should be called
7352          * If ZONE_MOVABLE, the zone never contains unmovable pages
7353          */
7354         if (zone_idx(zone) == ZONE_MOVABLE)
7355                 return false;
7356         mt = get_pageblock_migratetype(page);
7357         if (mt == MIGRATE_MOVABLE || is_migrate_cma(mt))
7358                 return false;
7359
7360         pfn = page_to_pfn(page);
7361         for (found = 0, iter = 0; iter < pageblock_nr_pages; iter++) {
7362                 unsigned long check = pfn + iter;
7363
7364                 if (!pfn_valid_within(check))
7365                         continue;
7366
7367                 page = pfn_to_page(check);
7368
7369                 /*
7370                  * Hugepages are not in LRU lists, but they're movable.
7371                  * We need not scan over tail pages bacause we don't
7372                  * handle each tail page individually in migration.
7373                  */
7374                 if (PageHuge(page)) {
7375                         iter = round_up(iter + 1, 1<<compound_order(page)) - 1;
7376                         continue;
7377                 }
7378
7379                 /*
7380                  * We can't use page_count without pin a page
7381                  * because another CPU can free compound page.
7382                  * This check already skips compound tails of THP
7383                  * because their page->_refcount is zero at all time.
7384                  */
7385                 if (!page_ref_count(page)) {
7386                         if (PageBuddy(page))
7387                                 iter += (1 << page_order(page)) - 1;
7388                         continue;
7389                 }
7390
7391                 /*
7392                  * The HWPoisoned page may be not in buddy system, and
7393                  * page_count() is not 0.
7394                  */
7395                 if (skip_hwpoisoned_pages && PageHWPoison(page))
7396                         continue;
7397
7398                 if (__PageMovable(page))
7399                         continue;
7400
7401                 if (!PageLRU(page))
7402                         found++;
7403                 /*
7404                  * If there are RECLAIMABLE pages, we need to check
7405                  * it.  But now, memory offline itself doesn't call
7406                  * shrink_node_slabs() and it still to be fixed.
7407                  */
7408                 /*
7409                  * If the page is not RAM, page_count()should be 0.
7410                  * we don't need more check. This is an _used_ not-movable page.
7411                  *
7412                  * The problematic thing here is PG_reserved pages. PG_reserved
7413                  * is set to both of a memory hole page and a _used_ kernel
7414                  * page at boot.
7415                  */
7416                 if (found > count)
7417                         return true;
7418         }
7419         return false;
7420 }
7421
7422 bool is_pageblock_removable_nolock(struct page *page)
7423 {
7424         struct zone *zone;
7425         unsigned long pfn;
7426
7427         /*
7428          * We have to be careful here because we are iterating over memory
7429          * sections which are not zone aware so we might end up outside of
7430          * the zone but still within the section.
7431          * We have to take care about the node as well. If the node is offline
7432          * its NODE_DATA will be NULL - see page_zone.
7433          */
7434         if (!node_online(page_to_nid(page)))
7435                 return false;
7436
7437         zone = page_zone(page);
7438         pfn = page_to_pfn(page);
7439         if (!zone_spans_pfn(zone, pfn))
7440                 return false;
7441
7442         return !has_unmovable_pages(zone, page, 0, true);
7443 }
7444
7445 #if (defined(CONFIG_MEMORY_ISOLATION) && defined(CONFIG_COMPACTION)) || defined(CONFIG_CMA)
7446
7447 static unsigned long pfn_max_align_down(unsigned long pfn)
7448 {
7449         return pfn & ~(max_t(unsigned long, MAX_ORDER_NR_PAGES,
7450                              pageblock_nr_pages) - 1);
7451 }
7452
7453 static unsigned long pfn_max_align_up(unsigned long pfn)
7454 {
7455         return ALIGN(pfn, max_t(unsigned long, MAX_ORDER_NR_PAGES,
7456                                 pageblock_nr_pages));
7457 }
7458
7459 /* [start, end) must belong to a single zone. */
7460 static int __alloc_contig_migrate_range(struct compact_control *cc,
7461                                         unsigned long start, unsigned long end)
7462 {
7463         /* This function is based on compact_zone() from compaction.c. */
7464         unsigned long nr_reclaimed;
7465         unsigned long pfn = start;
7466         unsigned int tries = 0;
7467         int ret = 0;
7468
7469         migrate_prep();
7470
7471         while (pfn < end || !list_empty(&cc->migratepages)) {
7472                 if (fatal_signal_pending(current)) {
7473                         ret = -EINTR;
7474                         break;
7475                 }
7476
7477                 if (list_empty(&cc->migratepages)) {
7478                         cc->nr_migratepages = 0;
7479                         pfn = isolate_migratepages_range(cc, pfn, end);
7480                         if (!pfn) {
7481                                 ret = -EINTR;
7482                                 break;
7483                         }
7484                         tries = 0;
7485                 } else if (++tries == 5) {
7486                         ret = ret < 0 ? ret : -EBUSY;
7487                         break;
7488                 }
7489
7490                 nr_reclaimed = reclaim_clean_pages_from_list(cc->zone,
7491                                                         &cc->migratepages);
7492                 cc->nr_migratepages -= nr_reclaimed;
7493
7494                 ret = migrate_pages(&cc->migratepages, alloc_migrate_target,
7495                                     NULL, 0, cc->mode, MR_CMA);
7496         }
7497         if (ret < 0) {
7498                 putback_movable_pages(&cc->migratepages);
7499                 return ret;
7500         }
7501         return 0;
7502 }
7503
7504 /**
7505  * alloc_contig_range() -- tries to allocate given range of pages
7506  * @start:      start PFN to allocate
7507  * @end:        one-past-the-last PFN to allocate
7508  * @migratetype:        migratetype of the underlaying pageblocks (either
7509  *                      #MIGRATE_MOVABLE or #MIGRATE_CMA).  All pageblocks
7510  *                      in range must have the same migratetype and it must
7511  *                      be either of the two.
7512  * @gfp_mask:   GFP mask to use during compaction
7513  *
7514  * The PFN range does not have to be pageblock or MAX_ORDER_NR_PAGES
7515  * aligned, however it's the caller's responsibility to guarantee that
7516  * we are the only thread that changes migrate type of pageblocks the
7517  * pages fall in.
7518  *
7519  * The PFN range must belong to a single zone.
7520  *
7521  * Returns zero on success or negative error code.  On success all
7522  * pages which PFN is in [start, end) are allocated for the caller and
7523  * need to be freed with free_contig_range().
7524  */
7525 int alloc_contig_range(unsigned long start, unsigned long end,
7526                        unsigned migratetype, gfp_t gfp_mask)
7527 {
7528         unsigned long outer_start, outer_end;
7529         unsigned int order;
7530         int ret = 0;
7531
7532         struct compact_control cc = {
7533                 .nr_migratepages = 0,
7534                 .order = -1,
7535                 .zone = page_zone(pfn_to_page(start)),
7536                 .mode = MIGRATE_SYNC,
7537                 .ignore_skip_hint = true,
7538                 .gfp_mask = current_gfp_context(gfp_mask),
7539         };
7540         INIT_LIST_HEAD(&cc.migratepages);
7541
7542         /*
7543          * What we do here is we mark all pageblocks in range as
7544          * MIGRATE_ISOLATE.  Because pageblock and max order pages may
7545          * have different sizes, and due to the way page allocator
7546          * work, we align the range to biggest of the two pages so
7547          * that page allocator won't try to merge buddies from
7548          * different pageblocks and change MIGRATE_ISOLATE to some
7549          * other migration type.
7550          *
7551          * Once the pageblocks are marked as MIGRATE_ISOLATE, we
7552          * migrate the pages from an unaligned range (ie. pages that
7553          * we are interested in).  This will put all the pages in
7554          * range back to page allocator as MIGRATE_ISOLATE.
7555          *
7556          * When this is done, we take the pages in range from page
7557          * allocator removing them from the buddy system.  This way
7558          * page allocator will never consider using them.
7559          *
7560          * This lets us mark the pageblocks back as
7561          * MIGRATE_CMA/MIGRATE_MOVABLE so that free pages in the
7562          * aligned range but not in the unaligned, original range are
7563          * put back to page allocator so that buddy can use them.
7564          */
7565
7566         ret = start_isolate_page_range(pfn_max_align_down(start),
7567                                        pfn_max_align_up(end), migratetype,
7568                                        false);
7569         if (ret)
7570                 return ret;
7571
7572         /*
7573          * In case of -EBUSY, we'd like to know which page causes problem.
7574          * So, just fall through. test_pages_isolated() has a tracepoint
7575          * which will report the busy page.
7576          *
7577          * It is possible that busy pages could become available before
7578          * the call to test_pages_isolated, and the range will actually be
7579          * allocated.  So, if we fall through be sure to clear ret so that
7580          * -EBUSY is not accidentally used or returned to caller.
7581          */
7582         ret = __alloc_contig_migrate_range(&cc, start, end);
7583         if (ret && ret != -EBUSY)
7584                 goto done;
7585         ret =0;
7586
7587         /*
7588          * Pages from [start, end) are within a MAX_ORDER_NR_PAGES
7589          * aligned blocks that are marked as MIGRATE_ISOLATE.  What's
7590          * more, all pages in [start, end) are free in page allocator.
7591          * What we are going to do is to allocate all pages from
7592          * [start, end) (that is remove them from page allocator).
7593          *
7594          * The only problem is that pages at the beginning and at the
7595          * end of interesting range may be not aligned with pages that
7596          * page allocator holds, ie. they can be part of higher order
7597          * pages.  Because of this, we reserve the bigger range and
7598          * once this is done free the pages we are not interested in.
7599          *
7600          * We don't have to hold zone->lock here because the pages are
7601          * isolated thus they won't get removed from buddy.
7602          */
7603
7604         lru_add_drain_all();
7605         drain_all_pages(cc.zone);
7606
7607         order = 0;
7608         outer_start = start;
7609         while (!PageBuddy(pfn_to_page(outer_start))) {
7610                 if (++order >= MAX_ORDER) {
7611                         outer_start = start;
7612                         break;
7613                 }
7614                 outer_start &= ~0UL << order;
7615         }
7616
7617         if (outer_start != start) {
7618                 order = page_order(pfn_to_page(outer_start));
7619
7620                 /*
7621                  * outer_start page could be small order buddy page and
7622                  * it doesn't include start page. Adjust outer_start
7623                  * in this case to report failed page properly
7624                  * on tracepoint in test_pages_isolated()
7625                  */
7626                 if (outer_start + (1UL << order) <= start)
7627                         outer_start = start;
7628         }
7629
7630         /* Make sure the range is really isolated. */
7631         if (test_pages_isolated(outer_start, end, false)) {
7632                 pr_info_ratelimited("%s: [%lx, %lx) PFNs busy\n",
7633                         __func__, outer_start, end);
7634                 ret = -EBUSY;
7635                 goto done;
7636         }
7637
7638         /* Grab isolated pages from freelists. */
7639         outer_end = isolate_freepages_range(&cc, outer_start, end);
7640         if (!outer_end) {
7641                 ret = -EBUSY;
7642                 goto done;
7643         }
7644
7645         /* Free head and tail (if any) */
7646         if (start != outer_start)
7647                 free_contig_range(outer_start, start - outer_start);
7648         if (end != outer_end)
7649                 free_contig_range(end, outer_end - end);
7650
7651 done:
7652         undo_isolate_page_range(pfn_max_align_down(start),
7653                                 pfn_max_align_up(end), migratetype);
7654         return ret;
7655 }
7656
7657 void free_contig_range(unsigned long pfn, unsigned nr_pages)
7658 {
7659         unsigned int count = 0;
7660
7661         for (; nr_pages--; pfn++) {
7662                 struct page *page = pfn_to_page(pfn);
7663
7664                 count += page_count(page) != 1;
7665                 __free_page(page);
7666         }
7667         WARN(count != 0, "%d pages are still in use!\n", count);
7668 }
7669 #endif
7670
7671 #ifdef CONFIG_MEMORY_HOTPLUG
7672 /*
7673  * The zone indicated has a new number of managed_pages; batch sizes and percpu
7674  * page high values need to be recalulated.
7675  */
7676 void __meminit zone_pcp_update(struct zone *zone)
7677 {
7678         unsigned cpu;
7679         mutex_lock(&pcp_batch_high_lock);
7680         for_each_possible_cpu(cpu)
7681                 pageset_set_high_and_batch(zone,
7682                                 per_cpu_ptr(zone->pageset, cpu));
7683         mutex_unlock(&pcp_batch_high_lock);
7684 }
7685 #endif
7686
7687 void zone_pcp_reset(struct zone *zone)
7688 {
7689         unsigned long flags;
7690         int cpu;
7691         struct per_cpu_pageset *pset;
7692
7693         /* avoid races with drain_pages()  */
7694         local_irq_save(flags);
7695         if (zone->pageset != &boot_pageset) {
7696                 for_each_online_cpu(cpu) {
7697                         pset = per_cpu_ptr(zone->pageset, cpu);
7698                         drain_zonestat(zone, pset);
7699                 }
7700                 free_percpu(zone->pageset);
7701                 zone->pageset = &boot_pageset;
7702         }
7703         local_irq_restore(flags);
7704 }
7705
7706 #ifdef CONFIG_MEMORY_HOTREMOVE
7707 /*
7708  * All pages in the range must be in a single zone and isolated
7709  * before calling this.
7710  */
7711 void
7712 __offline_isolated_pages(unsigned long start_pfn, unsigned long end_pfn)
7713 {
7714         struct page *page;
7715         struct zone *zone;
7716         unsigned int order, i;
7717         unsigned long pfn;
7718         unsigned long flags;
7719         /* find the first valid pfn */
7720         for (pfn = start_pfn; pfn < end_pfn; pfn++)
7721                 if (pfn_valid(pfn))
7722                         break;
7723         if (pfn == end_pfn)
7724                 return;
7725         offline_mem_sections(pfn, end_pfn);
7726         zone = page_zone(pfn_to_page(pfn));
7727         spin_lock_irqsave(&zone->lock, flags);
7728         pfn = start_pfn;
7729         while (pfn < end_pfn) {
7730                 if (!pfn_valid(pfn)) {
7731                         pfn++;
7732                         continue;
7733                 }
7734                 page = pfn_to_page(pfn);
7735                 /*
7736                  * The HWPoisoned page may be not in buddy system, and
7737                  * page_count() is not 0.
7738                  */
7739                 if (unlikely(!PageBuddy(page) && PageHWPoison(page))) {
7740                         pfn++;
7741                         SetPageReserved(page);
7742                         continue;
7743                 }
7744
7745                 BUG_ON(page_count(page));
7746                 BUG_ON(!PageBuddy(page));
7747                 order = page_order(page);
7748 #ifdef CONFIG_DEBUG_VM
7749                 pr_info("remove from free list %lx %d %lx\n",
7750                         pfn, 1 << order, end_pfn);
7751 #endif
7752                 list_del(&page->lru);
7753                 rmv_page_order(page);
7754                 zone->free_area[order].nr_free--;
7755                 for (i = 0; i < (1 << order); i++)
7756                         SetPageReserved((page+i));
7757                 pfn += (1 << order);
7758         }
7759         spin_unlock_irqrestore(&zone->lock, flags);
7760 }
7761 #endif
7762
7763 bool is_free_buddy_page(struct page *page)
7764 {
7765         struct zone *zone = page_zone(page);
7766         unsigned long pfn = page_to_pfn(page);
7767         unsigned long flags;
7768         unsigned int order;
7769
7770         spin_lock_irqsave(&zone->lock, flags);
7771         for (order = 0; order < MAX_ORDER; order++) {
7772                 struct page *page_head = page - (pfn & ((1 << order) - 1));
7773
7774                 if (PageBuddy(page_head) && page_order(page_head) >= order)
7775                         break;
7776         }
7777         spin_unlock_irqrestore(&zone->lock, flags);
7778
7779         return order < MAX_ORDER;
7780 }