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