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