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