]> Git Repo - linux.git/blob - mm/page_alloc.c
Merge tag 'powerpc-6.13-3' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc...
[linux.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/interrupt.h>
22 #include <linux/jiffies.h>
23 #include <linux/compiler.h>
24 #include <linux/kernel.h>
25 #include <linux/kasan.h>
26 #include <linux/kmsan.h>
27 #include <linux/module.h>
28 #include <linux/suspend.h>
29 #include <linux/ratelimit.h>
30 #include <linux/oom.h>
31 #include <linux/topology.h>
32 #include <linux/sysctl.h>
33 #include <linux/cpu.h>
34 #include <linux/cpuset.h>
35 #include <linux/pagevec.h>
36 #include <linux/memory_hotplug.h>
37 #include <linux/nodemask.h>
38 #include <linux/vmstat.h>
39 #include <linux/fault-inject.h>
40 #include <linux/compaction.h>
41 #include <trace/events/kmem.h>
42 #include <trace/events/oom.h>
43 #include <linux/prefetch.h>
44 #include <linux/mm_inline.h>
45 #include <linux/mmu_notifier.h>
46 #include <linux/migrate.h>
47 #include <linux/sched/mm.h>
48 #include <linux/page_owner.h>
49 #include <linux/page_table_check.h>
50 #include <linux/memcontrol.h>
51 #include <linux/ftrace.h>
52 #include <linux/lockdep.h>
53 #include <linux/psi.h>
54 #include <linux/khugepaged.h>
55 #include <linux/delayacct.h>
56 #include <linux/cacheinfo.h>
57 #include <linux/pgalloc_tag.h>
58 #include <asm/div64.h>
59 #include "internal.h"
60 #include "shuffle.h"
61 #include "page_reporting.h"
62
63 /* Free Page Internal flags: for internal, non-pcp variants of free_pages(). */
64 typedef int __bitwise fpi_t;
65
66 /* No special request */
67 #define FPI_NONE                ((__force fpi_t)0)
68
69 /*
70  * Skip free page reporting notification for the (possibly merged) page.
71  * This does not hinder free page reporting from grabbing the page,
72  * reporting it and marking it "reported" -  it only skips notifying
73  * the free page reporting infrastructure about a newly freed page. For
74  * example, used when temporarily pulling a page from a freelist and
75  * putting it back unmodified.
76  */
77 #define FPI_SKIP_REPORT_NOTIFY  ((__force fpi_t)BIT(0))
78
79 /*
80  * Place the (possibly merged) page to the tail of the freelist. Will ignore
81  * page shuffling (relevant code - e.g., memory onlining - is expected to
82  * shuffle the whole zone).
83  *
84  * Note: No code should rely on this flag for correctness - it's purely
85  *       to allow for optimizations when handing back either fresh pages
86  *       (memory onlining) or untouched pages (page isolation, free page
87  *       reporting).
88  */
89 #define FPI_TO_TAIL             ((__force fpi_t)BIT(1))
90
91 /* prevent >1 _updater_ of zone percpu pageset ->high and ->batch fields */
92 static DEFINE_MUTEX(pcp_batch_high_lock);
93 #define MIN_PERCPU_PAGELIST_HIGH_FRACTION (8)
94
95 #if defined(CONFIG_SMP) || defined(CONFIG_PREEMPT_RT)
96 /*
97  * On SMP, spin_trylock is sufficient protection.
98  * On PREEMPT_RT, spin_trylock is equivalent on both SMP and UP.
99  */
100 #define pcp_trylock_prepare(flags)      do { } while (0)
101 #define pcp_trylock_finish(flag)        do { } while (0)
102 #else
103
104 /* UP spin_trylock always succeeds so disable IRQs to prevent re-entrancy. */
105 #define pcp_trylock_prepare(flags)      local_irq_save(flags)
106 #define pcp_trylock_finish(flags)       local_irq_restore(flags)
107 #endif
108
109 /*
110  * Locking a pcp requires a PCP lookup followed by a spinlock. To avoid
111  * a migration causing the wrong PCP to be locked and remote memory being
112  * potentially allocated, pin the task to the CPU for the lookup+lock.
113  * preempt_disable is used on !RT because it is faster than migrate_disable.
114  * migrate_disable is used on RT because otherwise RT spinlock usage is
115  * interfered with and a high priority task cannot preempt the allocator.
116  */
117 #ifndef CONFIG_PREEMPT_RT
118 #define pcpu_task_pin()         preempt_disable()
119 #define pcpu_task_unpin()       preempt_enable()
120 #else
121 #define pcpu_task_pin()         migrate_disable()
122 #define pcpu_task_unpin()       migrate_enable()
123 #endif
124
125 /*
126  * Generic helper to lookup and a per-cpu variable with an embedded spinlock.
127  * Return value should be used with equivalent unlock helper.
128  */
129 #define pcpu_spin_lock(type, member, ptr)                               \
130 ({                                                                      \
131         type *_ret;                                                     \
132         pcpu_task_pin();                                                \
133         _ret = this_cpu_ptr(ptr);                                       \
134         spin_lock(&_ret->member);                                       \
135         _ret;                                                           \
136 })
137
138 #define pcpu_spin_trylock(type, member, ptr)                            \
139 ({                                                                      \
140         type *_ret;                                                     \
141         pcpu_task_pin();                                                \
142         _ret = this_cpu_ptr(ptr);                                       \
143         if (!spin_trylock(&_ret->member)) {                             \
144                 pcpu_task_unpin();                                      \
145                 _ret = NULL;                                            \
146         }                                                               \
147         _ret;                                                           \
148 })
149
150 #define pcpu_spin_unlock(member, ptr)                                   \
151 ({                                                                      \
152         spin_unlock(&ptr->member);                                      \
153         pcpu_task_unpin();                                              \
154 })
155
156 /* struct per_cpu_pages specific helpers. */
157 #define pcp_spin_lock(ptr)                                              \
158         pcpu_spin_lock(struct per_cpu_pages, lock, ptr)
159
160 #define pcp_spin_trylock(ptr)                                           \
161         pcpu_spin_trylock(struct per_cpu_pages, lock, ptr)
162
163 #define pcp_spin_unlock(ptr)                                            \
164         pcpu_spin_unlock(lock, ptr)
165
166 #ifdef CONFIG_USE_PERCPU_NUMA_NODE_ID
167 DEFINE_PER_CPU(int, numa_node);
168 EXPORT_PER_CPU_SYMBOL(numa_node);
169 #endif
170
171 DEFINE_STATIC_KEY_TRUE(vm_numa_stat_key);
172
173 #ifdef CONFIG_HAVE_MEMORYLESS_NODES
174 /*
175  * N.B., Do NOT reference the '_numa_mem_' per cpu variable directly.
176  * It will not be defined when CONFIG_HAVE_MEMORYLESS_NODES is not defined.
177  * Use the accessor functions set_numa_mem(), numa_mem_id() and cpu_to_mem()
178  * defined in <linux/topology.h>.
179  */
180 DEFINE_PER_CPU(int, _numa_mem_);                /* Kernel "local memory" node */
181 EXPORT_PER_CPU_SYMBOL(_numa_mem_);
182 #endif
183
184 static DEFINE_MUTEX(pcpu_drain_mutex);
185
186 #ifdef CONFIG_GCC_PLUGIN_LATENT_ENTROPY
187 volatile unsigned long latent_entropy __latent_entropy;
188 EXPORT_SYMBOL(latent_entropy);
189 #endif
190
191 /*
192  * Array of node states.
193  */
194 nodemask_t node_states[NR_NODE_STATES] __read_mostly = {
195         [N_POSSIBLE] = NODE_MASK_ALL,
196         [N_ONLINE] = { { [0] = 1UL } },
197 #ifndef CONFIG_NUMA
198         [N_NORMAL_MEMORY] = { { [0] = 1UL } },
199 #ifdef CONFIG_HIGHMEM
200         [N_HIGH_MEMORY] = { { [0] = 1UL } },
201 #endif
202         [N_MEMORY] = { { [0] = 1UL } },
203         [N_CPU] = { { [0] = 1UL } },
204 #endif  /* NUMA */
205 };
206 EXPORT_SYMBOL(node_states);
207
208 gfp_t gfp_allowed_mask __read_mostly = GFP_BOOT_MASK;
209
210 #ifdef CONFIG_HUGETLB_PAGE_SIZE_VARIABLE
211 unsigned int pageblock_order __read_mostly;
212 #endif
213
214 static void __free_pages_ok(struct page *page, unsigned int order,
215                             fpi_t fpi_flags);
216
217 /*
218  * results with 256, 32 in the lowmem_reserve sysctl:
219  *      1G machine -> (16M dma, 800M-16M normal, 1G-800M high)
220  *      1G machine -> (16M dma, 784M normal, 224M high)
221  *      NORMAL allocation will leave 784M/256 of ram reserved in the ZONE_DMA
222  *      HIGHMEM allocation will leave 224M/32 of ram reserved in ZONE_NORMAL
223  *      HIGHMEM allocation will leave (224M+784M)/256 of ram reserved in ZONE_DMA
224  *
225  * TBD: should special case ZONE_DMA32 machines here - in those we normally
226  * don't need any ZONE_NORMAL reservation
227  */
228 static int sysctl_lowmem_reserve_ratio[MAX_NR_ZONES] = {
229 #ifdef CONFIG_ZONE_DMA
230         [ZONE_DMA] = 256,
231 #endif
232 #ifdef CONFIG_ZONE_DMA32
233         [ZONE_DMA32] = 256,
234 #endif
235         [ZONE_NORMAL] = 32,
236 #ifdef CONFIG_HIGHMEM
237         [ZONE_HIGHMEM] = 0,
238 #endif
239         [ZONE_MOVABLE] = 0,
240 };
241
242 char * const zone_names[MAX_NR_ZONES] = {
243 #ifdef CONFIG_ZONE_DMA
244          "DMA",
245 #endif
246 #ifdef CONFIG_ZONE_DMA32
247          "DMA32",
248 #endif
249          "Normal",
250 #ifdef CONFIG_HIGHMEM
251          "HighMem",
252 #endif
253          "Movable",
254 #ifdef CONFIG_ZONE_DEVICE
255          "Device",
256 #endif
257 };
258
259 const char * const migratetype_names[MIGRATE_TYPES] = {
260         "Unmovable",
261         "Movable",
262         "Reclaimable",
263         "HighAtomic",
264 #ifdef CONFIG_CMA
265         "CMA",
266 #endif
267 #ifdef CONFIG_MEMORY_ISOLATION
268         "Isolate",
269 #endif
270 };
271
272 int min_free_kbytes = 1024;
273 int user_min_free_kbytes = -1;
274 static int watermark_boost_factor __read_mostly = 15000;
275 static int watermark_scale_factor = 10;
276
277 /* movable_zone is the "real" zone pages in ZONE_MOVABLE are taken from */
278 int movable_zone;
279 EXPORT_SYMBOL(movable_zone);
280
281 #if MAX_NUMNODES > 1
282 unsigned int nr_node_ids __read_mostly = MAX_NUMNODES;
283 unsigned int nr_online_nodes __read_mostly = 1;
284 EXPORT_SYMBOL(nr_node_ids);
285 EXPORT_SYMBOL(nr_online_nodes);
286 #endif
287
288 static bool page_contains_unaccepted(struct page *page, unsigned int order);
289 static bool cond_accept_memory(struct zone *zone, unsigned int order);
290 static bool __free_unaccepted(struct page *page);
291
292 int page_group_by_mobility_disabled __read_mostly;
293
294 #ifdef CONFIG_DEFERRED_STRUCT_PAGE_INIT
295 /*
296  * During boot we initialize deferred pages on-demand, as needed, but once
297  * page_alloc_init_late() has finished, the deferred pages are all initialized,
298  * and we can permanently disable that path.
299  */
300 DEFINE_STATIC_KEY_TRUE(deferred_pages);
301
302 static inline bool deferred_pages_enabled(void)
303 {
304         return static_branch_unlikely(&deferred_pages);
305 }
306
307 /*
308  * deferred_grow_zone() is __init, but it is called from
309  * get_page_from_freelist() during early boot until deferred_pages permanently
310  * disables this call. This is why we have refdata wrapper to avoid warning,
311  * and to ensure that the function body gets unloaded.
312  */
313 static bool __ref
314 _deferred_grow_zone(struct zone *zone, unsigned int order)
315 {
316         return deferred_grow_zone(zone, order);
317 }
318 #else
319 static inline bool deferred_pages_enabled(void)
320 {
321         return false;
322 }
323
324 static inline bool _deferred_grow_zone(struct zone *zone, unsigned int order)
325 {
326         return false;
327 }
328 #endif /* CONFIG_DEFERRED_STRUCT_PAGE_INIT */
329
330 /* Return a pointer to the bitmap storing bits affecting a block of pages */
331 static inline unsigned long *get_pageblock_bitmap(const struct page *page,
332                                                         unsigned long pfn)
333 {
334 #ifdef CONFIG_SPARSEMEM
335         return section_to_usemap(__pfn_to_section(pfn));
336 #else
337         return page_zone(page)->pageblock_flags;
338 #endif /* CONFIG_SPARSEMEM */
339 }
340
341 static inline int pfn_to_bitidx(const struct page *page, unsigned long pfn)
342 {
343 #ifdef CONFIG_SPARSEMEM
344         pfn &= (PAGES_PER_SECTION-1);
345 #else
346         pfn = pfn - pageblock_start_pfn(page_zone(page)->zone_start_pfn);
347 #endif /* CONFIG_SPARSEMEM */
348         return (pfn >> pageblock_order) * NR_PAGEBLOCK_BITS;
349 }
350
351 /**
352  * get_pfnblock_flags_mask - Return the requested group of flags for the pageblock_nr_pages block of pages
353  * @page: The page within the block of interest
354  * @pfn: The target page frame number
355  * @mask: mask of bits that the caller is interested in
356  *
357  * Return: pageblock_bits flags
358  */
359 unsigned long get_pfnblock_flags_mask(const struct page *page,
360                                         unsigned long pfn, unsigned long mask)
361 {
362         unsigned long *bitmap;
363         unsigned long bitidx, word_bitidx;
364         unsigned long word;
365
366         bitmap = get_pageblock_bitmap(page, pfn);
367         bitidx = pfn_to_bitidx(page, pfn);
368         word_bitidx = bitidx / BITS_PER_LONG;
369         bitidx &= (BITS_PER_LONG-1);
370         /*
371          * This races, without locks, with set_pfnblock_flags_mask(). Ensure
372          * a consistent read of the memory array, so that results, even though
373          * racy, are not corrupted.
374          */
375         word = READ_ONCE(bitmap[word_bitidx]);
376         return (word >> bitidx) & mask;
377 }
378
379 static __always_inline int get_pfnblock_migratetype(const struct page *page,
380                                         unsigned long pfn)
381 {
382         return get_pfnblock_flags_mask(page, pfn, MIGRATETYPE_MASK);
383 }
384
385 /**
386  * set_pfnblock_flags_mask - Set the requested group of flags for a pageblock_nr_pages block of pages
387  * @page: The page within the block of interest
388  * @flags: The flags to set
389  * @pfn: The target page frame number
390  * @mask: mask of bits that the caller is interested in
391  */
392 void set_pfnblock_flags_mask(struct page *page, unsigned long flags,
393                                         unsigned long pfn,
394                                         unsigned long mask)
395 {
396         unsigned long *bitmap;
397         unsigned long bitidx, word_bitidx;
398         unsigned long word;
399
400         BUILD_BUG_ON(NR_PAGEBLOCK_BITS != 4);
401         BUILD_BUG_ON(MIGRATE_TYPES > (1 << PB_migratetype_bits));
402
403         bitmap = get_pageblock_bitmap(page, pfn);
404         bitidx = pfn_to_bitidx(page, pfn);
405         word_bitidx = bitidx / BITS_PER_LONG;
406         bitidx &= (BITS_PER_LONG-1);
407
408         VM_BUG_ON_PAGE(!zone_spans_pfn(page_zone(page), pfn), page);
409
410         mask <<= bitidx;
411         flags <<= bitidx;
412
413         word = READ_ONCE(bitmap[word_bitidx]);
414         do {
415         } while (!try_cmpxchg(&bitmap[word_bitidx], &word, (word & ~mask) | flags));
416 }
417
418 void set_pageblock_migratetype(struct page *page, int migratetype)
419 {
420         if (unlikely(page_group_by_mobility_disabled &&
421                      migratetype < MIGRATE_PCPTYPES))
422                 migratetype = MIGRATE_UNMOVABLE;
423
424         set_pfnblock_flags_mask(page, (unsigned long)migratetype,
425                                 page_to_pfn(page), MIGRATETYPE_MASK);
426 }
427
428 #ifdef CONFIG_DEBUG_VM
429 static int page_outside_zone_boundaries(struct zone *zone, struct page *page)
430 {
431         int ret;
432         unsigned seq;
433         unsigned long pfn = page_to_pfn(page);
434         unsigned long sp, start_pfn;
435
436         do {
437                 seq = zone_span_seqbegin(zone);
438                 start_pfn = zone->zone_start_pfn;
439                 sp = zone->spanned_pages;
440                 ret = !zone_spans_pfn(zone, pfn);
441         } while (zone_span_seqretry(zone, seq));
442
443         if (ret)
444                 pr_err("page 0x%lx outside node %d zone %s [ 0x%lx - 0x%lx ]\n",
445                         pfn, zone_to_nid(zone), zone->name,
446                         start_pfn, start_pfn + sp);
447
448         return ret;
449 }
450
451 /*
452  * Temporary debugging check for pages not lying within a given zone.
453  */
454 static bool __maybe_unused bad_range(struct zone *zone, struct page *page)
455 {
456         if (page_outside_zone_boundaries(zone, page))
457                 return true;
458         if (zone != page_zone(page))
459                 return true;
460
461         return false;
462 }
463 #else
464 static inline bool __maybe_unused bad_range(struct zone *zone, struct page *page)
465 {
466         return false;
467 }
468 #endif
469
470 static void bad_page(struct page *page, const char *reason)
471 {
472         static unsigned long resume;
473         static unsigned long nr_shown;
474         static unsigned long nr_unshown;
475
476         /*
477          * Allow a burst of 60 reports, then keep quiet for that minute;
478          * or allow a steady drip of one report per second.
479          */
480         if (nr_shown == 60) {
481                 if (time_before(jiffies, resume)) {
482                         nr_unshown++;
483                         goto out;
484                 }
485                 if (nr_unshown) {
486                         pr_alert(
487                               "BUG: Bad page state: %lu messages suppressed\n",
488                                 nr_unshown);
489                         nr_unshown = 0;
490                 }
491                 nr_shown = 0;
492         }
493         if (nr_shown++ == 0)
494                 resume = jiffies + 60 * HZ;
495
496         pr_alert("BUG: Bad page state in process %s  pfn:%05lx\n",
497                 current->comm, page_to_pfn(page));
498         dump_page(page, reason);
499
500         print_modules();
501         dump_stack();
502 out:
503         /* Leave bad fields for debug, except PageBuddy could make trouble */
504         if (PageBuddy(page))
505                 __ClearPageBuddy(page);
506         add_taint(TAINT_BAD_PAGE, LOCKDEP_NOW_UNRELIABLE);
507 }
508
509 static inline unsigned int order_to_pindex(int migratetype, int order)
510 {
511         bool __maybe_unused movable;
512
513 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
514         if (order > PAGE_ALLOC_COSTLY_ORDER) {
515                 VM_BUG_ON(order != HPAGE_PMD_ORDER);
516
517                 movable = migratetype == MIGRATE_MOVABLE;
518
519                 return NR_LOWORDER_PCP_LISTS + movable;
520         }
521 #else
522         VM_BUG_ON(order > PAGE_ALLOC_COSTLY_ORDER);
523 #endif
524
525         return (MIGRATE_PCPTYPES * order) + migratetype;
526 }
527
528 static inline int pindex_to_order(unsigned int pindex)
529 {
530         int order = pindex / MIGRATE_PCPTYPES;
531
532 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
533         if (pindex >= NR_LOWORDER_PCP_LISTS)
534                 order = HPAGE_PMD_ORDER;
535 #else
536         VM_BUG_ON(order > PAGE_ALLOC_COSTLY_ORDER);
537 #endif
538
539         return order;
540 }
541
542 static inline bool pcp_allowed_order(unsigned int order)
543 {
544         if (order <= PAGE_ALLOC_COSTLY_ORDER)
545                 return true;
546 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
547         if (order == HPAGE_PMD_ORDER)
548                 return true;
549 #endif
550         return false;
551 }
552
553 /*
554  * Higher-order pages are called "compound pages".  They are structured thusly:
555  *
556  * The first PAGE_SIZE page is called the "head page" and have PG_head set.
557  *
558  * The remaining PAGE_SIZE pages are called "tail pages". PageTail() is encoded
559  * in bit 0 of page->compound_head. The rest of bits is pointer to head page.
560  *
561  * The first tail page's ->compound_order holds the order of allocation.
562  * This usage means that zero-order pages may not be compound.
563  */
564
565 void prep_compound_page(struct page *page, unsigned int order)
566 {
567         int i;
568         int nr_pages = 1 << order;
569
570         __SetPageHead(page);
571         for (i = 1; i < nr_pages; i++)
572                 prep_compound_tail(page, i);
573
574         prep_compound_head(page, order);
575 }
576
577 static inline void set_buddy_order(struct page *page, unsigned int order)
578 {
579         set_page_private(page, order);
580         __SetPageBuddy(page);
581 }
582
583 #ifdef CONFIG_COMPACTION
584 static inline struct capture_control *task_capc(struct zone *zone)
585 {
586         struct capture_control *capc = current->capture_control;
587
588         return unlikely(capc) &&
589                 !(current->flags & PF_KTHREAD) &&
590                 !capc->page &&
591                 capc->cc->zone == zone ? capc : NULL;
592 }
593
594 static inline bool
595 compaction_capture(struct capture_control *capc, struct page *page,
596                    int order, int migratetype)
597 {
598         if (!capc || order != capc->cc->order)
599                 return false;
600
601         /* Do not accidentally pollute CMA or isolated regions*/
602         if (is_migrate_cma(migratetype) ||
603             is_migrate_isolate(migratetype))
604                 return false;
605
606         /*
607          * Do not let lower order allocations pollute a movable pageblock
608          * unless compaction is also requesting movable pages.
609          * This might let an unmovable request use a reclaimable pageblock
610          * and vice-versa but no more than normal fallback logic which can
611          * have trouble finding a high-order free page.
612          */
613         if (order < pageblock_order && migratetype == MIGRATE_MOVABLE &&
614             capc->cc->migratetype != MIGRATE_MOVABLE)
615                 return false;
616
617         capc->page = page;
618         return true;
619 }
620
621 #else
622 static inline struct capture_control *task_capc(struct zone *zone)
623 {
624         return NULL;
625 }
626
627 static inline bool
628 compaction_capture(struct capture_control *capc, struct page *page,
629                    int order, int migratetype)
630 {
631         return false;
632 }
633 #endif /* CONFIG_COMPACTION */
634
635 static inline void account_freepages(struct zone *zone, int nr_pages,
636                                      int migratetype)
637 {
638         lockdep_assert_held(&zone->lock);
639
640         if (is_migrate_isolate(migratetype))
641                 return;
642
643         __mod_zone_page_state(zone, NR_FREE_PAGES, nr_pages);
644
645         if (is_migrate_cma(migratetype))
646                 __mod_zone_page_state(zone, NR_FREE_CMA_PAGES, nr_pages);
647         else if (is_migrate_highatomic(migratetype))
648                 WRITE_ONCE(zone->nr_free_highatomic,
649                            zone->nr_free_highatomic + nr_pages);
650 }
651
652 /* Used for pages not on another list */
653 static inline void __add_to_free_list(struct page *page, struct zone *zone,
654                                       unsigned int order, int migratetype,
655                                       bool tail)
656 {
657         struct free_area *area = &zone->free_area[order];
658
659         VM_WARN_ONCE(get_pageblock_migratetype(page) != migratetype,
660                      "page type is %lu, passed migratetype is %d (nr=%d)\n",
661                      get_pageblock_migratetype(page), migratetype, 1 << order);
662
663         if (tail)
664                 list_add_tail(&page->buddy_list, &area->free_list[migratetype]);
665         else
666                 list_add(&page->buddy_list, &area->free_list[migratetype]);
667         area->nr_free++;
668 }
669
670 /*
671  * Used for pages which are on another list. Move the pages to the tail
672  * of the list - so the moved pages won't immediately be considered for
673  * allocation again (e.g., optimization for memory onlining).
674  */
675 static inline void move_to_free_list(struct page *page, struct zone *zone,
676                                      unsigned int order, int old_mt, int new_mt)
677 {
678         struct free_area *area = &zone->free_area[order];
679
680         /* Free page moving can fail, so it happens before the type update */
681         VM_WARN_ONCE(get_pageblock_migratetype(page) != old_mt,
682                      "page type is %lu, passed migratetype is %d (nr=%d)\n",
683                      get_pageblock_migratetype(page), old_mt, 1 << order);
684
685         list_move_tail(&page->buddy_list, &area->free_list[new_mt]);
686
687         account_freepages(zone, -(1 << order), old_mt);
688         account_freepages(zone, 1 << order, new_mt);
689 }
690
691 static inline void __del_page_from_free_list(struct page *page, struct zone *zone,
692                                              unsigned int order, int migratetype)
693 {
694         VM_WARN_ONCE(get_pageblock_migratetype(page) != migratetype,
695                      "page type is %lu, passed migratetype is %d (nr=%d)\n",
696                      get_pageblock_migratetype(page), migratetype, 1 << order);
697
698         /* clear reported state and update reported page count */
699         if (page_reported(page))
700                 __ClearPageReported(page);
701
702         list_del(&page->buddy_list);
703         __ClearPageBuddy(page);
704         set_page_private(page, 0);
705         zone->free_area[order].nr_free--;
706 }
707
708 static inline void del_page_from_free_list(struct page *page, struct zone *zone,
709                                            unsigned int order, int migratetype)
710 {
711         __del_page_from_free_list(page, zone, order, migratetype);
712         account_freepages(zone, -(1 << order), migratetype);
713 }
714
715 static inline struct page *get_page_from_free_area(struct free_area *area,
716                                             int migratetype)
717 {
718         return list_first_entry_or_null(&area->free_list[migratetype],
719                                         struct page, buddy_list);
720 }
721
722 /*
723  * If this is less than the 2nd largest possible page, check if the buddy
724  * of the next-higher order is free. If it is, it's possible
725  * that pages are being freed that will coalesce soon. In case,
726  * that is happening, add the free page to the tail of the list
727  * so it's less likely to be used soon and more likely to be merged
728  * as a 2-level higher order page
729  */
730 static inline bool
731 buddy_merge_likely(unsigned long pfn, unsigned long buddy_pfn,
732                    struct page *page, unsigned int order)
733 {
734         unsigned long higher_page_pfn;
735         struct page *higher_page;
736
737         if (order >= MAX_PAGE_ORDER - 1)
738                 return false;
739
740         higher_page_pfn = buddy_pfn & pfn;
741         higher_page = page + (higher_page_pfn - pfn);
742
743         return find_buddy_page_pfn(higher_page, higher_page_pfn, order + 1,
744                         NULL) != NULL;
745 }
746
747 /*
748  * Freeing function for a buddy system allocator.
749  *
750  * The concept of a buddy system is to maintain direct-mapped table
751  * (containing bit values) for memory blocks of various "orders".
752  * The bottom level table contains the map for the smallest allocatable
753  * units of memory (here, pages), and each level above it describes
754  * pairs of units from the levels below, hence, "buddies".
755  * At a high level, all that happens here is marking the table entry
756  * at the bottom level available, and propagating the changes upward
757  * as necessary, plus some accounting needed to play nicely with other
758  * parts of the VM system.
759  * At each level, we keep a list of pages, which are heads of continuous
760  * free pages of length of (1 << order) and marked with PageBuddy.
761  * Page's order is recorded in page_private(page) field.
762  * So when we are allocating or freeing one, we can derive the state of the
763  * other.  That is, if we allocate a small block, and both were
764  * free, the remainder of the region must be split into blocks.
765  * If a block is freed, and its buddy is also free, then this
766  * triggers coalescing into a block of larger size.
767  *
768  * -- nyc
769  */
770
771 static inline void __free_one_page(struct page *page,
772                 unsigned long pfn,
773                 struct zone *zone, unsigned int order,
774                 int migratetype, fpi_t fpi_flags)
775 {
776         struct capture_control *capc = task_capc(zone);
777         unsigned long buddy_pfn = 0;
778         unsigned long combined_pfn;
779         struct page *buddy;
780         bool to_tail;
781
782         VM_BUG_ON(!zone_is_initialized(zone));
783         VM_BUG_ON_PAGE(page->flags & PAGE_FLAGS_CHECK_AT_PREP, page);
784
785         VM_BUG_ON(migratetype == -1);
786         VM_BUG_ON_PAGE(pfn & ((1 << order) - 1), page);
787         VM_BUG_ON_PAGE(bad_range(zone, page), page);
788
789         account_freepages(zone, 1 << order, migratetype);
790
791         while (order < MAX_PAGE_ORDER) {
792                 int buddy_mt = migratetype;
793
794                 if (compaction_capture(capc, page, order, migratetype)) {
795                         account_freepages(zone, -(1 << order), migratetype);
796                         return;
797                 }
798
799                 buddy = find_buddy_page_pfn(page, pfn, order, &buddy_pfn);
800                 if (!buddy)
801                         goto done_merging;
802
803                 if (unlikely(order >= pageblock_order)) {
804                         /*
805                          * We want to prevent merge between freepages on pageblock
806                          * without fallbacks and normal pageblock. Without this,
807                          * pageblock isolation could cause incorrect freepage or CMA
808                          * accounting or HIGHATOMIC accounting.
809                          */
810                         buddy_mt = get_pfnblock_migratetype(buddy, buddy_pfn);
811
812                         if (migratetype != buddy_mt &&
813                             (!migratetype_is_mergeable(migratetype) ||
814                              !migratetype_is_mergeable(buddy_mt)))
815                                 goto done_merging;
816                 }
817
818                 /*
819                  * Our buddy is free or it is CONFIG_DEBUG_PAGEALLOC guard page,
820                  * merge with it and move up one order.
821                  */
822                 if (page_is_guard(buddy))
823                         clear_page_guard(zone, buddy, order);
824                 else
825                         __del_page_from_free_list(buddy, zone, order, buddy_mt);
826
827                 if (unlikely(buddy_mt != migratetype)) {
828                         /*
829                          * Match buddy type. This ensures that an
830                          * expand() down the line puts the sub-blocks
831                          * on the right freelists.
832                          */
833                         set_pageblock_migratetype(buddy, migratetype);
834                 }
835
836                 combined_pfn = buddy_pfn & pfn;
837                 page = page + (combined_pfn - pfn);
838                 pfn = combined_pfn;
839                 order++;
840         }
841
842 done_merging:
843         set_buddy_order(page, order);
844
845         if (fpi_flags & FPI_TO_TAIL)
846                 to_tail = true;
847         else if (is_shuffle_order(order))
848                 to_tail = shuffle_pick_tail();
849         else
850                 to_tail = buddy_merge_likely(pfn, buddy_pfn, page, order);
851
852         __add_to_free_list(page, zone, order, migratetype, to_tail);
853
854         /* Notify page reporting subsystem of freed page */
855         if (!(fpi_flags & FPI_SKIP_REPORT_NOTIFY))
856                 page_reporting_notify_free(order);
857 }
858
859 /*
860  * A bad page could be due to a number of fields. Instead of multiple branches,
861  * try and check multiple fields with one check. The caller must do a detailed
862  * check if necessary.
863  */
864 static inline bool page_expected_state(struct page *page,
865                                         unsigned long check_flags)
866 {
867         if (unlikely(atomic_read(&page->_mapcount) != -1))
868                 return false;
869
870         if (unlikely((unsigned long)page->mapping |
871                         page_ref_count(page) |
872 #ifdef CONFIG_MEMCG
873                         page->memcg_data |
874 #endif
875 #ifdef CONFIG_PAGE_POOL
876                         ((page->pp_magic & ~0x3UL) == PP_SIGNATURE) |
877 #endif
878                         (page->flags & check_flags)))
879                 return false;
880
881         return true;
882 }
883
884 static const char *page_bad_reason(struct page *page, unsigned long flags)
885 {
886         const char *bad_reason = NULL;
887
888         if (unlikely(atomic_read(&page->_mapcount) != -1))
889                 bad_reason = "nonzero mapcount";
890         if (unlikely(page->mapping != NULL))
891                 bad_reason = "non-NULL mapping";
892         if (unlikely(page_ref_count(page) != 0))
893                 bad_reason = "nonzero _refcount";
894         if (unlikely(page->flags & flags)) {
895                 if (flags == PAGE_FLAGS_CHECK_AT_PREP)
896                         bad_reason = "PAGE_FLAGS_CHECK_AT_PREP flag(s) set";
897                 else
898                         bad_reason = "PAGE_FLAGS_CHECK_AT_FREE flag(s) set";
899         }
900 #ifdef CONFIG_MEMCG
901         if (unlikely(page->memcg_data))
902                 bad_reason = "page still charged to cgroup";
903 #endif
904 #ifdef CONFIG_PAGE_POOL
905         if (unlikely((page->pp_magic & ~0x3UL) == PP_SIGNATURE))
906                 bad_reason = "page_pool leak";
907 #endif
908         return bad_reason;
909 }
910
911 static void free_page_is_bad_report(struct page *page)
912 {
913         bad_page(page,
914                  page_bad_reason(page, PAGE_FLAGS_CHECK_AT_FREE));
915 }
916
917 static inline bool free_page_is_bad(struct page *page)
918 {
919         if (likely(page_expected_state(page, PAGE_FLAGS_CHECK_AT_FREE)))
920                 return false;
921
922         /* Something has gone sideways, find it */
923         free_page_is_bad_report(page);
924         return true;
925 }
926
927 static inline bool is_check_pages_enabled(void)
928 {
929         return static_branch_unlikely(&check_pages_enabled);
930 }
931
932 static int free_tail_page_prepare(struct page *head_page, struct page *page)
933 {
934         struct folio *folio = (struct folio *)head_page;
935         int ret = 1;
936
937         /*
938          * We rely page->lru.next never has bit 0 set, unless the page
939          * is PageTail(). Let's make sure that's true even for poisoned ->lru.
940          */
941         BUILD_BUG_ON((unsigned long)LIST_POISON1 & 1);
942
943         if (!is_check_pages_enabled()) {
944                 ret = 0;
945                 goto out;
946         }
947         switch (page - head_page) {
948         case 1:
949                 /* the first tail page: these may be in place of ->mapping */
950                 if (unlikely(folio_entire_mapcount(folio))) {
951                         bad_page(page, "nonzero entire_mapcount");
952                         goto out;
953                 }
954                 if (unlikely(folio_large_mapcount(folio))) {
955                         bad_page(page, "nonzero large_mapcount");
956                         goto out;
957                 }
958                 if (unlikely(atomic_read(&folio->_nr_pages_mapped))) {
959                         bad_page(page, "nonzero nr_pages_mapped");
960                         goto out;
961                 }
962                 if (unlikely(atomic_read(&folio->_pincount))) {
963                         bad_page(page, "nonzero pincount");
964                         goto out;
965                 }
966                 break;
967         case 2:
968                 /* the second tail page: deferred_list overlaps ->mapping */
969                 if (unlikely(!list_empty(&folio->_deferred_list))) {
970                         bad_page(page, "on deferred list");
971                         goto out;
972                 }
973                 break;
974         default:
975                 if (page->mapping != TAIL_MAPPING) {
976                         bad_page(page, "corrupted mapping in tail page");
977                         goto out;
978                 }
979                 break;
980         }
981         if (unlikely(!PageTail(page))) {
982                 bad_page(page, "PageTail not set");
983                 goto out;
984         }
985         if (unlikely(compound_head(page) != head_page)) {
986                 bad_page(page, "compound_head not consistent");
987                 goto out;
988         }
989         ret = 0;
990 out:
991         page->mapping = NULL;
992         clear_compound_head(page);
993         return ret;
994 }
995
996 /*
997  * Skip KASAN memory poisoning when either:
998  *
999  * 1. For generic KASAN: deferred memory initialization has not yet completed.
1000  *    Tag-based KASAN modes skip pages freed via deferred memory initialization
1001  *    using page tags instead (see below).
1002  * 2. For tag-based KASAN modes: the page has a match-all KASAN tag, indicating
1003  *    that error detection is disabled for accesses via the page address.
1004  *
1005  * Pages will have match-all tags in the following circumstances:
1006  *
1007  * 1. Pages are being initialized for the first time, including during deferred
1008  *    memory init; see the call to page_kasan_tag_reset in __init_single_page.
1009  * 2. The allocation was not unpoisoned due to __GFP_SKIP_KASAN, with the
1010  *    exception of pages unpoisoned by kasan_unpoison_vmalloc.
1011  * 3. The allocation was excluded from being checked due to sampling,
1012  *    see the call to kasan_unpoison_pages.
1013  *
1014  * Poisoning pages during deferred memory init will greatly lengthen the
1015  * process and cause problem in large memory systems as the deferred pages
1016  * initialization is done with interrupt disabled.
1017  *
1018  * Assuming that there will be no reference to those newly initialized
1019  * pages before they are ever allocated, this should have no effect on
1020  * KASAN memory tracking as the poison will be properly inserted at page
1021  * allocation time. The only corner case is when pages are allocated by
1022  * on-demand allocation and then freed again before the deferred pages
1023  * initialization is done, but this is not likely to happen.
1024  */
1025 static inline bool should_skip_kasan_poison(struct page *page)
1026 {
1027         if (IS_ENABLED(CONFIG_KASAN_GENERIC))
1028                 return deferred_pages_enabled();
1029
1030         return page_kasan_tag(page) == KASAN_TAG_KERNEL;
1031 }
1032
1033 static void kernel_init_pages(struct page *page, int numpages)
1034 {
1035         int i;
1036
1037         /* s390's use of memset() could override KASAN redzones. */
1038         kasan_disable_current();
1039         for (i = 0; i < numpages; i++)
1040                 clear_highpage_kasan_tagged(page + i);
1041         kasan_enable_current();
1042 }
1043
1044 __always_inline bool free_pages_prepare(struct page *page,
1045                         unsigned int order)
1046 {
1047         int bad = 0;
1048         bool skip_kasan_poison = should_skip_kasan_poison(page);
1049         bool init = want_init_on_free();
1050         bool compound = PageCompound(page);
1051         struct folio *folio = page_folio(page);
1052
1053         VM_BUG_ON_PAGE(PageTail(page), page);
1054
1055         trace_mm_page_free(page, order);
1056         kmsan_free_page(page, order);
1057
1058         if (memcg_kmem_online() && PageMemcgKmem(page))
1059                 __memcg_kmem_uncharge_page(page, order);
1060
1061         /*
1062          * In rare cases, when truncation or holepunching raced with
1063          * munlock after VM_LOCKED was cleared, Mlocked may still be
1064          * found set here.  This does not indicate a problem, unless
1065          * "unevictable_pgs_cleared" appears worryingly large.
1066          */
1067         if (unlikely(folio_test_mlocked(folio))) {
1068                 long nr_pages = folio_nr_pages(folio);
1069
1070                 __folio_clear_mlocked(folio);
1071                 zone_stat_mod_folio(folio, NR_MLOCK, -nr_pages);
1072                 count_vm_events(UNEVICTABLE_PGCLEARED, nr_pages);
1073         }
1074
1075         if (unlikely(PageHWPoison(page)) && !order) {
1076                 /* Do not let hwpoison pages hit pcplists/buddy */
1077                 reset_page_owner(page, order);
1078                 page_table_check_free(page, order);
1079                 pgalloc_tag_sub(page, 1 << order);
1080
1081                 /*
1082                  * The page is isolated and accounted for.
1083                  * Mark the codetag as empty to avoid accounting error
1084                  * when the page is freed by unpoison_memory().
1085                  */
1086                 clear_page_tag_ref(page);
1087                 return false;
1088         }
1089
1090         VM_BUG_ON_PAGE(compound && compound_order(page) != order, page);
1091
1092         /*
1093          * Check tail pages before head page information is cleared to
1094          * avoid checking PageCompound for order-0 pages.
1095          */
1096         if (unlikely(order)) {
1097                 int i;
1098
1099                 if (compound)
1100                         page[1].flags &= ~PAGE_FLAGS_SECOND;
1101                 for (i = 1; i < (1 << order); i++) {
1102                         if (compound)
1103                                 bad += free_tail_page_prepare(page, page + i);
1104                         if (is_check_pages_enabled()) {
1105                                 if (free_page_is_bad(page + i)) {
1106                                         bad++;
1107                                         continue;
1108                                 }
1109                         }
1110                         (page + i)->flags &= ~PAGE_FLAGS_CHECK_AT_PREP;
1111                 }
1112         }
1113         if (PageMappingFlags(page)) {
1114                 if (PageAnon(page))
1115                         mod_mthp_stat(order, MTHP_STAT_NR_ANON, -1);
1116                 page->mapping = NULL;
1117         }
1118         if (is_check_pages_enabled()) {
1119                 if (free_page_is_bad(page))
1120                         bad++;
1121                 if (bad)
1122                         return false;
1123         }
1124
1125         page_cpupid_reset_last(page);
1126         page->flags &= ~PAGE_FLAGS_CHECK_AT_PREP;
1127         reset_page_owner(page, order);
1128         page_table_check_free(page, order);
1129         pgalloc_tag_sub(page, 1 << order);
1130
1131         if (!PageHighMem(page)) {
1132                 debug_check_no_locks_freed(page_address(page),
1133                                            PAGE_SIZE << order);
1134                 debug_check_no_obj_freed(page_address(page),
1135                                            PAGE_SIZE << order);
1136         }
1137
1138         kernel_poison_pages(page, 1 << order);
1139
1140         /*
1141          * As memory initialization might be integrated into KASAN,
1142          * KASAN poisoning and memory initialization code must be
1143          * kept together to avoid discrepancies in behavior.
1144          *
1145          * With hardware tag-based KASAN, memory tags must be set before the
1146          * page becomes unavailable via debug_pagealloc or arch_free_page.
1147          */
1148         if (!skip_kasan_poison) {
1149                 kasan_poison_pages(page, order, init);
1150
1151                 /* Memory is already initialized if KASAN did it internally. */
1152                 if (kasan_has_integrated_init())
1153                         init = false;
1154         }
1155         if (init)
1156                 kernel_init_pages(page, 1 << order);
1157
1158         /*
1159          * arch_free_page() can make the page's contents inaccessible.  s390
1160          * does this.  So nothing which can access the page's contents should
1161          * happen after this.
1162          */
1163         arch_free_page(page, order);
1164
1165         debug_pagealloc_unmap_pages(page, 1 << order);
1166
1167         return true;
1168 }
1169
1170 /*
1171  * Frees a number of pages from the PCP lists
1172  * Assumes all pages on list are in same zone.
1173  * count is the number of pages to free.
1174  */
1175 static void free_pcppages_bulk(struct zone *zone, int count,
1176                                         struct per_cpu_pages *pcp,
1177                                         int pindex)
1178 {
1179         unsigned long flags;
1180         unsigned int order;
1181         struct page *page;
1182
1183         /*
1184          * Ensure proper count is passed which otherwise would stuck in the
1185          * below while (list_empty(list)) loop.
1186          */
1187         count = min(pcp->count, count);
1188
1189         /* Ensure requested pindex is drained first. */
1190         pindex = pindex - 1;
1191
1192         spin_lock_irqsave(&zone->lock, flags);
1193
1194         while (count > 0) {
1195                 struct list_head *list;
1196                 int nr_pages;
1197
1198                 /* Remove pages from lists in a round-robin fashion. */
1199                 do {
1200                         if (++pindex > NR_PCP_LISTS - 1)
1201                                 pindex = 0;
1202                         list = &pcp->lists[pindex];
1203                 } while (list_empty(list));
1204
1205                 order = pindex_to_order(pindex);
1206                 nr_pages = 1 << order;
1207                 do {
1208                         unsigned long pfn;
1209                         int mt;
1210
1211                         page = list_last_entry(list, struct page, pcp_list);
1212                         pfn = page_to_pfn(page);
1213                         mt = get_pfnblock_migratetype(page, pfn);
1214
1215                         /* must delete to avoid corrupting pcp list */
1216                         list_del(&page->pcp_list);
1217                         count -= nr_pages;
1218                         pcp->count -= nr_pages;
1219
1220                         __free_one_page(page, pfn, zone, order, mt, FPI_NONE);
1221                         trace_mm_page_pcpu_drain(page, order, mt);
1222                 } while (count > 0 && !list_empty(list));
1223         }
1224
1225         spin_unlock_irqrestore(&zone->lock, flags);
1226 }
1227
1228 /* Split a multi-block free page into its individual pageblocks. */
1229 static void split_large_buddy(struct zone *zone, struct page *page,
1230                               unsigned long pfn, int order, fpi_t fpi)
1231 {
1232         unsigned long end = pfn + (1 << order);
1233
1234         VM_WARN_ON_ONCE(!IS_ALIGNED(pfn, 1 << order));
1235         /* Caller removed page from freelist, buddy info cleared! */
1236         VM_WARN_ON_ONCE(PageBuddy(page));
1237
1238         if (order > pageblock_order)
1239                 order = pageblock_order;
1240
1241         do {
1242                 int mt = get_pfnblock_migratetype(page, pfn);
1243
1244                 __free_one_page(page, pfn, zone, order, mt, fpi);
1245                 pfn += 1 << order;
1246                 if (pfn == end)
1247                         break;
1248                 page = pfn_to_page(pfn);
1249         } while (1);
1250 }
1251
1252 static void free_one_page(struct zone *zone, struct page *page,
1253                           unsigned long pfn, unsigned int order,
1254                           fpi_t fpi_flags)
1255 {
1256         unsigned long flags;
1257
1258         spin_lock_irqsave(&zone->lock, flags);
1259         split_large_buddy(zone, page, pfn, order, fpi_flags);
1260         spin_unlock_irqrestore(&zone->lock, flags);
1261
1262         __count_vm_events(PGFREE, 1 << order);
1263 }
1264
1265 static void __free_pages_ok(struct page *page, unsigned int order,
1266                             fpi_t fpi_flags)
1267 {
1268         unsigned long pfn = page_to_pfn(page);
1269         struct zone *zone = page_zone(page);
1270
1271         if (free_pages_prepare(page, order))
1272                 free_one_page(zone, page, pfn, order, fpi_flags);
1273 }
1274
1275 void __meminit __free_pages_core(struct page *page, unsigned int order,
1276                 enum meminit_context context)
1277 {
1278         unsigned int nr_pages = 1 << order;
1279         struct page *p = page;
1280         unsigned int loop;
1281
1282         /*
1283          * When initializing the memmap, __init_single_page() sets the refcount
1284          * of all pages to 1 ("allocated"/"not free"). We have to set the
1285          * refcount of all involved pages to 0.
1286          *
1287          * Note that hotplugged memory pages are initialized to PageOffline().
1288          * Pages freed from memblock might be marked as reserved.
1289          */
1290         if (IS_ENABLED(CONFIG_MEMORY_HOTPLUG) &&
1291             unlikely(context == MEMINIT_HOTPLUG)) {
1292                 for (loop = 0; loop < nr_pages; loop++, p++) {
1293                         VM_WARN_ON_ONCE(PageReserved(p));
1294                         __ClearPageOffline(p);
1295                         set_page_count(p, 0);
1296                 }
1297
1298                 /*
1299                  * Freeing the page with debug_pagealloc enabled will try to
1300                  * unmap it; some archs don't like double-unmappings, so
1301                  * map it first.
1302                  */
1303                 debug_pagealloc_map_pages(page, nr_pages);
1304                 adjust_managed_page_count(page, nr_pages);
1305         } else {
1306                 for (loop = 0; loop < nr_pages; loop++, p++) {
1307                         __ClearPageReserved(p);
1308                         set_page_count(p, 0);
1309                 }
1310
1311                 /* memblock adjusts totalram_pages() manually. */
1312                 atomic_long_add(nr_pages, &page_zone(page)->managed_pages);
1313         }
1314
1315         if (page_contains_unaccepted(page, order)) {
1316                 if (order == MAX_PAGE_ORDER && __free_unaccepted(page))
1317                         return;
1318
1319                 accept_memory(page_to_phys(page), PAGE_SIZE << order);
1320         }
1321
1322         /*
1323          * Bypass PCP and place fresh pages right to the tail, primarily
1324          * relevant for memory onlining.
1325          */
1326         __free_pages_ok(page, order, FPI_TO_TAIL);
1327 }
1328
1329 /*
1330  * Check that the whole (or subset of) a pageblock given by the interval of
1331  * [start_pfn, end_pfn) is valid and within the same zone, before scanning it
1332  * with the migration of free compaction scanner.
1333  *
1334  * Return struct page pointer of start_pfn, or NULL if checks were not passed.
1335  *
1336  * It's possible on some configurations to have a setup like node0 node1 node0
1337  * i.e. it's possible that all pages within a zones range of pages do not
1338  * belong to a single zone. We assume that a border between node0 and node1
1339  * can occur within a single pageblock, but not a node0 node1 node0
1340  * interleaving within a single pageblock. It is therefore sufficient to check
1341  * the first and last page of a pageblock and avoid checking each individual
1342  * page in a pageblock.
1343  *
1344  * Note: the function may return non-NULL struct page even for a page block
1345  * which contains a memory hole (i.e. there is no physical memory for a subset
1346  * of the pfn range). For example, if the pageblock order is MAX_PAGE_ORDER, which
1347  * will fall into 2 sub-sections, and the end pfn of the pageblock may be hole
1348  * even though the start pfn is online and valid. This should be safe most of
1349  * the time because struct pages are still initialized via init_unavailable_range()
1350  * and pfn walkers shouldn't touch any physical memory range for which they do
1351  * not recognize any specific metadata in struct pages.
1352  */
1353 struct page *__pageblock_pfn_to_page(unsigned long start_pfn,
1354                                      unsigned long end_pfn, struct zone *zone)
1355 {
1356         struct page *start_page;
1357         struct page *end_page;
1358
1359         /* end_pfn is one past the range we are checking */
1360         end_pfn--;
1361
1362         if (!pfn_valid(end_pfn))
1363                 return NULL;
1364
1365         start_page = pfn_to_online_page(start_pfn);
1366         if (!start_page)
1367                 return NULL;
1368
1369         if (page_zone(start_page) != zone)
1370                 return NULL;
1371
1372         end_page = pfn_to_page(end_pfn);
1373
1374         /* This gives a shorter code than deriving page_zone(end_page) */
1375         if (page_zone_id(start_page) != page_zone_id(end_page))
1376                 return NULL;
1377
1378         return start_page;
1379 }
1380
1381 /*
1382  * The order of subdivision here is critical for the IO subsystem.
1383  * Please do not alter this order without good reasons and regression
1384  * testing. Specifically, as large blocks of memory are subdivided,
1385  * the order in which smaller blocks are delivered depends on the order
1386  * they're subdivided in this function. This is the primary factor
1387  * influencing the order in which pages are delivered to the IO
1388  * subsystem according to empirical testing, and this is also justified
1389  * by considering the behavior of a buddy system containing a single
1390  * large block of memory acted on by a series of small allocations.
1391  * This behavior is a critical factor in sglist merging's success.
1392  *
1393  * -- nyc
1394  */
1395 static inline unsigned int expand(struct zone *zone, struct page *page, int low,
1396                                   int high, int migratetype)
1397 {
1398         unsigned int size = 1 << high;
1399         unsigned int nr_added = 0;
1400
1401         while (high > low) {
1402                 high--;
1403                 size >>= 1;
1404                 VM_BUG_ON_PAGE(bad_range(zone, &page[size]), &page[size]);
1405
1406                 /*
1407                  * Mark as guard pages (or page), that will allow to
1408                  * merge back to allocator when buddy will be freed.
1409                  * Corresponding page table entries will not be touched,
1410                  * pages will stay not present in virtual address space
1411                  */
1412                 if (set_page_guard(zone, &page[size], high))
1413                         continue;
1414
1415                 __add_to_free_list(&page[size], zone, high, migratetype, false);
1416                 set_buddy_order(&page[size], high);
1417                 nr_added += size;
1418         }
1419
1420         return nr_added;
1421 }
1422
1423 static __always_inline void page_del_and_expand(struct zone *zone,
1424                                                 struct page *page, int low,
1425                                                 int high, int migratetype)
1426 {
1427         int nr_pages = 1 << high;
1428
1429         __del_page_from_free_list(page, zone, high, migratetype);
1430         nr_pages -= expand(zone, page, low, high, migratetype);
1431         account_freepages(zone, -nr_pages, migratetype);
1432 }
1433
1434 static void check_new_page_bad(struct page *page)
1435 {
1436         if (unlikely(page->flags & __PG_HWPOISON)) {
1437                 /* Don't complain about hwpoisoned pages */
1438                 if (PageBuddy(page))
1439                         __ClearPageBuddy(page);
1440                 return;
1441         }
1442
1443         bad_page(page,
1444                  page_bad_reason(page, PAGE_FLAGS_CHECK_AT_PREP));
1445 }
1446
1447 /*
1448  * This page is about to be returned from the page allocator
1449  */
1450 static bool check_new_page(struct page *page)
1451 {
1452         if (likely(page_expected_state(page,
1453                                 PAGE_FLAGS_CHECK_AT_PREP|__PG_HWPOISON)))
1454                 return false;
1455
1456         check_new_page_bad(page);
1457         return true;
1458 }
1459
1460 static inline bool check_new_pages(struct page *page, unsigned int order)
1461 {
1462         if (is_check_pages_enabled()) {
1463                 for (int i = 0; i < (1 << order); i++) {
1464                         struct page *p = page + i;
1465
1466                         if (check_new_page(p))
1467                                 return true;
1468                 }
1469         }
1470
1471         return false;
1472 }
1473
1474 static inline bool should_skip_kasan_unpoison(gfp_t flags)
1475 {
1476         /* Don't skip if a software KASAN mode is enabled. */
1477         if (IS_ENABLED(CONFIG_KASAN_GENERIC) ||
1478             IS_ENABLED(CONFIG_KASAN_SW_TAGS))
1479                 return false;
1480
1481         /* Skip, if hardware tag-based KASAN is not enabled. */
1482         if (!kasan_hw_tags_enabled())
1483                 return true;
1484
1485         /*
1486          * With hardware tag-based KASAN enabled, skip if this has been
1487          * requested via __GFP_SKIP_KASAN.
1488          */
1489         return flags & __GFP_SKIP_KASAN;
1490 }
1491
1492 static inline bool should_skip_init(gfp_t flags)
1493 {
1494         /* Don't skip, if hardware tag-based KASAN is not enabled. */
1495         if (!kasan_hw_tags_enabled())
1496                 return false;
1497
1498         /* For hardware tag-based KASAN, skip if requested. */
1499         return (flags & __GFP_SKIP_ZERO);
1500 }
1501
1502 inline void post_alloc_hook(struct page *page, unsigned int order,
1503                                 gfp_t gfp_flags)
1504 {
1505         bool init = !want_init_on_free() && want_init_on_alloc(gfp_flags) &&
1506                         !should_skip_init(gfp_flags);
1507         bool zero_tags = init && (gfp_flags & __GFP_ZEROTAGS);
1508         int i;
1509
1510         set_page_private(page, 0);
1511         set_page_refcounted(page);
1512
1513         arch_alloc_page(page, order);
1514         debug_pagealloc_map_pages(page, 1 << order);
1515
1516         /*
1517          * Page unpoisoning must happen before memory initialization.
1518          * Otherwise, the poison pattern will be overwritten for __GFP_ZERO
1519          * allocations and the page unpoisoning code will complain.
1520          */
1521         kernel_unpoison_pages(page, 1 << order);
1522
1523         /*
1524          * As memory initialization might be integrated into KASAN,
1525          * KASAN unpoisoning and memory initializion code must be
1526          * kept together to avoid discrepancies in behavior.
1527          */
1528
1529         /*
1530          * If memory tags should be zeroed
1531          * (which happens only when memory should be initialized as well).
1532          */
1533         if (zero_tags) {
1534                 /* Initialize both memory and memory tags. */
1535                 for (i = 0; i != 1 << order; ++i)
1536                         tag_clear_highpage(page + i);
1537
1538                 /* Take note that memory was initialized by the loop above. */
1539                 init = false;
1540         }
1541         if (!should_skip_kasan_unpoison(gfp_flags) &&
1542             kasan_unpoison_pages(page, order, init)) {
1543                 /* Take note that memory was initialized by KASAN. */
1544                 if (kasan_has_integrated_init())
1545                         init = false;
1546         } else {
1547                 /*
1548                  * If memory tags have not been set by KASAN, reset the page
1549                  * tags to ensure page_address() dereferencing does not fault.
1550                  */
1551                 for (i = 0; i != 1 << order; ++i)
1552                         page_kasan_tag_reset(page + i);
1553         }
1554         /* If memory is still not initialized, initialize it now. */
1555         if (init)
1556                 kernel_init_pages(page, 1 << order);
1557
1558         set_page_owner(page, order, gfp_flags);
1559         page_table_check_alloc(page, order);
1560         pgalloc_tag_add(page, current, 1 << order);
1561 }
1562
1563 static void prep_new_page(struct page *page, unsigned int order, gfp_t gfp_flags,
1564                                                         unsigned int alloc_flags)
1565 {
1566         post_alloc_hook(page, order, gfp_flags);
1567
1568         if (order && (gfp_flags & __GFP_COMP))
1569                 prep_compound_page(page, order);
1570
1571         /*
1572          * page is set pfmemalloc when ALLOC_NO_WATERMARKS was necessary to
1573          * allocate the page. The expectation is that the caller is taking
1574          * steps that will free more memory. The caller should avoid the page
1575          * being used for !PFMEMALLOC purposes.
1576          */
1577         if (alloc_flags & ALLOC_NO_WATERMARKS)
1578                 set_page_pfmemalloc(page);
1579         else
1580                 clear_page_pfmemalloc(page);
1581 }
1582
1583 /*
1584  * Go through the free lists for the given migratetype and remove
1585  * the smallest available page from the freelists
1586  */
1587 static __always_inline
1588 struct page *__rmqueue_smallest(struct zone *zone, unsigned int order,
1589                                                 int migratetype)
1590 {
1591         unsigned int current_order;
1592         struct free_area *area;
1593         struct page *page;
1594
1595         /* Find a page of the appropriate size in the preferred list */
1596         for (current_order = order; current_order < NR_PAGE_ORDERS; ++current_order) {
1597                 area = &(zone->free_area[current_order]);
1598                 page = get_page_from_free_area(area, migratetype);
1599                 if (!page)
1600                         continue;
1601
1602                 page_del_and_expand(zone, page, order, current_order,
1603                                     migratetype);
1604                 trace_mm_page_alloc_zone_locked(page, order, migratetype,
1605                                 pcp_allowed_order(order) &&
1606                                 migratetype < MIGRATE_PCPTYPES);
1607                 return page;
1608         }
1609
1610         return NULL;
1611 }
1612
1613
1614 /*
1615  * This array describes the order lists are fallen back to when
1616  * the free lists for the desirable migrate type are depleted
1617  *
1618  * The other migratetypes do not have fallbacks.
1619  */
1620 static int fallbacks[MIGRATE_PCPTYPES][MIGRATE_PCPTYPES - 1] = {
1621         [MIGRATE_UNMOVABLE]   = { MIGRATE_RECLAIMABLE, MIGRATE_MOVABLE   },
1622         [MIGRATE_MOVABLE]     = { MIGRATE_RECLAIMABLE, MIGRATE_UNMOVABLE },
1623         [MIGRATE_RECLAIMABLE] = { MIGRATE_UNMOVABLE,   MIGRATE_MOVABLE   },
1624 };
1625
1626 #ifdef CONFIG_CMA
1627 static __always_inline struct page *__rmqueue_cma_fallback(struct zone *zone,
1628                                         unsigned int order)
1629 {
1630         return __rmqueue_smallest(zone, order, MIGRATE_CMA);
1631 }
1632 #else
1633 static inline struct page *__rmqueue_cma_fallback(struct zone *zone,
1634                                         unsigned int order) { return NULL; }
1635 #endif
1636
1637 /*
1638  * Change the type of a block and move all its free pages to that
1639  * type's freelist.
1640  */
1641 static int __move_freepages_block(struct zone *zone, unsigned long start_pfn,
1642                                   int old_mt, int new_mt)
1643 {
1644         struct page *page;
1645         unsigned long pfn, end_pfn;
1646         unsigned int order;
1647         int pages_moved = 0;
1648
1649         VM_WARN_ON(start_pfn & (pageblock_nr_pages - 1));
1650         end_pfn = pageblock_end_pfn(start_pfn);
1651
1652         for (pfn = start_pfn; pfn < end_pfn;) {
1653                 page = pfn_to_page(pfn);
1654                 if (!PageBuddy(page)) {
1655                         pfn++;
1656                         continue;
1657                 }
1658
1659                 /* Make sure we are not inadvertently changing nodes */
1660                 VM_BUG_ON_PAGE(page_to_nid(page) != zone_to_nid(zone), page);
1661                 VM_BUG_ON_PAGE(page_zone(page) != zone, page);
1662
1663                 order = buddy_order(page);
1664
1665                 move_to_free_list(page, zone, order, old_mt, new_mt);
1666
1667                 pfn += 1 << order;
1668                 pages_moved += 1 << order;
1669         }
1670
1671         set_pageblock_migratetype(pfn_to_page(start_pfn), new_mt);
1672
1673         return pages_moved;
1674 }
1675
1676 static bool prep_move_freepages_block(struct zone *zone, struct page *page,
1677                                       unsigned long *start_pfn,
1678                                       int *num_free, int *num_movable)
1679 {
1680         unsigned long pfn, start, end;
1681
1682         pfn = page_to_pfn(page);
1683         start = pageblock_start_pfn(pfn);
1684         end = pageblock_end_pfn(pfn);
1685
1686         /*
1687          * The caller only has the lock for @zone, don't touch ranges
1688          * that straddle into other zones. While we could move part of
1689          * the range that's inside the zone, this call is usually
1690          * accompanied by other operations such as migratetype updates
1691          * which also should be locked.
1692          */
1693         if (!zone_spans_pfn(zone, start))
1694                 return false;
1695         if (!zone_spans_pfn(zone, end - 1))
1696                 return false;
1697
1698         *start_pfn = start;
1699
1700         if (num_free) {
1701                 *num_free = 0;
1702                 *num_movable = 0;
1703                 for (pfn = start; pfn < end;) {
1704                         page = pfn_to_page(pfn);
1705                         if (PageBuddy(page)) {
1706                                 int nr = 1 << buddy_order(page);
1707
1708                                 *num_free += nr;
1709                                 pfn += nr;
1710                                 continue;
1711                         }
1712                         /*
1713                          * We assume that pages that could be isolated for
1714                          * migration are movable. But we don't actually try
1715                          * isolating, as that would be expensive.
1716                          */
1717                         if (PageLRU(page) || __PageMovable(page))
1718                                 (*num_movable)++;
1719                         pfn++;
1720                 }
1721         }
1722
1723         return true;
1724 }
1725
1726 static int move_freepages_block(struct zone *zone, struct page *page,
1727                                 int old_mt, int new_mt)
1728 {
1729         unsigned long start_pfn;
1730
1731         if (!prep_move_freepages_block(zone, page, &start_pfn, NULL, NULL))
1732                 return -1;
1733
1734         return __move_freepages_block(zone, start_pfn, old_mt, new_mt);
1735 }
1736
1737 #ifdef CONFIG_MEMORY_ISOLATION
1738 /* Look for a buddy that straddles start_pfn */
1739 static unsigned long find_large_buddy(unsigned long start_pfn)
1740 {
1741         int order = 0;
1742         struct page *page;
1743         unsigned long pfn = start_pfn;
1744
1745         while (!PageBuddy(page = pfn_to_page(pfn))) {
1746                 /* Nothing found */
1747                 if (++order > MAX_PAGE_ORDER)
1748                         return start_pfn;
1749                 pfn &= ~0UL << order;
1750         }
1751
1752         /*
1753          * Found a preceding buddy, but does it straddle?
1754          */
1755         if (pfn + (1 << buddy_order(page)) > start_pfn)
1756                 return pfn;
1757
1758         /* Nothing found */
1759         return start_pfn;
1760 }
1761
1762 /**
1763  * move_freepages_block_isolate - move free pages in block for page isolation
1764  * @zone: the zone
1765  * @page: the pageblock page
1766  * @migratetype: migratetype to set on the pageblock
1767  *
1768  * This is similar to move_freepages_block(), but handles the special
1769  * case encountered in page isolation, where the block of interest
1770  * might be part of a larger buddy spanning multiple pageblocks.
1771  *
1772  * Unlike the regular page allocator path, which moves pages while
1773  * stealing buddies off the freelist, page isolation is interested in
1774  * arbitrary pfn ranges that may have overlapping buddies on both ends.
1775  *
1776  * This function handles that. Straddling buddies are split into
1777  * individual pageblocks. Only the block of interest is moved.
1778  *
1779  * Returns %true if pages could be moved, %false otherwise.
1780  */
1781 bool move_freepages_block_isolate(struct zone *zone, struct page *page,
1782                                   int migratetype)
1783 {
1784         unsigned long start_pfn, pfn;
1785
1786         if (!prep_move_freepages_block(zone, page, &start_pfn, NULL, NULL))
1787                 return false;
1788
1789         /* No splits needed if buddies can't span multiple blocks */
1790         if (pageblock_order == MAX_PAGE_ORDER)
1791                 goto move;
1792
1793         /* We're a tail block in a larger buddy */
1794         pfn = find_large_buddy(start_pfn);
1795         if (pfn != start_pfn) {
1796                 struct page *buddy = pfn_to_page(pfn);
1797                 int order = buddy_order(buddy);
1798
1799                 del_page_from_free_list(buddy, zone, order,
1800                                         get_pfnblock_migratetype(buddy, pfn));
1801                 set_pageblock_migratetype(page, migratetype);
1802                 split_large_buddy(zone, buddy, pfn, order, FPI_NONE);
1803                 return true;
1804         }
1805
1806         /* We're the starting block of a larger buddy */
1807         if (PageBuddy(page) && buddy_order(page) > pageblock_order) {
1808                 int order = buddy_order(page);
1809
1810                 del_page_from_free_list(page, zone, order,
1811                                         get_pfnblock_migratetype(page, pfn));
1812                 set_pageblock_migratetype(page, migratetype);
1813                 split_large_buddy(zone, page, pfn, order, FPI_NONE);
1814                 return true;
1815         }
1816 move:
1817         __move_freepages_block(zone, start_pfn,
1818                                get_pfnblock_migratetype(page, start_pfn),
1819                                migratetype);
1820         return true;
1821 }
1822 #endif /* CONFIG_MEMORY_ISOLATION */
1823
1824 static void change_pageblock_range(struct page *pageblock_page,
1825                                         int start_order, int migratetype)
1826 {
1827         int nr_pageblocks = 1 << (start_order - pageblock_order);
1828
1829         while (nr_pageblocks--) {
1830                 set_pageblock_migratetype(pageblock_page, migratetype);
1831                 pageblock_page += pageblock_nr_pages;
1832         }
1833 }
1834
1835 /*
1836  * When we are falling back to another migratetype during allocation, try to
1837  * steal extra free pages from the same pageblocks to satisfy further
1838  * allocations, instead of polluting multiple pageblocks.
1839  *
1840  * If we are stealing a relatively large buddy page, it is likely there will
1841  * be more free pages in the pageblock, so try to steal them all. For
1842  * reclaimable and unmovable allocations, we steal regardless of page size,
1843  * as fragmentation caused by those allocations polluting movable pageblocks
1844  * is worse than movable allocations stealing from unmovable and reclaimable
1845  * pageblocks.
1846  */
1847 static bool can_steal_fallback(unsigned int order, int start_mt)
1848 {
1849         /*
1850          * Leaving this order check is intended, although there is
1851          * relaxed order check in next check. The reason is that
1852          * we can actually steal whole pageblock if this condition met,
1853          * but, below check doesn't guarantee it and that is just heuristic
1854          * so could be changed anytime.
1855          */
1856         if (order >= pageblock_order)
1857                 return true;
1858
1859         if (order >= pageblock_order / 2 ||
1860                 start_mt == MIGRATE_RECLAIMABLE ||
1861                 start_mt == MIGRATE_UNMOVABLE ||
1862                 page_group_by_mobility_disabled)
1863                 return true;
1864
1865         return false;
1866 }
1867
1868 static inline bool boost_watermark(struct zone *zone)
1869 {
1870         unsigned long max_boost;
1871
1872         if (!watermark_boost_factor)
1873                 return false;
1874         /*
1875          * Don't bother in zones that are unlikely to produce results.
1876          * On small machines, including kdump capture kernels running
1877          * in a small area, boosting the watermark can cause an out of
1878          * memory situation immediately.
1879          */
1880         if ((pageblock_nr_pages * 4) > zone_managed_pages(zone))
1881                 return false;
1882
1883         max_boost = mult_frac(zone->_watermark[WMARK_HIGH],
1884                         watermark_boost_factor, 10000);
1885
1886         /*
1887          * high watermark may be uninitialised if fragmentation occurs
1888          * very early in boot so do not boost. We do not fall
1889          * through and boost by pageblock_nr_pages as failing
1890          * allocations that early means that reclaim is not going
1891          * to help and it may even be impossible to reclaim the
1892          * boosted watermark resulting in a hang.
1893          */
1894         if (!max_boost)
1895                 return false;
1896
1897         max_boost = max(pageblock_nr_pages, max_boost);
1898
1899         zone->watermark_boost = min(zone->watermark_boost + pageblock_nr_pages,
1900                 max_boost);
1901
1902         return true;
1903 }
1904
1905 /*
1906  * This function implements actual steal behaviour. If order is large enough, we
1907  * can claim the whole pageblock for the requested migratetype. If not, we check
1908  * the pageblock for constituent pages; if at least half of the pages are free
1909  * or compatible, we can still claim the whole block, so pages freed in the
1910  * future will be put on the correct free list. Otherwise, we isolate exactly
1911  * the order we need from the fallback block and leave its migratetype alone.
1912  */
1913 static struct page *
1914 steal_suitable_fallback(struct zone *zone, struct page *page,
1915                         int current_order, int order, int start_type,
1916                         unsigned int alloc_flags, bool whole_block)
1917 {
1918         int free_pages, movable_pages, alike_pages;
1919         unsigned long start_pfn;
1920         int block_type;
1921
1922         block_type = get_pageblock_migratetype(page);
1923
1924         /*
1925          * This can happen due to races and we want to prevent broken
1926          * highatomic accounting.
1927          */
1928         if (is_migrate_highatomic(block_type))
1929                 goto single_page;
1930
1931         /* Take ownership for orders >= pageblock_order */
1932         if (current_order >= pageblock_order) {
1933                 unsigned int nr_added;
1934
1935                 del_page_from_free_list(page, zone, current_order, block_type);
1936                 change_pageblock_range(page, current_order, start_type);
1937                 nr_added = expand(zone, page, order, current_order, start_type);
1938                 account_freepages(zone, nr_added, start_type);
1939                 return page;
1940         }
1941
1942         /*
1943          * Boost watermarks to increase reclaim pressure to reduce the
1944          * likelihood of future fallbacks. Wake kswapd now as the node
1945          * may be balanced overall and kswapd will not wake naturally.
1946          */
1947         if (boost_watermark(zone) && (alloc_flags & ALLOC_KSWAPD))
1948                 set_bit(ZONE_BOOSTED_WATERMARK, &zone->flags);
1949
1950         /* We are not allowed to try stealing from the whole block */
1951         if (!whole_block)
1952                 goto single_page;
1953
1954         /* moving whole block can fail due to zone boundary conditions */
1955         if (!prep_move_freepages_block(zone, page, &start_pfn, &free_pages,
1956                                        &movable_pages))
1957                 goto single_page;
1958
1959         /*
1960          * Determine how many pages are compatible with our allocation.
1961          * For movable allocation, it's the number of movable pages which
1962          * we just obtained. For other types it's a bit more tricky.
1963          */
1964         if (start_type == MIGRATE_MOVABLE) {
1965                 alike_pages = movable_pages;
1966         } else {
1967                 /*
1968                  * If we are falling back a RECLAIMABLE or UNMOVABLE allocation
1969                  * to MOVABLE pageblock, consider all non-movable pages as
1970                  * compatible. If it's UNMOVABLE falling back to RECLAIMABLE or
1971                  * vice versa, be conservative since we can't distinguish the
1972                  * exact migratetype of non-movable pages.
1973                  */
1974                 if (block_type == MIGRATE_MOVABLE)
1975                         alike_pages = pageblock_nr_pages
1976                                                 - (free_pages + movable_pages);
1977                 else
1978                         alike_pages = 0;
1979         }
1980         /*
1981          * If a sufficient number of pages in the block are either free or of
1982          * compatible migratability as our allocation, claim the whole block.
1983          */
1984         if (free_pages + alike_pages >= (1 << (pageblock_order-1)) ||
1985                         page_group_by_mobility_disabled) {
1986                 __move_freepages_block(zone, start_pfn, block_type, start_type);
1987                 return __rmqueue_smallest(zone, order, start_type);
1988         }
1989
1990 single_page:
1991         page_del_and_expand(zone, page, order, current_order, block_type);
1992         return page;
1993 }
1994
1995 /*
1996  * Check whether there is a suitable fallback freepage with requested order.
1997  * If only_stealable is true, this function returns fallback_mt only if
1998  * we can steal other freepages all together. This would help to reduce
1999  * fragmentation due to mixed migratetype pages in one pageblock.
2000  */
2001 int find_suitable_fallback(struct free_area *area, unsigned int order,
2002                         int migratetype, bool only_stealable, bool *can_steal)
2003 {
2004         int i;
2005         int fallback_mt;
2006
2007         if (area->nr_free == 0)
2008                 return -1;
2009
2010         *can_steal = false;
2011         for (i = 0; i < MIGRATE_PCPTYPES - 1 ; i++) {
2012                 fallback_mt = fallbacks[migratetype][i];
2013                 if (free_area_empty(area, fallback_mt))
2014                         continue;
2015
2016                 if (can_steal_fallback(order, migratetype))
2017                         *can_steal = true;
2018
2019                 if (!only_stealable)
2020                         return fallback_mt;
2021
2022                 if (*can_steal)
2023                         return fallback_mt;
2024         }
2025
2026         return -1;
2027 }
2028
2029 /*
2030  * Reserve the pageblock(s) surrounding an allocation request for
2031  * exclusive use of high-order atomic allocations if there are no
2032  * empty page blocks that contain a page with a suitable order
2033  */
2034 static void reserve_highatomic_pageblock(struct page *page, int order,
2035                                          struct zone *zone)
2036 {
2037         int mt;
2038         unsigned long max_managed, flags;
2039
2040         /*
2041          * The number reserved as: minimum is 1 pageblock, maximum is
2042          * roughly 1% of a zone. But if 1% of a zone falls below a
2043          * pageblock size, then don't reserve any pageblocks.
2044          * Check is race-prone but harmless.
2045          */
2046         if ((zone_managed_pages(zone) / 100) < pageblock_nr_pages)
2047                 return;
2048         max_managed = ALIGN((zone_managed_pages(zone) / 100), pageblock_nr_pages);
2049         if (zone->nr_reserved_highatomic >= max_managed)
2050                 return;
2051
2052         spin_lock_irqsave(&zone->lock, flags);
2053
2054         /* Recheck the nr_reserved_highatomic limit under the lock */
2055         if (zone->nr_reserved_highatomic >= max_managed)
2056                 goto out_unlock;
2057
2058         /* Yoink! */
2059         mt = get_pageblock_migratetype(page);
2060         /* Only reserve normal pageblocks (i.e., they can merge with others) */
2061         if (!migratetype_is_mergeable(mt))
2062                 goto out_unlock;
2063
2064         if (order < pageblock_order) {
2065                 if (move_freepages_block(zone, page, mt, MIGRATE_HIGHATOMIC) == -1)
2066                         goto out_unlock;
2067                 zone->nr_reserved_highatomic += pageblock_nr_pages;
2068         } else {
2069                 change_pageblock_range(page, order, MIGRATE_HIGHATOMIC);
2070                 zone->nr_reserved_highatomic += 1 << order;
2071         }
2072
2073 out_unlock:
2074         spin_unlock_irqrestore(&zone->lock, flags);
2075 }
2076
2077 /*
2078  * Used when an allocation is about to fail under memory pressure. This
2079  * potentially hurts the reliability of high-order allocations when under
2080  * intense memory pressure but failed atomic allocations should be easier
2081  * to recover from than an OOM.
2082  *
2083  * If @force is true, try to unreserve pageblocks even though highatomic
2084  * pageblock is exhausted.
2085  */
2086 static bool unreserve_highatomic_pageblock(const struct alloc_context *ac,
2087                                                 bool force)
2088 {
2089         struct zonelist *zonelist = ac->zonelist;
2090         unsigned long flags;
2091         struct zoneref *z;
2092         struct zone *zone;
2093         struct page *page;
2094         int order;
2095         int ret;
2096
2097         for_each_zone_zonelist_nodemask(zone, z, zonelist, ac->highest_zoneidx,
2098                                                                 ac->nodemask) {
2099                 /*
2100                  * Preserve at least one pageblock unless memory pressure
2101                  * is really high.
2102                  */
2103                 if (!force && zone->nr_reserved_highatomic <=
2104                                         pageblock_nr_pages)
2105                         continue;
2106
2107                 spin_lock_irqsave(&zone->lock, flags);
2108                 for (order = 0; order < NR_PAGE_ORDERS; order++) {
2109                         struct free_area *area = &(zone->free_area[order]);
2110                         int mt;
2111
2112                         page = get_page_from_free_area(area, MIGRATE_HIGHATOMIC);
2113                         if (!page)
2114                                 continue;
2115
2116                         mt = get_pageblock_migratetype(page);
2117                         /*
2118                          * In page freeing path, migratetype change is racy so
2119                          * we can counter several free pages in a pageblock
2120                          * in this loop although we changed the pageblock type
2121                          * from highatomic to ac->migratetype. So we should
2122                          * adjust the count once.
2123                          */
2124                         if (is_migrate_highatomic(mt)) {
2125                                 unsigned long size;
2126                                 /*
2127                                  * It should never happen but changes to
2128                                  * locking could inadvertently allow a per-cpu
2129                                  * drain to add pages to MIGRATE_HIGHATOMIC
2130                                  * while unreserving so be safe and watch for
2131                                  * underflows.
2132                                  */
2133                                 size = max(pageblock_nr_pages, 1UL << order);
2134                                 size = min(size, zone->nr_reserved_highatomic);
2135                                 zone->nr_reserved_highatomic -= size;
2136                         }
2137
2138                         /*
2139                          * Convert to ac->migratetype and avoid the normal
2140                          * pageblock stealing heuristics. Minimally, the caller
2141                          * is doing the work and needs the pages. More
2142                          * importantly, if the block was always converted to
2143                          * MIGRATE_UNMOVABLE or another type then the number
2144                          * of pageblocks that cannot be completely freed
2145                          * may increase.
2146                          */
2147                         if (order < pageblock_order)
2148                                 ret = move_freepages_block(zone, page, mt,
2149                                                            ac->migratetype);
2150                         else {
2151                                 move_to_free_list(page, zone, order, mt,
2152                                                   ac->migratetype);
2153                                 change_pageblock_range(page, order,
2154                                                        ac->migratetype);
2155                                 ret = 1;
2156                         }
2157                         /*
2158                          * Reserving the block(s) already succeeded,
2159                          * so this should not fail on zone boundaries.
2160                          */
2161                         WARN_ON_ONCE(ret == -1);
2162                         if (ret > 0) {
2163                                 spin_unlock_irqrestore(&zone->lock, flags);
2164                                 return ret;
2165                         }
2166                 }
2167                 spin_unlock_irqrestore(&zone->lock, flags);
2168         }
2169
2170         return false;
2171 }
2172
2173 /*
2174  * Try finding a free buddy page on the fallback list and put it on the free
2175  * list of requested migratetype, possibly along with other pages from the same
2176  * block, depending on fragmentation avoidance heuristics. Returns true if
2177  * fallback was found so that __rmqueue_smallest() can grab it.
2178  *
2179  * The use of signed ints for order and current_order is a deliberate
2180  * deviation from the rest of this file, to make the for loop
2181  * condition simpler.
2182  */
2183 static __always_inline struct page *
2184 __rmqueue_fallback(struct zone *zone, int order, int start_migratetype,
2185                                                 unsigned int alloc_flags)
2186 {
2187         struct free_area *area;
2188         int current_order;
2189         int min_order = order;
2190         struct page *page;
2191         int fallback_mt;
2192         bool can_steal;
2193
2194         /*
2195          * Do not steal pages from freelists belonging to other pageblocks
2196          * i.e. orders < pageblock_order. If there are no local zones free,
2197          * the zonelists will be reiterated without ALLOC_NOFRAGMENT.
2198          */
2199         if (order < pageblock_order && alloc_flags & ALLOC_NOFRAGMENT)
2200                 min_order = pageblock_order;
2201
2202         /*
2203          * Find the largest available free page in the other list. This roughly
2204          * approximates finding the pageblock with the most free pages, which
2205          * would be too costly to do exactly.
2206          */
2207         for (current_order = MAX_PAGE_ORDER; current_order >= min_order;
2208                                 --current_order) {
2209                 area = &(zone->free_area[current_order]);
2210                 fallback_mt = find_suitable_fallback(area, current_order,
2211                                 start_migratetype, false, &can_steal);
2212                 if (fallback_mt == -1)
2213                         continue;
2214
2215                 /*
2216                  * We cannot steal all free pages from the pageblock and the
2217                  * requested migratetype is movable. In that case it's better to
2218                  * steal and split the smallest available page instead of the
2219                  * largest available page, because even if the next movable
2220                  * allocation falls back into a different pageblock than this
2221                  * one, it won't cause permanent fragmentation.
2222                  */
2223                 if (!can_steal && start_migratetype == MIGRATE_MOVABLE
2224                                         && current_order > order)
2225                         goto find_smallest;
2226
2227                 goto do_steal;
2228         }
2229
2230         return NULL;
2231
2232 find_smallest:
2233         for (current_order = order; current_order < NR_PAGE_ORDERS; current_order++) {
2234                 area = &(zone->free_area[current_order]);
2235                 fallback_mt = find_suitable_fallback(area, current_order,
2236                                 start_migratetype, false, &can_steal);
2237                 if (fallback_mt != -1)
2238                         break;
2239         }
2240
2241         /*
2242          * This should not happen - we already found a suitable fallback
2243          * when looking for the largest page.
2244          */
2245         VM_BUG_ON(current_order > MAX_PAGE_ORDER);
2246
2247 do_steal:
2248         page = get_page_from_free_area(area, fallback_mt);
2249
2250         /* take off list, maybe claim block, expand remainder */
2251         page = steal_suitable_fallback(zone, page, current_order, order,
2252                                        start_migratetype, alloc_flags, can_steal);
2253
2254         trace_mm_page_alloc_extfrag(page, order, current_order,
2255                 start_migratetype, fallback_mt);
2256
2257         return page;
2258 }
2259
2260 /*
2261  * Do the hard work of removing an element from the buddy allocator.
2262  * Call me with the zone->lock already held.
2263  */
2264 static __always_inline struct page *
2265 __rmqueue(struct zone *zone, unsigned int order, int migratetype,
2266                                                 unsigned int alloc_flags)
2267 {
2268         struct page *page;
2269
2270         if (IS_ENABLED(CONFIG_CMA)) {
2271                 /*
2272                  * Balance movable allocations between regular and CMA areas by
2273                  * allocating from CMA when over half of the zone's free memory
2274                  * is in the CMA area.
2275                  */
2276                 if (alloc_flags & ALLOC_CMA &&
2277                     zone_page_state(zone, NR_FREE_CMA_PAGES) >
2278                     zone_page_state(zone, NR_FREE_PAGES) / 2) {
2279                         page = __rmqueue_cma_fallback(zone, order);
2280                         if (page)
2281                                 return page;
2282                 }
2283         }
2284
2285         page = __rmqueue_smallest(zone, order, migratetype);
2286         if (unlikely(!page)) {
2287                 if (alloc_flags & ALLOC_CMA)
2288                         page = __rmqueue_cma_fallback(zone, order);
2289
2290                 if (!page)
2291                         page = __rmqueue_fallback(zone, order, migratetype,
2292                                                   alloc_flags);
2293         }
2294         return page;
2295 }
2296
2297 /*
2298  * Obtain a specified number of elements from the buddy allocator, all under
2299  * a single hold of the lock, for efficiency.  Add them to the supplied list.
2300  * Returns the number of new pages which were placed at *list.
2301  */
2302 static int rmqueue_bulk(struct zone *zone, unsigned int order,
2303                         unsigned long count, struct list_head *list,
2304                         int migratetype, unsigned int alloc_flags)
2305 {
2306         unsigned long flags;
2307         int i;
2308
2309         spin_lock_irqsave(&zone->lock, flags);
2310         for (i = 0; i < count; ++i) {
2311                 struct page *page = __rmqueue(zone, order, migratetype,
2312                                                                 alloc_flags);
2313                 if (unlikely(page == NULL))
2314                         break;
2315
2316                 /*
2317                  * Split buddy pages returned by expand() are received here in
2318                  * physical page order. The page is added to the tail of
2319                  * caller's list. From the callers perspective, the linked list
2320                  * is ordered by page number under some conditions. This is
2321                  * useful for IO devices that can forward direction from the
2322                  * head, thus also in the physical page order. This is useful
2323                  * for IO devices that can merge IO requests if the physical
2324                  * pages are ordered properly.
2325                  */
2326                 list_add_tail(&page->pcp_list, list);
2327         }
2328         spin_unlock_irqrestore(&zone->lock, flags);
2329
2330         return i;
2331 }
2332
2333 /*
2334  * Called from the vmstat counter updater to decay the PCP high.
2335  * Return whether there are addition works to do.
2336  */
2337 int decay_pcp_high(struct zone *zone, struct per_cpu_pages *pcp)
2338 {
2339         int high_min, to_drain, batch;
2340         int todo = 0;
2341
2342         high_min = READ_ONCE(pcp->high_min);
2343         batch = READ_ONCE(pcp->batch);
2344         /*
2345          * Decrease pcp->high periodically to try to free possible
2346          * idle PCP pages.  And, avoid to free too many pages to
2347          * control latency.  This caps pcp->high decrement too.
2348          */
2349         if (pcp->high > high_min) {
2350                 pcp->high = max3(pcp->count - (batch << CONFIG_PCP_BATCH_SCALE_MAX),
2351                                  pcp->high - (pcp->high >> 3), high_min);
2352                 if (pcp->high > high_min)
2353                         todo++;
2354         }
2355
2356         to_drain = pcp->count - pcp->high;
2357         if (to_drain > 0) {
2358                 spin_lock(&pcp->lock);
2359                 free_pcppages_bulk(zone, to_drain, pcp, 0);
2360                 spin_unlock(&pcp->lock);
2361                 todo++;
2362         }
2363
2364         return todo;
2365 }
2366
2367 #ifdef CONFIG_NUMA
2368 /*
2369  * Called from the vmstat counter updater to drain pagesets of this
2370  * currently executing processor on remote nodes after they have
2371  * expired.
2372  */
2373 void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp)
2374 {
2375         int to_drain, batch;
2376
2377         batch = READ_ONCE(pcp->batch);
2378         to_drain = min(pcp->count, batch);
2379         if (to_drain > 0) {
2380                 spin_lock(&pcp->lock);
2381                 free_pcppages_bulk(zone, to_drain, pcp, 0);
2382                 spin_unlock(&pcp->lock);
2383         }
2384 }
2385 #endif
2386
2387 /*
2388  * Drain pcplists of the indicated processor and zone.
2389  */
2390 static void drain_pages_zone(unsigned int cpu, struct zone *zone)
2391 {
2392         struct per_cpu_pages *pcp = per_cpu_ptr(zone->per_cpu_pageset, cpu);
2393         int count;
2394
2395         do {
2396                 spin_lock(&pcp->lock);
2397                 count = pcp->count;
2398                 if (count) {
2399                         int to_drain = min(count,
2400                                 pcp->batch << CONFIG_PCP_BATCH_SCALE_MAX);
2401
2402                         free_pcppages_bulk(zone, to_drain, pcp, 0);
2403                         count -= to_drain;
2404                 }
2405                 spin_unlock(&pcp->lock);
2406         } while (count);
2407 }
2408
2409 /*
2410  * Drain pcplists of all zones on the indicated processor.
2411  */
2412 static void drain_pages(unsigned int cpu)
2413 {
2414         struct zone *zone;
2415
2416         for_each_populated_zone(zone) {
2417                 drain_pages_zone(cpu, zone);
2418         }
2419 }
2420
2421 /*
2422  * Spill all of this CPU's per-cpu pages back into the buddy allocator.
2423  */
2424 void drain_local_pages(struct zone *zone)
2425 {
2426         int cpu = smp_processor_id();
2427
2428         if (zone)
2429                 drain_pages_zone(cpu, zone);
2430         else
2431                 drain_pages(cpu);
2432 }
2433
2434 /*
2435  * The implementation of drain_all_pages(), exposing an extra parameter to
2436  * drain on all cpus.
2437  *
2438  * drain_all_pages() is optimized to only execute on cpus where pcplists are
2439  * not empty. The check for non-emptiness can however race with a free to
2440  * pcplist that has not yet increased the pcp->count from 0 to 1. Callers
2441  * that need the guarantee that every CPU has drained can disable the
2442  * optimizing racy check.
2443  */
2444 static void __drain_all_pages(struct zone *zone, bool force_all_cpus)
2445 {
2446         int cpu;
2447
2448         /*
2449          * Allocate in the BSS so we won't require allocation in
2450          * direct reclaim path for CONFIG_CPUMASK_OFFSTACK=y
2451          */
2452         static cpumask_t cpus_with_pcps;
2453
2454         /*
2455          * Do not drain if one is already in progress unless it's specific to
2456          * a zone. Such callers are primarily CMA and memory hotplug and need
2457          * the drain to be complete when the call returns.
2458          */
2459         if (unlikely(!mutex_trylock(&pcpu_drain_mutex))) {
2460                 if (!zone)
2461                         return;
2462                 mutex_lock(&pcpu_drain_mutex);
2463         }
2464
2465         /*
2466          * We don't care about racing with CPU hotplug event
2467          * as offline notification will cause the notified
2468          * cpu to drain that CPU pcps and on_each_cpu_mask
2469          * disables preemption as part of its processing
2470          */
2471         for_each_online_cpu(cpu) {
2472                 struct per_cpu_pages *pcp;
2473                 struct zone *z;
2474                 bool has_pcps = false;
2475
2476                 if (force_all_cpus) {
2477                         /*
2478                          * The pcp.count check is racy, some callers need a
2479                          * guarantee that no cpu is missed.
2480                          */
2481                         has_pcps = true;
2482                 } else if (zone) {
2483                         pcp = per_cpu_ptr(zone->per_cpu_pageset, cpu);
2484                         if (pcp->count)
2485                                 has_pcps = true;
2486                 } else {
2487                         for_each_populated_zone(z) {
2488                                 pcp = per_cpu_ptr(z->per_cpu_pageset, cpu);
2489                                 if (pcp->count) {
2490                                         has_pcps = true;
2491                                         break;
2492                                 }
2493                         }
2494                 }
2495
2496                 if (has_pcps)
2497                         cpumask_set_cpu(cpu, &cpus_with_pcps);
2498                 else
2499                         cpumask_clear_cpu(cpu, &cpus_with_pcps);
2500         }
2501
2502         for_each_cpu(cpu, &cpus_with_pcps) {
2503                 if (zone)
2504                         drain_pages_zone(cpu, zone);
2505                 else
2506                         drain_pages(cpu);
2507         }
2508
2509         mutex_unlock(&pcpu_drain_mutex);
2510 }
2511
2512 /*
2513  * Spill all the per-cpu pages from all CPUs back into the buddy allocator.
2514  *
2515  * When zone parameter is non-NULL, spill just the single zone's pages.
2516  */
2517 void drain_all_pages(struct zone *zone)
2518 {
2519         __drain_all_pages(zone, false);
2520 }
2521
2522 static int nr_pcp_free(struct per_cpu_pages *pcp, int batch, int high, bool free_high)
2523 {
2524         int min_nr_free, max_nr_free;
2525
2526         /* Free as much as possible if batch freeing high-order pages. */
2527         if (unlikely(free_high))
2528                 return min(pcp->count, batch << CONFIG_PCP_BATCH_SCALE_MAX);
2529
2530         /* Check for PCP disabled or boot pageset */
2531         if (unlikely(high < batch))
2532                 return 1;
2533
2534         /* Leave at least pcp->batch pages on the list */
2535         min_nr_free = batch;
2536         max_nr_free = high - batch;
2537
2538         /*
2539          * Increase the batch number to the number of the consecutive
2540          * freed pages to reduce zone lock contention.
2541          */
2542         batch = clamp_t(int, pcp->free_count, min_nr_free, max_nr_free);
2543
2544         return batch;
2545 }
2546
2547 static int nr_pcp_high(struct per_cpu_pages *pcp, struct zone *zone,
2548                        int batch, bool free_high)
2549 {
2550         int high, high_min, high_max;
2551
2552         high_min = READ_ONCE(pcp->high_min);
2553         high_max = READ_ONCE(pcp->high_max);
2554         high = pcp->high = clamp(pcp->high, high_min, high_max);
2555
2556         if (unlikely(!high))
2557                 return 0;
2558
2559         if (unlikely(free_high)) {
2560                 pcp->high = max(high - (batch << CONFIG_PCP_BATCH_SCALE_MAX),
2561                                 high_min);
2562                 return 0;
2563         }
2564
2565         /*
2566          * If reclaim is active, limit the number of pages that can be
2567          * stored on pcp lists
2568          */
2569         if (test_bit(ZONE_RECLAIM_ACTIVE, &zone->flags)) {
2570                 int free_count = max_t(int, pcp->free_count, batch);
2571
2572                 pcp->high = max(high - free_count, high_min);
2573                 return min(batch << 2, pcp->high);
2574         }
2575
2576         if (high_min == high_max)
2577                 return high;
2578
2579         if (test_bit(ZONE_BELOW_HIGH, &zone->flags)) {
2580                 int free_count = max_t(int, pcp->free_count, batch);
2581
2582                 pcp->high = max(high - free_count, high_min);
2583                 high = max(pcp->count, high_min);
2584         } else if (pcp->count >= high) {
2585                 int need_high = pcp->free_count + batch;
2586
2587                 /* pcp->high should be large enough to hold batch freed pages */
2588                 if (pcp->high < need_high)
2589                         pcp->high = clamp(need_high, high_min, high_max);
2590         }
2591
2592         return high;
2593 }
2594
2595 static void free_unref_page_commit(struct zone *zone, struct per_cpu_pages *pcp,
2596                                    struct page *page, int migratetype,
2597                                    unsigned int order)
2598 {
2599         int high, batch;
2600         int pindex;
2601         bool free_high = false;
2602
2603         /*
2604          * On freeing, reduce the number of pages that are batch allocated.
2605          * See nr_pcp_alloc() where alloc_factor is increased for subsequent
2606          * allocations.
2607          */
2608         pcp->alloc_factor >>= 1;
2609         __count_vm_events(PGFREE, 1 << order);
2610         pindex = order_to_pindex(migratetype, order);
2611         list_add(&page->pcp_list, &pcp->lists[pindex]);
2612         pcp->count += 1 << order;
2613
2614         batch = READ_ONCE(pcp->batch);
2615         /*
2616          * As high-order pages other than THP's stored on PCP can contribute
2617          * to fragmentation, limit the number stored when PCP is heavily
2618          * freeing without allocation. The remainder after bulk freeing
2619          * stops will be drained from vmstat refresh context.
2620          */
2621         if (order && order <= PAGE_ALLOC_COSTLY_ORDER) {
2622                 free_high = (pcp->free_count >= batch &&
2623                              (pcp->flags & PCPF_PREV_FREE_HIGH_ORDER) &&
2624                              (!(pcp->flags & PCPF_FREE_HIGH_BATCH) ||
2625                               pcp->count >= READ_ONCE(batch)));
2626                 pcp->flags |= PCPF_PREV_FREE_HIGH_ORDER;
2627         } else if (pcp->flags & PCPF_PREV_FREE_HIGH_ORDER) {
2628                 pcp->flags &= ~PCPF_PREV_FREE_HIGH_ORDER;
2629         }
2630         if (pcp->free_count < (batch << CONFIG_PCP_BATCH_SCALE_MAX))
2631                 pcp->free_count += (1 << order);
2632         high = nr_pcp_high(pcp, zone, batch, free_high);
2633         if (pcp->count >= high) {
2634                 free_pcppages_bulk(zone, nr_pcp_free(pcp, batch, high, free_high),
2635                                    pcp, pindex);
2636                 if (test_bit(ZONE_BELOW_HIGH, &zone->flags) &&
2637                     zone_watermark_ok(zone, 0, high_wmark_pages(zone),
2638                                       ZONE_MOVABLE, 0))
2639                         clear_bit(ZONE_BELOW_HIGH, &zone->flags);
2640         }
2641 }
2642
2643 /*
2644  * Free a pcp page
2645  */
2646 void free_unref_page(struct page *page, unsigned int order)
2647 {
2648         unsigned long __maybe_unused UP_flags;
2649         struct per_cpu_pages *pcp;
2650         struct zone *zone;
2651         unsigned long pfn = page_to_pfn(page);
2652         int migratetype;
2653
2654         if (!pcp_allowed_order(order)) {
2655                 __free_pages_ok(page, order, FPI_NONE);
2656                 return;
2657         }
2658
2659         if (!free_pages_prepare(page, order))
2660                 return;
2661
2662         /*
2663          * We only track unmovable, reclaimable and movable on pcp lists.
2664          * Place ISOLATE pages on the isolated list because they are being
2665          * offlined but treat HIGHATOMIC and CMA as movable pages so we can
2666          * get those areas back if necessary. Otherwise, we may have to free
2667          * excessively into the page allocator
2668          */
2669         migratetype = get_pfnblock_migratetype(page, pfn);
2670         if (unlikely(migratetype >= MIGRATE_PCPTYPES)) {
2671                 if (unlikely(is_migrate_isolate(migratetype))) {
2672                         free_one_page(page_zone(page), page, pfn, order, FPI_NONE);
2673                         return;
2674                 }
2675                 migratetype = MIGRATE_MOVABLE;
2676         }
2677
2678         zone = page_zone(page);
2679         pcp_trylock_prepare(UP_flags);
2680         pcp = pcp_spin_trylock(zone->per_cpu_pageset);
2681         if (pcp) {
2682                 free_unref_page_commit(zone, pcp, page, migratetype, order);
2683                 pcp_spin_unlock(pcp);
2684         } else {
2685                 free_one_page(zone, page, pfn, order, FPI_NONE);
2686         }
2687         pcp_trylock_finish(UP_flags);
2688 }
2689
2690 /*
2691  * Free a batch of folios
2692  */
2693 void free_unref_folios(struct folio_batch *folios)
2694 {
2695         unsigned long __maybe_unused UP_flags;
2696         struct per_cpu_pages *pcp = NULL;
2697         struct zone *locked_zone = NULL;
2698         int i, j;
2699
2700         /* Prepare folios for freeing */
2701         for (i = 0, j = 0; i < folios->nr; i++) {
2702                 struct folio *folio = folios->folios[i];
2703                 unsigned long pfn = folio_pfn(folio);
2704                 unsigned int order = folio_order(folio);
2705
2706                 if (!free_pages_prepare(&folio->page, order))
2707                         continue;
2708                 /*
2709                  * Free orders not handled on the PCP directly to the
2710                  * allocator.
2711                  */
2712                 if (!pcp_allowed_order(order)) {
2713                         free_one_page(folio_zone(folio), &folio->page,
2714                                       pfn, order, FPI_NONE);
2715                         continue;
2716                 }
2717                 folio->private = (void *)(unsigned long)order;
2718                 if (j != i)
2719                         folios->folios[j] = folio;
2720                 j++;
2721         }
2722         folios->nr = j;
2723
2724         for (i = 0; i < folios->nr; i++) {
2725                 struct folio *folio = folios->folios[i];
2726                 struct zone *zone = folio_zone(folio);
2727                 unsigned long pfn = folio_pfn(folio);
2728                 unsigned int order = (unsigned long)folio->private;
2729                 int migratetype;
2730
2731                 folio->private = NULL;
2732                 migratetype = get_pfnblock_migratetype(&folio->page, pfn);
2733
2734                 /* Different zone requires a different pcp lock */
2735                 if (zone != locked_zone ||
2736                     is_migrate_isolate(migratetype)) {
2737                         if (pcp) {
2738                                 pcp_spin_unlock(pcp);
2739                                 pcp_trylock_finish(UP_flags);
2740                                 locked_zone = NULL;
2741                                 pcp = NULL;
2742                         }
2743
2744                         /*
2745                          * Free isolated pages directly to the
2746                          * allocator, see comment in free_unref_page.
2747                          */
2748                         if (is_migrate_isolate(migratetype)) {
2749                                 free_one_page(zone, &folio->page, pfn,
2750                                               order, FPI_NONE);
2751                                 continue;
2752                         }
2753
2754                         /*
2755                          * trylock is necessary as folios may be getting freed
2756                          * from IRQ or SoftIRQ context after an IO completion.
2757                          */
2758                         pcp_trylock_prepare(UP_flags);
2759                         pcp = pcp_spin_trylock(zone->per_cpu_pageset);
2760                         if (unlikely(!pcp)) {
2761                                 pcp_trylock_finish(UP_flags);
2762                                 free_one_page(zone, &folio->page, pfn,
2763                                               order, FPI_NONE);
2764                                 continue;
2765                         }
2766                         locked_zone = zone;
2767                 }
2768
2769                 /*
2770                  * Non-isolated types over MIGRATE_PCPTYPES get added
2771                  * to the MIGRATE_MOVABLE pcp list.
2772                  */
2773                 if (unlikely(migratetype >= MIGRATE_PCPTYPES))
2774                         migratetype = MIGRATE_MOVABLE;
2775
2776                 trace_mm_page_free_batched(&folio->page);
2777                 free_unref_page_commit(zone, pcp, &folio->page, migratetype,
2778                                 order);
2779         }
2780
2781         if (pcp) {
2782                 pcp_spin_unlock(pcp);
2783                 pcp_trylock_finish(UP_flags);
2784         }
2785         folio_batch_reinit(folios);
2786 }
2787
2788 /*
2789  * split_page takes a non-compound higher-order page, and splits it into
2790  * n (1<<order) sub-pages: page[0..n]
2791  * Each sub-page must be freed individually.
2792  *
2793  * Note: this is probably too low level an operation for use in drivers.
2794  * Please consult with lkml before using this in your driver.
2795  */
2796 void split_page(struct page *page, unsigned int order)
2797 {
2798         int i;
2799
2800         VM_BUG_ON_PAGE(PageCompound(page), page);
2801         VM_BUG_ON_PAGE(!page_count(page), page);
2802
2803         for (i = 1; i < (1 << order); i++)
2804                 set_page_refcounted(page + i);
2805         split_page_owner(page, order, 0);
2806         pgalloc_tag_split(page_folio(page), order, 0);
2807         split_page_memcg(page, order, 0);
2808 }
2809 EXPORT_SYMBOL_GPL(split_page);
2810
2811 int __isolate_free_page(struct page *page, unsigned int order)
2812 {
2813         struct zone *zone = page_zone(page);
2814         int mt = get_pageblock_migratetype(page);
2815
2816         if (!is_migrate_isolate(mt)) {
2817                 unsigned long watermark;
2818                 /*
2819                  * Obey watermarks as if the page was being allocated. We can
2820                  * emulate a high-order watermark check with a raised order-0
2821                  * watermark, because we already know our high-order page
2822                  * exists.
2823                  */
2824                 watermark = zone->_watermark[WMARK_MIN] + (1UL << order);
2825                 if (!zone_watermark_ok(zone, 0, watermark, 0, ALLOC_CMA))
2826                         return 0;
2827         }
2828
2829         del_page_from_free_list(page, zone, order, mt);
2830
2831         /*
2832          * Set the pageblock if the isolated page is at least half of a
2833          * pageblock
2834          */
2835         if (order >= pageblock_order - 1) {
2836                 struct page *endpage = page + (1 << order) - 1;
2837                 for (; page < endpage; page += pageblock_nr_pages) {
2838                         int mt = get_pageblock_migratetype(page);
2839                         /*
2840                          * Only change normal pageblocks (i.e., they can merge
2841                          * with others)
2842                          */
2843                         if (migratetype_is_mergeable(mt))
2844                                 move_freepages_block(zone, page, mt,
2845                                                      MIGRATE_MOVABLE);
2846                 }
2847         }
2848
2849         return 1UL << order;
2850 }
2851
2852 /**
2853  * __putback_isolated_page - Return a now-isolated page back where we got it
2854  * @page: Page that was isolated
2855  * @order: Order of the isolated page
2856  * @mt: The page's pageblock's migratetype
2857  *
2858  * This function is meant to return a page pulled from the free lists via
2859  * __isolate_free_page back to the free lists they were pulled from.
2860  */
2861 void __putback_isolated_page(struct page *page, unsigned int order, int mt)
2862 {
2863         struct zone *zone = page_zone(page);
2864
2865         /* zone lock should be held when this function is called */
2866         lockdep_assert_held(&zone->lock);
2867
2868         /* Return isolated page to tail of freelist. */
2869         __free_one_page(page, page_to_pfn(page), zone, order, mt,
2870                         FPI_SKIP_REPORT_NOTIFY | FPI_TO_TAIL);
2871 }
2872
2873 /*
2874  * Update NUMA hit/miss statistics
2875  */
2876 static inline void zone_statistics(struct zone *preferred_zone, struct zone *z,
2877                                    long nr_account)
2878 {
2879 #ifdef CONFIG_NUMA
2880         enum numa_stat_item local_stat = NUMA_LOCAL;
2881
2882         /* skip numa counters update if numa stats is disabled */
2883         if (!static_branch_likely(&vm_numa_stat_key))
2884                 return;
2885
2886         if (zone_to_nid(z) != numa_node_id())
2887                 local_stat = NUMA_OTHER;
2888
2889         if (zone_to_nid(z) == zone_to_nid(preferred_zone))
2890                 __count_numa_events(z, NUMA_HIT, nr_account);
2891         else {
2892                 __count_numa_events(z, NUMA_MISS, nr_account);
2893                 __count_numa_events(preferred_zone, NUMA_FOREIGN, nr_account);
2894         }
2895         __count_numa_events(z, local_stat, nr_account);
2896 #endif
2897 }
2898
2899 static __always_inline
2900 struct page *rmqueue_buddy(struct zone *preferred_zone, struct zone *zone,
2901                            unsigned int order, unsigned int alloc_flags,
2902                            int migratetype)
2903 {
2904         struct page *page;
2905         unsigned long flags;
2906
2907         do {
2908                 page = NULL;
2909                 spin_lock_irqsave(&zone->lock, flags);
2910                 if (alloc_flags & ALLOC_HIGHATOMIC)
2911                         page = __rmqueue_smallest(zone, order, MIGRATE_HIGHATOMIC);
2912                 if (!page) {
2913                         page = __rmqueue(zone, order, migratetype, alloc_flags);
2914
2915                         /*
2916                          * If the allocation fails, allow OOM handling and
2917                          * order-0 (atomic) allocs access to HIGHATOMIC
2918                          * reserves as failing now is worse than failing a
2919                          * high-order atomic allocation in the future.
2920                          */
2921                         if (!page && (alloc_flags & (ALLOC_OOM|ALLOC_NON_BLOCK)))
2922                                 page = __rmqueue_smallest(zone, order, MIGRATE_HIGHATOMIC);
2923
2924                         if (!page) {
2925                                 spin_unlock_irqrestore(&zone->lock, flags);
2926                                 return NULL;
2927                         }
2928                 }
2929                 spin_unlock_irqrestore(&zone->lock, flags);
2930         } while (check_new_pages(page, order));
2931
2932         __count_zid_vm_events(PGALLOC, page_zonenum(page), 1 << order);
2933         zone_statistics(preferred_zone, zone, 1);
2934
2935         return page;
2936 }
2937
2938 static int nr_pcp_alloc(struct per_cpu_pages *pcp, struct zone *zone, int order)
2939 {
2940         int high, base_batch, batch, max_nr_alloc;
2941         int high_max, high_min;
2942
2943         base_batch = READ_ONCE(pcp->batch);
2944         high_min = READ_ONCE(pcp->high_min);
2945         high_max = READ_ONCE(pcp->high_max);
2946         high = pcp->high = clamp(pcp->high, high_min, high_max);
2947
2948         /* Check for PCP disabled or boot pageset */
2949         if (unlikely(high < base_batch))
2950                 return 1;
2951
2952         if (order)
2953                 batch = base_batch;
2954         else
2955                 batch = (base_batch << pcp->alloc_factor);
2956
2957         /*
2958          * If we had larger pcp->high, we could avoid to allocate from
2959          * zone.
2960          */
2961         if (high_min != high_max && !test_bit(ZONE_BELOW_HIGH, &zone->flags))
2962                 high = pcp->high = min(high + batch, high_max);
2963
2964         if (!order) {
2965                 max_nr_alloc = max(high - pcp->count - base_batch, base_batch);
2966                 /*
2967                  * Double the number of pages allocated each time there is
2968                  * subsequent allocation of order-0 pages without any freeing.
2969                  */
2970                 if (batch <= max_nr_alloc &&
2971                     pcp->alloc_factor < CONFIG_PCP_BATCH_SCALE_MAX)
2972                         pcp->alloc_factor++;
2973                 batch = min(batch, max_nr_alloc);
2974         }
2975
2976         /*
2977          * Scale batch relative to order if batch implies free pages
2978          * can be stored on the PCP. Batch can be 1 for small zones or
2979          * for boot pagesets which should never store free pages as
2980          * the pages may belong to arbitrary zones.
2981          */
2982         if (batch > 1)
2983                 batch = max(batch >> order, 2);
2984
2985         return batch;
2986 }
2987
2988 /* Remove page from the per-cpu list, caller must protect the list */
2989 static inline
2990 struct page *__rmqueue_pcplist(struct zone *zone, unsigned int order,
2991                         int migratetype,
2992                         unsigned int alloc_flags,
2993                         struct per_cpu_pages *pcp,
2994                         struct list_head *list)
2995 {
2996         struct page *page;
2997
2998         do {
2999                 if (list_empty(list)) {
3000                         int batch = nr_pcp_alloc(pcp, zone, order);
3001                         int alloced;
3002
3003                         alloced = rmqueue_bulk(zone, order,
3004                                         batch, list,
3005                                         migratetype, alloc_flags);
3006
3007                         pcp->count += alloced << order;
3008                         if (unlikely(list_empty(list)))
3009                                 return NULL;
3010                 }
3011
3012                 page = list_first_entry(list, struct page, pcp_list);
3013                 list_del(&page->pcp_list);
3014                 pcp->count -= 1 << order;
3015         } while (check_new_pages(page, order));
3016
3017         return page;
3018 }
3019
3020 /* Lock and remove page from the per-cpu list */
3021 static struct page *rmqueue_pcplist(struct zone *preferred_zone,
3022                         struct zone *zone, unsigned int order,
3023                         int migratetype, unsigned int alloc_flags)
3024 {
3025         struct per_cpu_pages *pcp;
3026         struct list_head *list;
3027         struct page *page;
3028         unsigned long __maybe_unused UP_flags;
3029
3030         /* spin_trylock may fail due to a parallel drain or IRQ reentrancy. */
3031         pcp_trylock_prepare(UP_flags);
3032         pcp = pcp_spin_trylock(zone->per_cpu_pageset);
3033         if (!pcp) {
3034                 pcp_trylock_finish(UP_flags);
3035                 return NULL;
3036         }
3037
3038         /*
3039          * On allocation, reduce the number of pages that are batch freed.
3040          * See nr_pcp_free() where free_factor is increased for subsequent
3041          * frees.
3042          */
3043         pcp->free_count >>= 1;
3044         list = &pcp->lists[order_to_pindex(migratetype, order)];
3045         page = __rmqueue_pcplist(zone, order, migratetype, alloc_flags, pcp, list);
3046         pcp_spin_unlock(pcp);
3047         pcp_trylock_finish(UP_flags);
3048         if (page) {
3049                 __count_zid_vm_events(PGALLOC, page_zonenum(page), 1 << order);
3050                 zone_statistics(preferred_zone, zone, 1);
3051         }
3052         return page;
3053 }
3054
3055 /*
3056  * Allocate a page from the given zone.
3057  * Use pcplists for THP or "cheap" high-order allocations.
3058  */
3059
3060 /*
3061  * Do not instrument rmqueue() with KMSAN. This function may call
3062  * __msan_poison_alloca() through a call to set_pfnblock_flags_mask().
3063  * If __msan_poison_alloca() attempts to allocate pages for the stack depot, it
3064  * may call rmqueue() again, which will result in a deadlock.
3065  */
3066 __no_sanitize_memory
3067 static inline
3068 struct page *rmqueue(struct zone *preferred_zone,
3069                         struct zone *zone, unsigned int order,
3070                         gfp_t gfp_flags, unsigned int alloc_flags,
3071                         int migratetype)
3072 {
3073         struct page *page;
3074
3075         if (likely(pcp_allowed_order(order))) {
3076                 page = rmqueue_pcplist(preferred_zone, zone, order,
3077                                        migratetype, alloc_flags);
3078                 if (likely(page))
3079                         goto out;
3080         }
3081
3082         page = rmqueue_buddy(preferred_zone, zone, order, alloc_flags,
3083                                                         migratetype);
3084
3085 out:
3086         /* Separate test+clear to avoid unnecessary atomics */
3087         if ((alloc_flags & ALLOC_KSWAPD) &&
3088             unlikely(test_bit(ZONE_BOOSTED_WATERMARK, &zone->flags))) {
3089                 clear_bit(ZONE_BOOSTED_WATERMARK, &zone->flags);
3090                 wakeup_kswapd(zone, 0, 0, zone_idx(zone));
3091         }
3092
3093         VM_BUG_ON_PAGE(page && bad_range(zone, page), page);
3094         return page;
3095 }
3096
3097 static inline long __zone_watermark_unusable_free(struct zone *z,
3098                                 unsigned int order, unsigned int alloc_flags)
3099 {
3100         long unusable_free = (1 << order) - 1;
3101
3102         /*
3103          * If the caller does not have rights to reserves below the min
3104          * watermark then subtract the free pages reserved for highatomic.
3105          */
3106         if (likely(!(alloc_flags & ALLOC_RESERVES)))
3107                 unusable_free += READ_ONCE(z->nr_free_highatomic);
3108
3109 #ifdef CONFIG_CMA
3110         /* If allocation can't use CMA areas don't use free CMA pages */
3111         if (!(alloc_flags & ALLOC_CMA))
3112                 unusable_free += zone_page_state(z, NR_FREE_CMA_PAGES);
3113 #endif
3114
3115         return unusable_free;
3116 }
3117
3118 /*
3119  * Return true if free base pages are above 'mark'. For high-order checks it
3120  * will return true of the order-0 watermark is reached and there is at least
3121  * one free page of a suitable size. Checking now avoids taking the zone lock
3122  * to check in the allocation paths if no pages are free.
3123  */
3124 bool __zone_watermark_ok(struct zone *z, unsigned int order, unsigned long mark,
3125                          int highest_zoneidx, unsigned int alloc_flags,
3126                          long free_pages)
3127 {
3128         long min = mark;
3129         int o;
3130
3131         /* free_pages may go negative - that's OK */
3132         free_pages -= __zone_watermark_unusable_free(z, order, alloc_flags);
3133
3134         if (unlikely(alloc_flags & ALLOC_RESERVES)) {
3135                 /*
3136                  * __GFP_HIGH allows access to 50% of the min reserve as well
3137                  * as OOM.
3138                  */
3139                 if (alloc_flags & ALLOC_MIN_RESERVE) {
3140                         min -= min / 2;
3141
3142                         /*
3143                          * Non-blocking allocations (e.g. GFP_ATOMIC) can
3144                          * access more reserves than just __GFP_HIGH. Other
3145                          * non-blocking allocations requests such as GFP_NOWAIT
3146                          * or (GFP_KERNEL & ~__GFP_DIRECT_RECLAIM) do not get
3147                          * access to the min reserve.
3148                          */
3149                         if (alloc_flags & ALLOC_NON_BLOCK)
3150                                 min -= min / 4;
3151                 }
3152
3153                 /*
3154                  * OOM victims can try even harder than the normal reserve
3155                  * users on the grounds that it's definitely going to be in
3156                  * the exit path shortly and free memory. Any allocation it
3157                  * makes during the free path will be small and short-lived.
3158                  */
3159                 if (alloc_flags & ALLOC_OOM)
3160                         min -= min / 2;
3161         }
3162
3163         /*
3164          * Check watermarks for an order-0 allocation request. If these
3165          * are not met, then a high-order request also cannot go ahead
3166          * even if a suitable page happened to be free.
3167          */
3168         if (free_pages <= min + z->lowmem_reserve[highest_zoneidx])
3169                 return false;
3170
3171         /* If this is an order-0 request then the watermark is fine */
3172         if (!order)
3173                 return true;
3174
3175         /* For a high-order request, check at least one suitable page is free */
3176         for (o = order; o < NR_PAGE_ORDERS; o++) {
3177                 struct free_area *area = &z->free_area[o];
3178                 int mt;
3179
3180                 if (!area->nr_free)
3181                         continue;
3182
3183                 for (mt = 0; mt < MIGRATE_PCPTYPES; mt++) {
3184                         if (!free_area_empty(area, mt))
3185                                 return true;
3186                 }
3187
3188 #ifdef CONFIG_CMA
3189                 if ((alloc_flags & ALLOC_CMA) &&
3190                     !free_area_empty(area, MIGRATE_CMA)) {
3191                         return true;
3192                 }
3193 #endif
3194                 if ((alloc_flags & (ALLOC_HIGHATOMIC|ALLOC_OOM)) &&
3195                     !free_area_empty(area, MIGRATE_HIGHATOMIC)) {
3196                         return true;
3197                 }
3198         }
3199         return false;
3200 }
3201
3202 bool zone_watermark_ok(struct zone *z, unsigned int order, unsigned long mark,
3203                       int highest_zoneidx, unsigned int alloc_flags)
3204 {
3205         return __zone_watermark_ok(z, order, mark, highest_zoneidx, alloc_flags,
3206                                         zone_page_state(z, NR_FREE_PAGES));
3207 }
3208
3209 static inline bool zone_watermark_fast(struct zone *z, unsigned int order,
3210                                 unsigned long mark, int highest_zoneidx,
3211                                 unsigned int alloc_flags, gfp_t gfp_mask)
3212 {
3213         long free_pages;
3214
3215         free_pages = zone_page_state(z, NR_FREE_PAGES);
3216
3217         /*
3218          * Fast check for order-0 only. If this fails then the reserves
3219          * need to be calculated.
3220          */
3221         if (!order) {
3222                 long usable_free;
3223                 long reserved;
3224
3225                 usable_free = free_pages;
3226                 reserved = __zone_watermark_unusable_free(z, 0, alloc_flags);
3227
3228                 /* reserved may over estimate high-atomic reserves. */
3229                 usable_free -= min(usable_free, reserved);
3230                 if (usable_free > mark + z->lowmem_reserve[highest_zoneidx])
3231                         return true;
3232         }
3233
3234         if (__zone_watermark_ok(z, order, mark, highest_zoneidx, alloc_flags,
3235                                         free_pages))
3236                 return true;
3237
3238         /*
3239          * Ignore watermark boosting for __GFP_HIGH order-0 allocations
3240          * when checking the min watermark. The min watermark is the
3241          * point where boosting is ignored so that kswapd is woken up
3242          * when below the low watermark.
3243          */
3244         if (unlikely(!order && (alloc_flags & ALLOC_MIN_RESERVE) && z->watermark_boost
3245                 && ((alloc_flags & ALLOC_WMARK_MASK) == WMARK_MIN))) {
3246                 mark = z->_watermark[WMARK_MIN];
3247                 return __zone_watermark_ok(z, order, mark, highest_zoneidx,
3248                                         alloc_flags, free_pages);
3249         }
3250
3251         return false;
3252 }
3253
3254 bool zone_watermark_ok_safe(struct zone *z, unsigned int order,
3255                         unsigned long mark, int highest_zoneidx)
3256 {
3257         long free_pages = zone_page_state(z, NR_FREE_PAGES);
3258
3259         if (z->percpu_drift_mark && free_pages < z->percpu_drift_mark)
3260                 free_pages = zone_page_state_snapshot(z, NR_FREE_PAGES);
3261
3262         return __zone_watermark_ok(z, order, mark, highest_zoneidx, 0,
3263                                                                 free_pages);
3264 }
3265
3266 #ifdef CONFIG_NUMA
3267 int __read_mostly node_reclaim_distance = RECLAIM_DISTANCE;
3268
3269 static bool zone_allows_reclaim(struct zone *local_zone, struct zone *zone)
3270 {
3271         return node_distance(zone_to_nid(local_zone), zone_to_nid(zone)) <=
3272                                 node_reclaim_distance;
3273 }
3274 #else   /* CONFIG_NUMA */
3275 static bool zone_allows_reclaim(struct zone *local_zone, struct zone *zone)
3276 {
3277         return true;
3278 }
3279 #endif  /* CONFIG_NUMA */
3280
3281 /*
3282  * The restriction on ZONE_DMA32 as being a suitable zone to use to avoid
3283  * fragmentation is subtle. If the preferred zone was HIGHMEM then
3284  * premature use of a lower zone may cause lowmem pressure problems that
3285  * are worse than fragmentation. If the next zone is ZONE_DMA then it is
3286  * probably too small. It only makes sense to spread allocations to avoid
3287  * fragmentation between the Normal and DMA32 zones.
3288  */
3289 static inline unsigned int
3290 alloc_flags_nofragment(struct zone *zone, gfp_t gfp_mask)
3291 {
3292         unsigned int alloc_flags;
3293
3294         /*
3295          * __GFP_KSWAPD_RECLAIM is assumed to be the same as ALLOC_KSWAPD
3296          * to save a branch.
3297          */
3298         alloc_flags = (__force int) (gfp_mask & __GFP_KSWAPD_RECLAIM);
3299
3300 #ifdef CONFIG_ZONE_DMA32
3301         if (!zone)
3302                 return alloc_flags;
3303
3304         if (zone_idx(zone) != ZONE_NORMAL)
3305                 return alloc_flags;
3306
3307         /*
3308          * If ZONE_DMA32 exists, assume it is the one after ZONE_NORMAL and
3309          * the pointer is within zone->zone_pgdat->node_zones[]. Also assume
3310          * on UMA that if Normal is populated then so is DMA32.
3311          */
3312         BUILD_BUG_ON(ZONE_NORMAL - ZONE_DMA32 != 1);
3313         if (nr_online_nodes > 1 && !populated_zone(--zone))
3314                 return alloc_flags;
3315
3316         alloc_flags |= ALLOC_NOFRAGMENT;
3317 #endif /* CONFIG_ZONE_DMA32 */
3318         return alloc_flags;
3319 }
3320
3321 /* Must be called after current_gfp_context() which can change gfp_mask */
3322 static inline unsigned int gfp_to_alloc_flags_cma(gfp_t gfp_mask,
3323                                                   unsigned int alloc_flags)
3324 {
3325 #ifdef CONFIG_CMA
3326         if (gfp_migratetype(gfp_mask) == MIGRATE_MOVABLE)
3327                 alloc_flags |= ALLOC_CMA;
3328 #endif
3329         return alloc_flags;
3330 }
3331
3332 /*
3333  * get_page_from_freelist goes through the zonelist trying to allocate
3334  * a page.
3335  */
3336 static struct page *
3337 get_page_from_freelist(gfp_t gfp_mask, unsigned int order, int alloc_flags,
3338                                                 const struct alloc_context *ac)
3339 {
3340         struct zoneref *z;
3341         struct zone *zone;
3342         struct pglist_data *last_pgdat = NULL;
3343         bool last_pgdat_dirty_ok = false;
3344         bool no_fallback;
3345
3346 retry:
3347         /*
3348          * Scan zonelist, looking for a zone with enough free.
3349          * See also cpuset_node_allowed() comment in kernel/cgroup/cpuset.c.
3350          */
3351         no_fallback = alloc_flags & ALLOC_NOFRAGMENT;
3352         z = ac->preferred_zoneref;
3353         for_next_zone_zonelist_nodemask(zone, z, ac->highest_zoneidx,
3354                                         ac->nodemask) {
3355                 struct page *page;
3356                 unsigned long mark;
3357
3358                 if (cpusets_enabled() &&
3359                         (alloc_flags & ALLOC_CPUSET) &&
3360                         !__cpuset_zone_allowed(zone, gfp_mask))
3361                                 continue;
3362                 /*
3363                  * When allocating a page cache page for writing, we
3364                  * want to get it from a node that is within its dirty
3365                  * limit, such that no single node holds more than its
3366                  * proportional share of globally allowed dirty pages.
3367                  * The dirty limits take into account the node's
3368                  * lowmem reserves and high watermark so that kswapd
3369                  * should be able to balance it without having to
3370                  * write pages from its LRU list.
3371                  *
3372                  * XXX: For now, allow allocations to potentially
3373                  * exceed the per-node dirty limit in the slowpath
3374                  * (spread_dirty_pages unset) before going into reclaim,
3375                  * which is important when on a NUMA setup the allowed
3376                  * nodes are together not big enough to reach the
3377                  * global limit.  The proper fix for these situations
3378                  * will require awareness of nodes in the
3379                  * dirty-throttling and the flusher threads.
3380                  */
3381                 if (ac->spread_dirty_pages) {
3382                         if (last_pgdat != zone->zone_pgdat) {
3383                                 last_pgdat = zone->zone_pgdat;
3384                                 last_pgdat_dirty_ok = node_dirty_ok(zone->zone_pgdat);
3385                         }
3386
3387                         if (!last_pgdat_dirty_ok)
3388                                 continue;
3389                 }
3390
3391                 if (no_fallback && nr_online_nodes > 1 &&
3392                     zone != zonelist_zone(ac->preferred_zoneref)) {
3393                         int local_nid;
3394
3395                         /*
3396                          * If moving to a remote node, retry but allow
3397                          * fragmenting fallbacks. Locality is more important
3398                          * than fragmentation avoidance.
3399                          */
3400                         local_nid = zonelist_node_idx(ac->preferred_zoneref);
3401                         if (zone_to_nid(zone) != local_nid) {
3402                                 alloc_flags &= ~ALLOC_NOFRAGMENT;
3403                                 goto retry;
3404                         }
3405                 }
3406
3407                 cond_accept_memory(zone, order);
3408
3409                 /*
3410                  * Detect whether the number of free pages is below high
3411                  * watermark.  If so, we will decrease pcp->high and free
3412                  * PCP pages in free path to reduce the possibility of
3413                  * premature page reclaiming.  Detection is done here to
3414                  * avoid to do that in hotter free path.
3415                  */
3416                 if (test_bit(ZONE_BELOW_HIGH, &zone->flags))
3417                         goto check_alloc_wmark;
3418
3419                 mark = high_wmark_pages(zone);
3420                 if (zone_watermark_fast(zone, order, mark,
3421                                         ac->highest_zoneidx, alloc_flags,
3422                                         gfp_mask))
3423                         goto try_this_zone;
3424                 else
3425                         set_bit(ZONE_BELOW_HIGH, &zone->flags);
3426
3427 check_alloc_wmark:
3428                 mark = wmark_pages(zone, alloc_flags & ALLOC_WMARK_MASK);
3429                 if (!zone_watermark_fast(zone, order, mark,
3430                                        ac->highest_zoneidx, alloc_flags,
3431                                        gfp_mask)) {
3432                         int ret;
3433
3434                         if (cond_accept_memory(zone, order))
3435                                 goto try_this_zone;
3436
3437                         /*
3438                          * Watermark failed for this zone, but see if we can
3439                          * grow this zone if it contains deferred pages.
3440                          */
3441                         if (deferred_pages_enabled()) {
3442                                 if (_deferred_grow_zone(zone, order))
3443                                         goto try_this_zone;
3444                         }
3445                         /* Checked here to keep the fast path fast */
3446                         BUILD_BUG_ON(ALLOC_NO_WATERMARKS < NR_WMARK);
3447                         if (alloc_flags & ALLOC_NO_WATERMARKS)
3448                                 goto try_this_zone;
3449
3450                         if (!node_reclaim_enabled() ||
3451                             !zone_allows_reclaim(zonelist_zone(ac->preferred_zoneref), zone))
3452                                 continue;
3453
3454                         ret = node_reclaim(zone->zone_pgdat, gfp_mask, order);
3455                         switch (ret) {
3456                         case NODE_RECLAIM_NOSCAN:
3457                                 /* did not scan */
3458                                 continue;
3459                         case NODE_RECLAIM_FULL:
3460                                 /* scanned but unreclaimable */
3461                                 continue;
3462                         default:
3463                                 /* did we reclaim enough */
3464                                 if (zone_watermark_ok(zone, order, mark,
3465                                         ac->highest_zoneidx, alloc_flags))
3466                                         goto try_this_zone;
3467
3468                                 continue;
3469                         }
3470                 }
3471
3472 try_this_zone:
3473                 page = rmqueue(zonelist_zone(ac->preferred_zoneref), zone, order,
3474                                 gfp_mask, alloc_flags, ac->migratetype);
3475                 if (page) {
3476                         prep_new_page(page, order, gfp_mask, alloc_flags);
3477
3478                         /*
3479                          * If this is a high-order atomic allocation then check
3480                          * if the pageblock should be reserved for the future
3481                          */
3482                         if (unlikely(alloc_flags & ALLOC_HIGHATOMIC))
3483                                 reserve_highatomic_pageblock(page, order, zone);
3484
3485                         return page;
3486                 } else {
3487                         if (cond_accept_memory(zone, order))
3488                                 goto try_this_zone;
3489
3490                         /* Try again if zone has deferred pages */
3491                         if (deferred_pages_enabled()) {
3492                                 if (_deferred_grow_zone(zone, order))
3493                                         goto try_this_zone;
3494                         }
3495                 }
3496         }
3497
3498         /*
3499          * It's possible on a UMA machine to get through all zones that are
3500          * fragmented. If avoiding fragmentation, reset and try again.
3501          */
3502         if (no_fallback) {
3503                 alloc_flags &= ~ALLOC_NOFRAGMENT;
3504                 goto retry;
3505         }
3506
3507         return NULL;
3508 }
3509
3510 static void warn_alloc_show_mem(gfp_t gfp_mask, nodemask_t *nodemask)
3511 {
3512         unsigned int filter = SHOW_MEM_FILTER_NODES;
3513
3514         /*
3515          * This documents exceptions given to allocations in certain
3516          * contexts that are allowed to allocate outside current's set
3517          * of allowed nodes.
3518          */
3519         if (!(gfp_mask & __GFP_NOMEMALLOC))
3520                 if (tsk_is_oom_victim(current) ||
3521                     (current->flags & (PF_MEMALLOC | PF_EXITING)))
3522                         filter &= ~SHOW_MEM_FILTER_NODES;
3523         if (!in_task() || !(gfp_mask & __GFP_DIRECT_RECLAIM))
3524                 filter &= ~SHOW_MEM_FILTER_NODES;
3525
3526         __show_mem(filter, nodemask, gfp_zone(gfp_mask));
3527 }
3528
3529 void warn_alloc(gfp_t gfp_mask, nodemask_t *nodemask, const char *fmt, ...)
3530 {
3531         struct va_format vaf;
3532         va_list args;
3533         static DEFINE_RATELIMIT_STATE(nopage_rs, 10*HZ, 1);
3534
3535         if ((gfp_mask & __GFP_NOWARN) ||
3536              !__ratelimit(&nopage_rs) ||
3537              ((gfp_mask & __GFP_DMA) && !has_managed_dma()))
3538                 return;
3539
3540         va_start(args, fmt);
3541         vaf.fmt = fmt;
3542         vaf.va = &args;
3543         pr_warn("%s: %pV, mode:%#x(%pGg), nodemask=%*pbl",
3544                         current->comm, &vaf, gfp_mask, &gfp_mask,
3545                         nodemask_pr_args(nodemask));
3546         va_end(args);
3547
3548         cpuset_print_current_mems_allowed();
3549         pr_cont("\n");
3550         dump_stack();
3551         warn_alloc_show_mem(gfp_mask, nodemask);
3552 }
3553
3554 static inline struct page *
3555 __alloc_pages_cpuset_fallback(gfp_t gfp_mask, unsigned int order,
3556                               unsigned int alloc_flags,
3557                               const struct alloc_context *ac)
3558 {
3559         struct page *page;
3560
3561         page = get_page_from_freelist(gfp_mask, order,
3562                         alloc_flags|ALLOC_CPUSET, ac);
3563         /*
3564          * fallback to ignore cpuset restriction if our nodes
3565          * are depleted
3566          */
3567         if (!page)
3568                 page = get_page_from_freelist(gfp_mask, order,
3569                                 alloc_flags, ac);
3570
3571         return page;
3572 }
3573
3574 static inline struct page *
3575 __alloc_pages_may_oom(gfp_t gfp_mask, unsigned int order,
3576         const struct alloc_context *ac, unsigned long *did_some_progress)
3577 {
3578         struct oom_control oc = {
3579                 .zonelist = ac->zonelist,
3580                 .nodemask = ac->nodemask,
3581                 .memcg = NULL,
3582                 .gfp_mask = gfp_mask,
3583                 .order = order,
3584         };
3585         struct page *page;
3586
3587         *did_some_progress = 0;
3588
3589         /*
3590          * Acquire the oom lock.  If that fails, somebody else is
3591          * making progress for us.
3592          */
3593         if (!mutex_trylock(&oom_lock)) {
3594                 *did_some_progress = 1;
3595                 schedule_timeout_uninterruptible(1);
3596                 return NULL;
3597         }
3598
3599         /*
3600          * Go through the zonelist yet one more time, keep very high watermark
3601          * here, this is only to catch a parallel oom killing, we must fail if
3602          * we're still under heavy pressure. But make sure that this reclaim
3603          * attempt shall not depend on __GFP_DIRECT_RECLAIM && !__GFP_NORETRY
3604          * allocation which will never fail due to oom_lock already held.
3605          */
3606         page = get_page_from_freelist((gfp_mask | __GFP_HARDWALL) &
3607                                       ~__GFP_DIRECT_RECLAIM, order,
3608                                       ALLOC_WMARK_HIGH|ALLOC_CPUSET, ac);
3609         if (page)
3610                 goto out;
3611
3612         /* Coredumps can quickly deplete all memory reserves */
3613         if (current->flags & PF_DUMPCORE)
3614                 goto out;
3615         /* The OOM killer will not help higher order allocs */
3616         if (order > PAGE_ALLOC_COSTLY_ORDER)
3617                 goto out;
3618         /*
3619          * We have already exhausted all our reclaim opportunities without any
3620          * success so it is time to admit defeat. We will skip the OOM killer
3621          * because it is very likely that the caller has a more reasonable
3622          * fallback than shooting a random task.
3623          *
3624          * The OOM killer may not free memory on a specific node.
3625          */
3626         if (gfp_mask & (__GFP_RETRY_MAYFAIL | __GFP_THISNODE))
3627                 goto out;
3628         /* The OOM killer does not needlessly kill tasks for lowmem */
3629         if (ac->highest_zoneidx < ZONE_NORMAL)
3630                 goto out;
3631         if (pm_suspended_storage())
3632                 goto out;
3633         /*
3634          * XXX: GFP_NOFS allocations should rather fail than rely on
3635          * other request to make a forward progress.
3636          * We are in an unfortunate situation where out_of_memory cannot
3637          * do much for this context but let's try it to at least get
3638          * access to memory reserved if the current task is killed (see
3639          * out_of_memory). Once filesystems are ready to handle allocation
3640          * failures more gracefully we should just bail out here.
3641          */
3642
3643         /* Exhausted what can be done so it's blame time */
3644         if (out_of_memory(&oc) ||
3645             WARN_ON_ONCE_GFP(gfp_mask & __GFP_NOFAIL, gfp_mask)) {
3646                 *did_some_progress = 1;
3647
3648                 /*
3649                  * Help non-failing allocations by giving them access to memory
3650                  * reserves
3651                  */
3652                 if (gfp_mask & __GFP_NOFAIL)
3653                         page = __alloc_pages_cpuset_fallback(gfp_mask, order,
3654                                         ALLOC_NO_WATERMARKS, ac);
3655         }
3656 out:
3657         mutex_unlock(&oom_lock);
3658         return page;
3659 }
3660
3661 /*
3662  * Maximum number of compaction retries with a progress before OOM
3663  * killer is consider as the only way to move forward.
3664  */
3665 #define MAX_COMPACT_RETRIES 16
3666
3667 #ifdef CONFIG_COMPACTION
3668 /* Try memory compaction for high-order allocations before reclaim */
3669 static struct page *
3670 __alloc_pages_direct_compact(gfp_t gfp_mask, unsigned int order,
3671                 unsigned int alloc_flags, const struct alloc_context *ac,
3672                 enum compact_priority prio, enum compact_result *compact_result)
3673 {
3674         struct page *page = NULL;
3675         unsigned long pflags;
3676         unsigned int noreclaim_flag;
3677
3678         if (!order)
3679                 return NULL;
3680
3681         psi_memstall_enter(&pflags);
3682         delayacct_compact_start();
3683         noreclaim_flag = memalloc_noreclaim_save();
3684
3685         *compact_result = try_to_compact_pages(gfp_mask, order, alloc_flags, ac,
3686                                                                 prio, &page);
3687
3688         memalloc_noreclaim_restore(noreclaim_flag);
3689         psi_memstall_leave(&pflags);
3690         delayacct_compact_end();
3691
3692         if (*compact_result == COMPACT_SKIPPED)
3693                 return NULL;
3694         /*
3695          * At least in one zone compaction wasn't deferred or skipped, so let's
3696          * count a compaction stall
3697          */
3698         count_vm_event(COMPACTSTALL);
3699
3700         /* Prep a captured page if available */
3701         if (page)
3702                 prep_new_page(page, order, gfp_mask, alloc_flags);
3703
3704         /* Try get a page from the freelist if available */
3705         if (!page)
3706                 page = get_page_from_freelist(gfp_mask, order, alloc_flags, ac);
3707
3708         if (page) {
3709                 struct zone *zone = page_zone(page);
3710
3711                 zone->compact_blockskip_flush = false;
3712                 compaction_defer_reset(zone, order, true);
3713                 count_vm_event(COMPACTSUCCESS);
3714                 return page;
3715         }
3716
3717         /*
3718          * It's bad if compaction run occurs and fails. The most likely reason
3719          * is that pages exist, but not enough to satisfy watermarks.
3720          */
3721         count_vm_event(COMPACTFAIL);
3722
3723         cond_resched();
3724
3725         return NULL;
3726 }
3727
3728 static inline bool
3729 should_compact_retry(struct alloc_context *ac, int order, int alloc_flags,
3730                      enum compact_result compact_result,
3731                      enum compact_priority *compact_priority,
3732                      int *compaction_retries)
3733 {
3734         int max_retries = MAX_COMPACT_RETRIES;
3735         int min_priority;
3736         bool ret = false;
3737         int retries = *compaction_retries;
3738         enum compact_priority priority = *compact_priority;
3739
3740         if (!order)
3741                 return false;
3742
3743         if (fatal_signal_pending(current))
3744                 return false;
3745
3746         /*
3747          * Compaction was skipped due to a lack of free order-0
3748          * migration targets. Continue if reclaim can help.
3749          */
3750         if (compact_result == COMPACT_SKIPPED) {
3751                 ret = compaction_zonelist_suitable(ac, order, alloc_flags);
3752                 goto out;
3753         }
3754
3755         /*
3756          * Compaction managed to coalesce some page blocks, but the
3757          * allocation failed presumably due to a race. Retry some.
3758          */
3759         if (compact_result == COMPACT_SUCCESS) {
3760                 /*
3761                  * !costly requests are much more important than
3762                  * __GFP_RETRY_MAYFAIL costly ones because they are de
3763                  * facto nofail and invoke OOM killer to move on while
3764                  * costly can fail and users are ready to cope with
3765                  * that. 1/4 retries is rather arbitrary but we would
3766                  * need much more detailed feedback from compaction to
3767                  * make a better decision.
3768                  */
3769                 if (order > PAGE_ALLOC_COSTLY_ORDER)
3770                         max_retries /= 4;
3771
3772                 if (++(*compaction_retries) <= max_retries) {
3773                         ret = true;
3774                         goto out;
3775                 }
3776         }
3777
3778         /*
3779          * Compaction failed. Retry with increasing priority.
3780          */
3781         min_priority = (order > PAGE_ALLOC_COSTLY_ORDER) ?
3782                         MIN_COMPACT_COSTLY_PRIORITY : MIN_COMPACT_PRIORITY;
3783
3784         if (*compact_priority > min_priority) {
3785                 (*compact_priority)--;
3786                 *compaction_retries = 0;
3787                 ret = true;
3788         }
3789 out:
3790         trace_compact_retry(order, priority, compact_result, retries, max_retries, ret);
3791         return ret;
3792 }
3793 #else
3794 static inline struct page *
3795 __alloc_pages_direct_compact(gfp_t gfp_mask, unsigned int order,
3796                 unsigned int alloc_flags, const struct alloc_context *ac,
3797                 enum compact_priority prio, enum compact_result *compact_result)
3798 {
3799         *compact_result = COMPACT_SKIPPED;
3800         return NULL;
3801 }
3802
3803 static inline bool
3804 should_compact_retry(struct alloc_context *ac, unsigned int order, int alloc_flags,
3805                      enum compact_result compact_result,
3806                      enum compact_priority *compact_priority,
3807                      int *compaction_retries)
3808 {
3809         struct zone *zone;
3810         struct zoneref *z;
3811
3812         if (!order || order > PAGE_ALLOC_COSTLY_ORDER)
3813                 return false;
3814
3815         /*
3816          * There are setups with compaction disabled which would prefer to loop
3817          * inside the allocator rather than hit the oom killer prematurely.
3818          * Let's give them a good hope and keep retrying while the order-0
3819          * watermarks are OK.
3820          */
3821         for_each_zone_zonelist_nodemask(zone, z, ac->zonelist,
3822                                 ac->highest_zoneidx, ac->nodemask) {
3823                 if (zone_watermark_ok(zone, 0, min_wmark_pages(zone),
3824                                         ac->highest_zoneidx, alloc_flags))
3825                         return true;
3826         }
3827         return false;
3828 }
3829 #endif /* CONFIG_COMPACTION */
3830
3831 #ifdef CONFIG_LOCKDEP
3832 static struct lockdep_map __fs_reclaim_map =
3833         STATIC_LOCKDEP_MAP_INIT("fs_reclaim", &__fs_reclaim_map);
3834
3835 static bool __need_reclaim(gfp_t gfp_mask)
3836 {
3837         /* no reclaim without waiting on it */
3838         if (!(gfp_mask & __GFP_DIRECT_RECLAIM))
3839                 return false;
3840
3841         /* this guy won't enter reclaim */
3842         if (current->flags & PF_MEMALLOC)
3843                 return false;
3844
3845         if (gfp_mask & __GFP_NOLOCKDEP)
3846                 return false;
3847
3848         return true;
3849 }
3850
3851 void __fs_reclaim_acquire(unsigned long ip)
3852 {
3853         lock_acquire_exclusive(&__fs_reclaim_map, 0, 0, NULL, ip);
3854 }
3855
3856 void __fs_reclaim_release(unsigned long ip)
3857 {
3858         lock_release(&__fs_reclaim_map, ip);
3859 }
3860
3861 void fs_reclaim_acquire(gfp_t gfp_mask)
3862 {
3863         gfp_mask = current_gfp_context(gfp_mask);
3864
3865         if (__need_reclaim(gfp_mask)) {
3866                 if (gfp_mask & __GFP_FS)
3867                         __fs_reclaim_acquire(_RET_IP_);
3868
3869 #ifdef CONFIG_MMU_NOTIFIER
3870                 lock_map_acquire(&__mmu_notifier_invalidate_range_start_map);
3871                 lock_map_release(&__mmu_notifier_invalidate_range_start_map);
3872 #endif
3873
3874         }
3875 }
3876 EXPORT_SYMBOL_GPL(fs_reclaim_acquire);
3877
3878 void fs_reclaim_release(gfp_t gfp_mask)
3879 {
3880         gfp_mask = current_gfp_context(gfp_mask);
3881
3882         if (__need_reclaim(gfp_mask)) {
3883                 if (gfp_mask & __GFP_FS)
3884                         __fs_reclaim_release(_RET_IP_);
3885         }
3886 }
3887 EXPORT_SYMBOL_GPL(fs_reclaim_release);
3888 #endif
3889
3890 /*
3891  * Zonelists may change due to hotplug during allocation. Detect when zonelists
3892  * have been rebuilt so allocation retries. Reader side does not lock and
3893  * retries the allocation if zonelist changes. Writer side is protected by the
3894  * embedded spin_lock.
3895  */
3896 static DEFINE_SEQLOCK(zonelist_update_seq);
3897
3898 static unsigned int zonelist_iter_begin(void)
3899 {
3900         if (IS_ENABLED(CONFIG_MEMORY_HOTREMOVE))
3901                 return read_seqbegin(&zonelist_update_seq);
3902
3903         return 0;
3904 }
3905
3906 static unsigned int check_retry_zonelist(unsigned int seq)
3907 {
3908         if (IS_ENABLED(CONFIG_MEMORY_HOTREMOVE))
3909                 return read_seqretry(&zonelist_update_seq, seq);
3910
3911         return seq;
3912 }
3913
3914 /* Perform direct synchronous page reclaim */
3915 static unsigned long
3916 __perform_reclaim(gfp_t gfp_mask, unsigned int order,
3917                                         const struct alloc_context *ac)
3918 {
3919         unsigned int noreclaim_flag;
3920         unsigned long progress;
3921
3922         cond_resched();
3923
3924         /* We now go into synchronous reclaim */
3925         cpuset_memory_pressure_bump();
3926         fs_reclaim_acquire(gfp_mask);
3927         noreclaim_flag = memalloc_noreclaim_save();
3928
3929         progress = try_to_free_pages(ac->zonelist, order, gfp_mask,
3930                                                                 ac->nodemask);
3931
3932         memalloc_noreclaim_restore(noreclaim_flag);
3933         fs_reclaim_release(gfp_mask);
3934
3935         cond_resched();
3936
3937         return progress;
3938 }
3939
3940 /* The really slow allocator path where we enter direct reclaim */
3941 static inline struct page *
3942 __alloc_pages_direct_reclaim(gfp_t gfp_mask, unsigned int order,
3943                 unsigned int alloc_flags, const struct alloc_context *ac,
3944                 unsigned long *did_some_progress)
3945 {
3946         struct page *page = NULL;
3947         unsigned long pflags;
3948         bool drained = false;
3949
3950         psi_memstall_enter(&pflags);
3951         *did_some_progress = __perform_reclaim(gfp_mask, order, ac);
3952         if (unlikely(!(*did_some_progress)))
3953                 goto out;
3954
3955 retry:
3956         page = get_page_from_freelist(gfp_mask, order, alloc_flags, ac);
3957
3958         /*
3959          * If an allocation failed after direct reclaim, it could be because
3960          * pages are pinned on the per-cpu lists or in high alloc reserves.
3961          * Shrink them and try again
3962          */
3963         if (!page && !drained) {
3964                 unreserve_highatomic_pageblock(ac, false);
3965                 drain_all_pages(NULL);
3966                 drained = true;
3967                 goto retry;
3968         }
3969 out:
3970         psi_memstall_leave(&pflags);
3971
3972         return page;
3973 }
3974
3975 static void wake_all_kswapds(unsigned int order, gfp_t gfp_mask,
3976                              const struct alloc_context *ac)
3977 {
3978         struct zoneref *z;
3979         struct zone *zone;
3980         pg_data_t *last_pgdat = NULL;
3981         enum zone_type highest_zoneidx = ac->highest_zoneidx;
3982
3983         for_each_zone_zonelist_nodemask(zone, z, ac->zonelist, highest_zoneidx,
3984                                         ac->nodemask) {
3985                 if (!managed_zone(zone))
3986                         continue;
3987                 if (last_pgdat != zone->zone_pgdat) {
3988                         wakeup_kswapd(zone, gfp_mask, order, highest_zoneidx);
3989                         last_pgdat = zone->zone_pgdat;
3990                 }
3991         }
3992 }
3993
3994 static inline unsigned int
3995 gfp_to_alloc_flags(gfp_t gfp_mask, unsigned int order)
3996 {
3997         unsigned int alloc_flags = ALLOC_WMARK_MIN | ALLOC_CPUSET;
3998
3999         /*
4000          * __GFP_HIGH is assumed to be the same as ALLOC_MIN_RESERVE
4001          * and __GFP_KSWAPD_RECLAIM is assumed to be the same as ALLOC_KSWAPD
4002          * to save two branches.
4003          */
4004         BUILD_BUG_ON(__GFP_HIGH != (__force gfp_t) ALLOC_MIN_RESERVE);
4005         BUILD_BUG_ON(__GFP_KSWAPD_RECLAIM != (__force gfp_t) ALLOC_KSWAPD);
4006
4007         /*
4008          * The caller may dip into page reserves a bit more if the caller
4009          * cannot run direct reclaim, or if the caller has realtime scheduling
4010          * policy or is asking for __GFP_HIGH memory.  GFP_ATOMIC requests will
4011          * set both ALLOC_NON_BLOCK and ALLOC_MIN_RESERVE(__GFP_HIGH).
4012          */
4013         alloc_flags |= (__force int)
4014                 (gfp_mask & (__GFP_HIGH | __GFP_KSWAPD_RECLAIM));
4015
4016         if (!(gfp_mask & __GFP_DIRECT_RECLAIM)) {
4017                 /*
4018                  * Not worth trying to allocate harder for __GFP_NOMEMALLOC even
4019                  * if it can't schedule.
4020                  */
4021                 if (!(gfp_mask & __GFP_NOMEMALLOC)) {
4022                         alloc_flags |= ALLOC_NON_BLOCK;
4023
4024                         if (order > 0)
4025                                 alloc_flags |= ALLOC_HIGHATOMIC;
4026                 }
4027
4028                 /*
4029                  * Ignore cpuset mems for non-blocking __GFP_HIGH (probably
4030                  * GFP_ATOMIC) rather than fail, see the comment for
4031                  * cpuset_node_allowed().
4032                  */
4033                 if (alloc_flags & ALLOC_MIN_RESERVE)
4034                         alloc_flags &= ~ALLOC_CPUSET;
4035         } else if (unlikely(rt_or_dl_task(current)) && in_task())
4036                 alloc_flags |= ALLOC_MIN_RESERVE;
4037
4038         alloc_flags = gfp_to_alloc_flags_cma(gfp_mask, alloc_flags);
4039
4040         return alloc_flags;
4041 }
4042
4043 static bool oom_reserves_allowed(struct task_struct *tsk)
4044 {
4045         if (!tsk_is_oom_victim(tsk))
4046                 return false;
4047
4048         /*
4049          * !MMU doesn't have oom reaper so give access to memory reserves
4050          * only to the thread with TIF_MEMDIE set
4051          */
4052         if (!IS_ENABLED(CONFIG_MMU) && !test_thread_flag(TIF_MEMDIE))
4053                 return false;
4054
4055         return true;
4056 }
4057
4058 /*
4059  * Distinguish requests which really need access to full memory
4060  * reserves from oom victims which can live with a portion of it
4061  */
4062 static inline int __gfp_pfmemalloc_flags(gfp_t gfp_mask)
4063 {
4064         if (unlikely(gfp_mask & __GFP_NOMEMALLOC))
4065                 return 0;
4066         if (gfp_mask & __GFP_MEMALLOC)
4067                 return ALLOC_NO_WATERMARKS;
4068         if (in_serving_softirq() && (current->flags & PF_MEMALLOC))
4069                 return ALLOC_NO_WATERMARKS;
4070         if (!in_interrupt()) {
4071                 if (current->flags & PF_MEMALLOC)
4072                         return ALLOC_NO_WATERMARKS;
4073                 else if (oom_reserves_allowed(current))
4074                         return ALLOC_OOM;
4075         }
4076
4077         return 0;
4078 }
4079
4080 bool gfp_pfmemalloc_allowed(gfp_t gfp_mask)
4081 {
4082         return !!__gfp_pfmemalloc_flags(gfp_mask);
4083 }
4084
4085 /*
4086  * Checks whether it makes sense to retry the reclaim to make a forward progress
4087  * for the given allocation request.
4088  *
4089  * We give up when we either have tried MAX_RECLAIM_RETRIES in a row
4090  * without success, or when we couldn't even meet the watermark if we
4091  * reclaimed all remaining pages on the LRU lists.
4092  *
4093  * Returns true if a retry is viable or false to enter the oom path.
4094  */
4095 static inline bool
4096 should_reclaim_retry(gfp_t gfp_mask, unsigned order,
4097                      struct alloc_context *ac, int alloc_flags,
4098                      bool did_some_progress, int *no_progress_loops)
4099 {
4100         struct zone *zone;
4101         struct zoneref *z;
4102         bool ret = false;
4103
4104         /*
4105          * Costly allocations might have made a progress but this doesn't mean
4106          * their order will become available due to high fragmentation so
4107          * always increment the no progress counter for them
4108          */
4109         if (did_some_progress && order <= PAGE_ALLOC_COSTLY_ORDER)
4110                 *no_progress_loops = 0;
4111         else
4112                 (*no_progress_loops)++;
4113
4114         if (*no_progress_loops > MAX_RECLAIM_RETRIES)
4115                 goto out;
4116
4117
4118         /*
4119          * Keep reclaiming pages while there is a chance this will lead
4120          * somewhere.  If none of the target zones can satisfy our allocation
4121          * request even if all reclaimable pages are considered then we are
4122          * screwed and have to go OOM.
4123          */
4124         for_each_zone_zonelist_nodemask(zone, z, ac->zonelist,
4125                                 ac->highest_zoneidx, ac->nodemask) {
4126                 unsigned long available;
4127                 unsigned long reclaimable;
4128                 unsigned long min_wmark = min_wmark_pages(zone);
4129                 bool wmark;
4130
4131                 if (cpusets_enabled() &&
4132                         (alloc_flags & ALLOC_CPUSET) &&
4133                         !__cpuset_zone_allowed(zone, gfp_mask))
4134                                 continue;
4135
4136                 available = reclaimable = zone_reclaimable_pages(zone);
4137                 available += zone_page_state_snapshot(zone, NR_FREE_PAGES);
4138
4139                 /*
4140                  * Would the allocation succeed if we reclaimed all
4141                  * reclaimable pages?
4142                  */
4143                 wmark = __zone_watermark_ok(zone, order, min_wmark,
4144                                 ac->highest_zoneidx, alloc_flags, available);
4145                 trace_reclaim_retry_zone(z, order, reclaimable,
4146                                 available, min_wmark, *no_progress_loops, wmark);
4147                 if (wmark) {
4148                         ret = true;
4149                         break;
4150                 }
4151         }
4152
4153         /*
4154          * Memory allocation/reclaim might be called from a WQ context and the
4155          * current implementation of the WQ concurrency control doesn't
4156          * recognize that a particular WQ is congested if the worker thread is
4157          * looping without ever sleeping. Therefore we have to do a short sleep
4158          * here rather than calling cond_resched().
4159          */
4160         if (current->flags & PF_WQ_WORKER)
4161                 schedule_timeout_uninterruptible(1);
4162         else
4163                 cond_resched();
4164 out:
4165         /* Before OOM, exhaust highatomic_reserve */
4166         if (!ret)
4167                 return unreserve_highatomic_pageblock(ac, true);
4168
4169         return ret;
4170 }
4171
4172 static inline bool
4173 check_retry_cpuset(int cpuset_mems_cookie, struct alloc_context *ac)
4174 {
4175         /*
4176          * It's possible that cpuset's mems_allowed and the nodemask from
4177          * mempolicy don't intersect. This should be normally dealt with by
4178          * policy_nodemask(), but it's possible to race with cpuset update in
4179          * such a way the check therein was true, and then it became false
4180          * before we got our cpuset_mems_cookie here.
4181          * This assumes that for all allocations, ac->nodemask can come only
4182          * from MPOL_BIND mempolicy (whose documented semantics is to be ignored
4183          * when it does not intersect with the cpuset restrictions) or the
4184          * caller can deal with a violated nodemask.
4185          */
4186         if (cpusets_enabled() && ac->nodemask &&
4187                         !cpuset_nodemask_valid_mems_allowed(ac->nodemask)) {
4188                 ac->nodemask = NULL;
4189                 return true;
4190         }
4191
4192         /*
4193          * When updating a task's mems_allowed or mempolicy nodemask, it is
4194          * possible to race with parallel threads in such a way that our
4195          * allocation can fail while the mask is being updated. If we are about
4196          * to fail, check if the cpuset changed during allocation and if so,
4197          * retry.
4198          */
4199         if (read_mems_allowed_retry(cpuset_mems_cookie))
4200                 return true;
4201
4202         return false;
4203 }
4204
4205 static inline struct page *
4206 __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,
4207                                                 struct alloc_context *ac)
4208 {
4209         bool can_direct_reclaim = gfp_mask & __GFP_DIRECT_RECLAIM;
4210         bool can_compact = gfp_compaction_allowed(gfp_mask);
4211         bool nofail = gfp_mask & __GFP_NOFAIL;
4212         const bool costly_order = order > PAGE_ALLOC_COSTLY_ORDER;
4213         struct page *page = NULL;
4214         unsigned int alloc_flags;
4215         unsigned long did_some_progress;
4216         enum compact_priority compact_priority;
4217         enum compact_result compact_result;
4218         int compaction_retries;
4219         int no_progress_loops;
4220         unsigned int cpuset_mems_cookie;
4221         unsigned int zonelist_iter_cookie;
4222         int reserve_flags;
4223
4224         if (unlikely(nofail)) {
4225                 /*
4226                  * We most definitely don't want callers attempting to
4227                  * allocate greater than order-1 page units with __GFP_NOFAIL.
4228                  */
4229                 WARN_ON_ONCE(order > 1);
4230                 /*
4231                  * Also we don't support __GFP_NOFAIL without __GFP_DIRECT_RECLAIM,
4232                  * otherwise, we may result in lockup.
4233                  */
4234                 WARN_ON_ONCE(!can_direct_reclaim);
4235                 /*
4236                  * PF_MEMALLOC request from this context is rather bizarre
4237                  * because we cannot reclaim anything and only can loop waiting
4238                  * for somebody to do a work for us.
4239                  */
4240                 WARN_ON_ONCE(current->flags & PF_MEMALLOC);
4241         }
4242
4243 restart:
4244         compaction_retries = 0;
4245         no_progress_loops = 0;
4246         compact_priority = DEF_COMPACT_PRIORITY;
4247         cpuset_mems_cookie = read_mems_allowed_begin();
4248         zonelist_iter_cookie = zonelist_iter_begin();
4249
4250         /*
4251          * The fast path uses conservative alloc_flags to succeed only until
4252          * kswapd needs to be woken up, and to avoid the cost of setting up
4253          * alloc_flags precisely. So we do that now.
4254          */
4255         alloc_flags = gfp_to_alloc_flags(gfp_mask, order);
4256
4257         /*
4258          * We need to recalculate the starting point for the zonelist iterator
4259          * because we might have used different nodemask in the fast path, or
4260          * there was a cpuset modification and we are retrying - otherwise we
4261          * could end up iterating over non-eligible zones endlessly.
4262          */
4263         ac->preferred_zoneref = first_zones_zonelist(ac->zonelist,
4264                                         ac->highest_zoneidx, ac->nodemask);
4265         if (!zonelist_zone(ac->preferred_zoneref))
4266                 goto nopage;
4267
4268         /*
4269          * Check for insane configurations where the cpuset doesn't contain
4270          * any suitable zone to satisfy the request - e.g. non-movable
4271          * GFP_HIGHUSER allocations from MOVABLE nodes only.
4272          */
4273         if (cpusets_insane_config() && (gfp_mask & __GFP_HARDWALL)) {
4274                 struct zoneref *z = first_zones_zonelist(ac->zonelist,
4275                                         ac->highest_zoneidx,
4276                                         &cpuset_current_mems_allowed);
4277                 if (!zonelist_zone(z))
4278                         goto nopage;
4279         }
4280
4281         if (alloc_flags & ALLOC_KSWAPD)
4282                 wake_all_kswapds(order, gfp_mask, ac);
4283
4284         /*
4285          * The adjusted alloc_flags might result in immediate success, so try
4286          * that first
4287          */
4288         page = get_page_from_freelist(gfp_mask, order, alloc_flags, ac);
4289         if (page)
4290                 goto got_pg;
4291
4292         /*
4293          * For costly allocations, try direct compaction first, as it's likely
4294          * that we have enough base pages and don't need to reclaim. For non-
4295          * movable high-order allocations, do that as well, as compaction will
4296          * try prevent permanent fragmentation by migrating from blocks of the
4297          * same migratetype.
4298          * Don't try this for allocations that are allowed to ignore
4299          * watermarks, as the ALLOC_NO_WATERMARKS attempt didn't yet happen.
4300          */
4301         if (can_direct_reclaim && can_compact &&
4302                         (costly_order ||
4303                            (order > 0 && ac->migratetype != MIGRATE_MOVABLE))
4304                         && !gfp_pfmemalloc_allowed(gfp_mask)) {
4305                 page = __alloc_pages_direct_compact(gfp_mask, order,
4306                                                 alloc_flags, ac,
4307                                                 INIT_COMPACT_PRIORITY,
4308                                                 &compact_result);
4309                 if (page)
4310                         goto got_pg;
4311
4312                 /*
4313                  * Checks for costly allocations with __GFP_NORETRY, which
4314                  * includes some THP page fault allocations
4315                  */
4316                 if (costly_order && (gfp_mask & __GFP_NORETRY)) {
4317                         /*
4318                          * If allocating entire pageblock(s) and compaction
4319                          * failed because all zones are below low watermarks
4320                          * or is prohibited because it recently failed at this
4321                          * order, fail immediately unless the allocator has
4322                          * requested compaction and reclaim retry.
4323                          *
4324                          * Reclaim is
4325                          *  - potentially very expensive because zones are far
4326                          *    below their low watermarks or this is part of very
4327                          *    bursty high order allocations,
4328                          *  - not guaranteed to help because isolate_freepages()
4329                          *    may not iterate over freed pages as part of its
4330                          *    linear scan, and
4331                          *  - unlikely to make entire pageblocks free on its
4332                          *    own.
4333                          */
4334                         if (compact_result == COMPACT_SKIPPED ||
4335                             compact_result == COMPACT_DEFERRED)
4336                                 goto nopage;
4337
4338                         /*
4339                          * Looks like reclaim/compaction is worth trying, but
4340                          * sync compaction could be very expensive, so keep
4341                          * using async compaction.
4342                          */
4343                         compact_priority = INIT_COMPACT_PRIORITY;
4344                 }
4345         }
4346
4347 retry:
4348         /* Ensure kswapd doesn't accidentally go to sleep as long as we loop */
4349         if (alloc_flags & ALLOC_KSWAPD)
4350                 wake_all_kswapds(order, gfp_mask, ac);
4351
4352         reserve_flags = __gfp_pfmemalloc_flags(gfp_mask);
4353         if (reserve_flags)
4354                 alloc_flags = gfp_to_alloc_flags_cma(gfp_mask, reserve_flags) |
4355                                           (alloc_flags & ALLOC_KSWAPD);
4356
4357         /*
4358          * Reset the nodemask and zonelist iterators if memory policies can be
4359          * ignored. These allocations are high priority and system rather than
4360          * user oriented.
4361          */
4362         if (!(alloc_flags & ALLOC_CPUSET) || reserve_flags) {
4363                 ac->nodemask = NULL;
4364                 ac->preferred_zoneref = first_zones_zonelist(ac->zonelist,
4365                                         ac->highest_zoneidx, ac->nodemask);
4366         }
4367
4368         /* Attempt with potentially adjusted zonelist and alloc_flags */
4369         page = get_page_from_freelist(gfp_mask, order, alloc_flags, ac);
4370         if (page)
4371                 goto got_pg;
4372
4373         /* Caller is not willing to reclaim, we can't balance anything */
4374         if (!can_direct_reclaim)
4375                 goto nopage;
4376
4377         /* Avoid recursion of direct reclaim */
4378         if (current->flags & PF_MEMALLOC)
4379                 goto nopage;
4380
4381         /* Try direct reclaim and then allocating */
4382         page = __alloc_pages_direct_reclaim(gfp_mask, order, alloc_flags, ac,
4383                                                         &did_some_progress);
4384         if (page)
4385                 goto got_pg;
4386
4387         /* Try direct compaction and then allocating */
4388         page = __alloc_pages_direct_compact(gfp_mask, order, alloc_flags, ac,
4389                                         compact_priority, &compact_result);
4390         if (page)
4391                 goto got_pg;
4392
4393         /* Do not loop if specifically requested */
4394         if (gfp_mask & __GFP_NORETRY)
4395                 goto nopage;
4396
4397         /*
4398          * Do not retry costly high order allocations unless they are
4399          * __GFP_RETRY_MAYFAIL and we can compact
4400          */
4401         if (costly_order && (!can_compact ||
4402                              !(gfp_mask & __GFP_RETRY_MAYFAIL)))
4403                 goto nopage;
4404
4405         if (should_reclaim_retry(gfp_mask, order, ac, alloc_flags,
4406                                  did_some_progress > 0, &no_progress_loops))
4407                 goto retry;
4408
4409         /*
4410          * It doesn't make any sense to retry for the compaction if the order-0
4411          * reclaim is not able to make any progress because the current
4412          * implementation of the compaction depends on the sufficient amount
4413          * of free memory (see __compaction_suitable)
4414          */
4415         if (did_some_progress > 0 && can_compact &&
4416                         should_compact_retry(ac, order, alloc_flags,
4417                                 compact_result, &compact_priority,
4418                                 &compaction_retries))
4419                 goto retry;
4420
4421
4422         /*
4423          * Deal with possible cpuset update races or zonelist updates to avoid
4424          * a unnecessary OOM kill.
4425          */
4426         if (check_retry_cpuset(cpuset_mems_cookie, ac) ||
4427             check_retry_zonelist(zonelist_iter_cookie))
4428                 goto restart;
4429
4430         /* Reclaim has failed us, start killing things */
4431         page = __alloc_pages_may_oom(gfp_mask, order, ac, &did_some_progress);
4432         if (page)
4433                 goto got_pg;
4434
4435         /* Avoid allocations with no watermarks from looping endlessly */
4436         if (tsk_is_oom_victim(current) &&
4437             (alloc_flags & ALLOC_OOM ||
4438              (gfp_mask & __GFP_NOMEMALLOC)))
4439                 goto nopage;
4440
4441         /* Retry as long as the OOM killer is making progress */
4442         if (did_some_progress) {
4443                 no_progress_loops = 0;
4444                 goto retry;
4445         }
4446
4447 nopage:
4448         /*
4449          * Deal with possible cpuset update races or zonelist updates to avoid
4450          * a unnecessary OOM kill.
4451          */
4452         if (check_retry_cpuset(cpuset_mems_cookie, ac) ||
4453             check_retry_zonelist(zonelist_iter_cookie))
4454                 goto restart;
4455
4456         /*
4457          * Make sure that __GFP_NOFAIL request doesn't leak out and make sure
4458          * we always retry
4459          */
4460         if (unlikely(nofail)) {
4461                 /*
4462                  * Lacking direct_reclaim we can't do anything to reclaim memory,
4463                  * we disregard these unreasonable nofail requests and still
4464                  * return NULL
4465                  */
4466                 if (!can_direct_reclaim)
4467                         goto fail;
4468
4469                 /*
4470                  * Help non-failing allocations by giving some access to memory
4471                  * reserves normally used for high priority non-blocking
4472                  * allocations but do not use ALLOC_NO_WATERMARKS because this
4473                  * could deplete whole memory reserves which would just make
4474                  * the situation worse.
4475                  */
4476                 page = __alloc_pages_cpuset_fallback(gfp_mask, order, ALLOC_MIN_RESERVE, ac);
4477                 if (page)
4478                         goto got_pg;
4479
4480                 cond_resched();
4481                 goto retry;
4482         }
4483 fail:
4484         warn_alloc(gfp_mask, ac->nodemask,
4485                         "page allocation failure: order:%u", order);
4486 got_pg:
4487         return page;
4488 }
4489
4490 static inline bool prepare_alloc_pages(gfp_t gfp_mask, unsigned int order,
4491                 int preferred_nid, nodemask_t *nodemask,
4492                 struct alloc_context *ac, gfp_t *alloc_gfp,
4493                 unsigned int *alloc_flags)
4494 {
4495         ac->highest_zoneidx = gfp_zone(gfp_mask);
4496         ac->zonelist = node_zonelist(preferred_nid, gfp_mask);
4497         ac->nodemask = nodemask;
4498         ac->migratetype = gfp_migratetype(gfp_mask);
4499
4500         if (cpusets_enabled()) {
4501                 *alloc_gfp |= __GFP_HARDWALL;
4502                 /*
4503                  * When we are in the interrupt context, it is irrelevant
4504                  * to the current task context. It means that any node ok.
4505                  */
4506                 if (in_task() && !ac->nodemask)
4507                         ac->nodemask = &cpuset_current_mems_allowed;
4508                 else
4509                         *alloc_flags |= ALLOC_CPUSET;
4510         }
4511
4512         might_alloc(gfp_mask);
4513
4514         if (should_fail_alloc_page(gfp_mask, order))
4515                 return false;
4516
4517         *alloc_flags = gfp_to_alloc_flags_cma(gfp_mask, *alloc_flags);
4518
4519         /* Dirty zone balancing only done in the fast path */
4520         ac->spread_dirty_pages = (gfp_mask & __GFP_WRITE);
4521
4522         /*
4523          * The preferred zone is used for statistics but crucially it is
4524          * also used as the starting point for the zonelist iterator. It
4525          * may get reset for allocations that ignore memory policies.
4526          */
4527         ac->preferred_zoneref = first_zones_zonelist(ac->zonelist,
4528                                         ac->highest_zoneidx, ac->nodemask);
4529
4530         return true;
4531 }
4532
4533 /*
4534  * __alloc_pages_bulk - Allocate a number of order-0 pages to a list or array
4535  * @gfp: GFP flags for the allocation
4536  * @preferred_nid: The preferred NUMA node ID to allocate from
4537  * @nodemask: Set of nodes to allocate from, may be NULL
4538  * @nr_pages: The number of pages desired on the list or array
4539  * @page_list: Optional list to store the allocated pages
4540  * @page_array: Optional array to store the pages
4541  *
4542  * This is a batched version of the page allocator that attempts to
4543  * allocate nr_pages quickly. Pages are added to page_list if page_list
4544  * is not NULL, otherwise it is assumed that the page_array is valid.
4545  *
4546  * For lists, nr_pages is the number of pages that should be allocated.
4547  *
4548  * For arrays, only NULL elements are populated with pages and nr_pages
4549  * is the maximum number of pages that will be stored in the array.
4550  *
4551  * Returns the number of pages on the list or array.
4552  */
4553 unsigned long alloc_pages_bulk_noprof(gfp_t gfp, int preferred_nid,
4554                         nodemask_t *nodemask, int nr_pages,
4555                         struct list_head *page_list,
4556                         struct page **page_array)
4557 {
4558         struct page *page;
4559         unsigned long __maybe_unused UP_flags;
4560         struct zone *zone;
4561         struct zoneref *z;
4562         struct per_cpu_pages *pcp;
4563         struct list_head *pcp_list;
4564         struct alloc_context ac;
4565         gfp_t alloc_gfp;
4566         unsigned int alloc_flags = ALLOC_WMARK_LOW;
4567         int nr_populated = 0, nr_account = 0;
4568
4569         /*
4570          * Skip populated array elements to determine if any pages need
4571          * to be allocated before disabling IRQs.
4572          */
4573         while (page_array && nr_populated < nr_pages && page_array[nr_populated])
4574                 nr_populated++;
4575
4576         /* No pages requested? */
4577         if (unlikely(nr_pages <= 0))
4578                 goto out;
4579
4580         /* Already populated array? */
4581         if (unlikely(page_array && nr_pages - nr_populated == 0))
4582                 goto out;
4583
4584         /* Bulk allocator does not support memcg accounting. */
4585         if (memcg_kmem_online() && (gfp & __GFP_ACCOUNT))
4586                 goto failed;
4587
4588         /* Use the single page allocator for one page. */
4589         if (nr_pages - nr_populated == 1)
4590                 goto failed;
4591
4592 #ifdef CONFIG_PAGE_OWNER
4593         /*
4594          * PAGE_OWNER may recurse into the allocator to allocate space to
4595          * save the stack with pagesets.lock held. Releasing/reacquiring
4596          * removes much of the performance benefit of bulk allocation so
4597          * force the caller to allocate one page at a time as it'll have
4598          * similar performance to added complexity to the bulk allocator.
4599          */
4600         if (static_branch_unlikely(&page_owner_inited))
4601                 goto failed;
4602 #endif
4603
4604         /* May set ALLOC_NOFRAGMENT, fragmentation will return 1 page. */
4605         gfp &= gfp_allowed_mask;
4606         alloc_gfp = gfp;
4607         if (!prepare_alloc_pages(gfp, 0, preferred_nid, nodemask, &ac, &alloc_gfp, &alloc_flags))
4608                 goto out;
4609         gfp = alloc_gfp;
4610
4611         /* Find an allowed local zone that meets the low watermark. */
4612         z = ac.preferred_zoneref;
4613         for_next_zone_zonelist_nodemask(zone, z, ac.highest_zoneidx, ac.nodemask) {
4614                 unsigned long mark;
4615
4616                 if (cpusets_enabled() && (alloc_flags & ALLOC_CPUSET) &&
4617                     !__cpuset_zone_allowed(zone, gfp)) {
4618                         continue;
4619                 }
4620
4621                 if (nr_online_nodes > 1 && zone != zonelist_zone(ac.preferred_zoneref) &&
4622                     zone_to_nid(zone) != zonelist_node_idx(ac.preferred_zoneref)) {
4623                         goto failed;
4624                 }
4625
4626                 cond_accept_memory(zone, 0);
4627 retry_this_zone:
4628                 mark = wmark_pages(zone, alloc_flags & ALLOC_WMARK_MASK) + nr_pages;
4629                 if (zone_watermark_fast(zone, 0,  mark,
4630                                 zonelist_zone_idx(ac.preferred_zoneref),
4631                                 alloc_flags, gfp)) {
4632                         break;
4633                 }
4634
4635                 if (cond_accept_memory(zone, 0))
4636                         goto retry_this_zone;
4637
4638                 /* Try again if zone has deferred pages */
4639                 if (deferred_pages_enabled()) {
4640                         if (_deferred_grow_zone(zone, 0))
4641                                 goto retry_this_zone;
4642                 }
4643         }
4644
4645         /*
4646          * If there are no allowed local zones that meets the watermarks then
4647          * try to allocate a single page and reclaim if necessary.
4648          */
4649         if (unlikely(!zone))
4650                 goto failed;
4651
4652         /* spin_trylock may fail due to a parallel drain or IRQ reentrancy. */
4653         pcp_trylock_prepare(UP_flags);
4654         pcp = pcp_spin_trylock(zone->per_cpu_pageset);
4655         if (!pcp)
4656                 goto failed_irq;
4657
4658         /* Attempt the batch allocation */
4659         pcp_list = &pcp->lists[order_to_pindex(ac.migratetype, 0)];
4660         while (nr_populated < nr_pages) {
4661
4662                 /* Skip existing pages */
4663                 if (page_array && page_array[nr_populated]) {
4664                         nr_populated++;
4665                         continue;
4666                 }
4667
4668                 page = __rmqueue_pcplist(zone, 0, ac.migratetype, alloc_flags,
4669                                                                 pcp, pcp_list);
4670                 if (unlikely(!page)) {
4671                         /* Try and allocate at least one page */
4672                         if (!nr_account) {
4673                                 pcp_spin_unlock(pcp);
4674                                 goto failed_irq;
4675                         }
4676                         break;
4677                 }
4678                 nr_account++;
4679
4680                 prep_new_page(page, 0, gfp, 0);
4681                 if (page_list)
4682                         list_add(&page->lru, page_list);
4683                 else
4684                         page_array[nr_populated] = page;
4685                 nr_populated++;
4686         }
4687
4688         pcp_spin_unlock(pcp);
4689         pcp_trylock_finish(UP_flags);
4690
4691         __count_zid_vm_events(PGALLOC, zone_idx(zone), nr_account);
4692         zone_statistics(zonelist_zone(ac.preferred_zoneref), zone, nr_account);
4693
4694 out:
4695         return nr_populated;
4696
4697 failed_irq:
4698         pcp_trylock_finish(UP_flags);
4699
4700 failed:
4701         page = __alloc_pages_noprof(gfp, 0, preferred_nid, nodemask);
4702         if (page) {
4703                 if (page_list)
4704                         list_add(&page->lru, page_list);
4705                 else
4706                         page_array[nr_populated] = page;
4707                 nr_populated++;
4708         }
4709
4710         goto out;
4711 }
4712 EXPORT_SYMBOL_GPL(alloc_pages_bulk_noprof);
4713
4714 /*
4715  * This is the 'heart' of the zoned buddy allocator.
4716  */
4717 struct page *__alloc_pages_noprof(gfp_t gfp, unsigned int order,
4718                                       int preferred_nid, nodemask_t *nodemask)
4719 {
4720         struct page *page;
4721         unsigned int alloc_flags = ALLOC_WMARK_LOW;
4722         gfp_t alloc_gfp; /* The gfp_t that was actually used for allocation */
4723         struct alloc_context ac = { };
4724
4725         /*
4726          * There are several places where we assume that the order value is sane
4727          * so bail out early if the request is out of bound.
4728          */
4729         if (WARN_ON_ONCE_GFP(order > MAX_PAGE_ORDER, gfp))
4730                 return NULL;
4731
4732         gfp &= gfp_allowed_mask;
4733         /*
4734          * Apply scoped allocation constraints. This is mainly about GFP_NOFS
4735          * resp. GFP_NOIO which has to be inherited for all allocation requests
4736          * from a particular context which has been marked by
4737          * memalloc_no{fs,io}_{save,restore}. And PF_MEMALLOC_PIN which ensures
4738          * movable zones are not used during allocation.
4739          */
4740         gfp = current_gfp_context(gfp);
4741         alloc_gfp = gfp;
4742         if (!prepare_alloc_pages(gfp, order, preferred_nid, nodemask, &ac,
4743                         &alloc_gfp, &alloc_flags))
4744                 return NULL;
4745
4746         /*
4747          * Forbid the first pass from falling back to types that fragment
4748          * memory until all local zones are considered.
4749          */
4750         alloc_flags |= alloc_flags_nofragment(zonelist_zone(ac.preferred_zoneref), gfp);
4751
4752         /* First allocation attempt */
4753         page = get_page_from_freelist(alloc_gfp, order, alloc_flags, &ac);
4754         if (likely(page))
4755                 goto out;
4756
4757         alloc_gfp = gfp;
4758         ac.spread_dirty_pages = false;
4759
4760         /*
4761          * Restore the original nodemask if it was potentially replaced with
4762          * &cpuset_current_mems_allowed to optimize the fast-path attempt.
4763          */
4764         ac.nodemask = nodemask;
4765
4766         page = __alloc_pages_slowpath(alloc_gfp, order, &ac);
4767
4768 out:
4769         if (memcg_kmem_online() && (gfp & __GFP_ACCOUNT) && page &&
4770             unlikely(__memcg_kmem_charge_page(page, gfp, order) != 0)) {
4771                 __free_pages(page, order);
4772                 page = NULL;
4773         }
4774
4775         trace_mm_page_alloc(page, order, alloc_gfp, ac.migratetype);
4776         kmsan_alloc_page(page, order, alloc_gfp);
4777
4778         return page;
4779 }
4780 EXPORT_SYMBOL(__alloc_pages_noprof);
4781
4782 struct folio *__folio_alloc_noprof(gfp_t gfp, unsigned int order, int preferred_nid,
4783                 nodemask_t *nodemask)
4784 {
4785         struct page *page = __alloc_pages_noprof(gfp | __GFP_COMP, order,
4786                                         preferred_nid, nodemask);
4787         return page_rmappable_folio(page);
4788 }
4789 EXPORT_SYMBOL(__folio_alloc_noprof);
4790
4791 /*
4792  * Common helper functions. Never use with __GFP_HIGHMEM because the returned
4793  * address cannot represent highmem pages. Use alloc_pages and then kmap if
4794  * you need to access high mem.
4795  */
4796 unsigned long get_free_pages_noprof(gfp_t gfp_mask, unsigned int order)
4797 {
4798         struct page *page;
4799
4800         page = alloc_pages_noprof(gfp_mask & ~__GFP_HIGHMEM, order);
4801         if (!page)
4802                 return 0;
4803         return (unsigned long) page_address(page);
4804 }
4805 EXPORT_SYMBOL(get_free_pages_noprof);
4806
4807 unsigned long get_zeroed_page_noprof(gfp_t gfp_mask)
4808 {
4809         return get_free_pages_noprof(gfp_mask | __GFP_ZERO, 0);
4810 }
4811 EXPORT_SYMBOL(get_zeroed_page_noprof);
4812
4813 /**
4814  * __free_pages - Free pages allocated with alloc_pages().
4815  * @page: The page pointer returned from alloc_pages().
4816  * @order: The order of the allocation.
4817  *
4818  * This function can free multi-page allocations that are not compound
4819  * pages.  It does not check that the @order passed in matches that of
4820  * the allocation, so it is easy to leak memory.  Freeing more memory
4821  * than was allocated will probably emit a warning.
4822  *
4823  * If the last reference to this page is speculative, it will be released
4824  * by put_page() which only frees the first page of a non-compound
4825  * allocation.  To prevent the remaining pages from being leaked, we free
4826  * the subsequent pages here.  If you want to use the page's reference
4827  * count to decide when to free the allocation, you should allocate a
4828  * compound page, and use put_page() instead of __free_pages().
4829  *
4830  * Context: May be called in interrupt context or while holding a normal
4831  * spinlock, but not in NMI context or while holding a raw spinlock.
4832  */
4833 void __free_pages(struct page *page, unsigned int order)
4834 {
4835         /* get PageHead before we drop reference */
4836         int head = PageHead(page);
4837         struct alloc_tag *tag = pgalloc_tag_get(page);
4838
4839         if (put_page_testzero(page))
4840                 free_unref_page(page, order);
4841         else if (!head) {
4842                 pgalloc_tag_sub_pages(tag, (1 << order) - 1);
4843                 while (order-- > 0)
4844                         free_unref_page(page + (1 << order), order);
4845         }
4846 }
4847 EXPORT_SYMBOL(__free_pages);
4848
4849 void free_pages(unsigned long addr, unsigned int order)
4850 {
4851         if (addr != 0) {
4852                 VM_BUG_ON(!virt_addr_valid((void *)addr));
4853                 __free_pages(virt_to_page((void *)addr), order);
4854         }
4855 }
4856
4857 EXPORT_SYMBOL(free_pages);
4858
4859 static void *make_alloc_exact(unsigned long addr, unsigned int order,
4860                 size_t size)
4861 {
4862         if (addr) {
4863                 unsigned long nr = DIV_ROUND_UP(size, PAGE_SIZE);
4864                 struct page *page = virt_to_page((void *)addr);
4865                 struct page *last = page + nr;
4866
4867                 split_page_owner(page, order, 0);
4868                 pgalloc_tag_split(page_folio(page), order, 0);
4869                 split_page_memcg(page, order, 0);
4870                 while (page < --last)
4871                         set_page_refcounted(last);
4872
4873                 last = page + (1UL << order);
4874                 for (page += nr; page < last; page++)
4875                         __free_pages_ok(page, 0, FPI_TO_TAIL);
4876         }
4877         return (void *)addr;
4878 }
4879
4880 /**
4881  * alloc_pages_exact - allocate an exact number physically-contiguous pages.
4882  * @size: the number of bytes to allocate
4883  * @gfp_mask: GFP flags for the allocation, must not contain __GFP_COMP
4884  *
4885  * This function is similar to alloc_pages(), except that it allocates the
4886  * minimum number of pages to satisfy the request.  alloc_pages() can only
4887  * allocate memory in power-of-two pages.
4888  *
4889  * This function is also limited by MAX_PAGE_ORDER.
4890  *
4891  * Memory allocated by this function must be released by free_pages_exact().
4892  *
4893  * Return: pointer to the allocated area or %NULL in case of error.
4894  */
4895 void *alloc_pages_exact_noprof(size_t size, gfp_t gfp_mask)
4896 {
4897         unsigned int order = get_order(size);
4898         unsigned long addr;
4899
4900         if (WARN_ON_ONCE(gfp_mask & (__GFP_COMP | __GFP_HIGHMEM)))
4901                 gfp_mask &= ~(__GFP_COMP | __GFP_HIGHMEM);
4902
4903         addr = get_free_pages_noprof(gfp_mask, order);
4904         return make_alloc_exact(addr, order, size);
4905 }
4906 EXPORT_SYMBOL(alloc_pages_exact_noprof);
4907
4908 /**
4909  * alloc_pages_exact_nid - allocate an exact number of physically-contiguous
4910  *                         pages on a node.
4911  * @nid: the preferred node ID where memory should be allocated
4912  * @size: the number of bytes to allocate
4913  * @gfp_mask: GFP flags for the allocation, must not contain __GFP_COMP
4914  *
4915  * Like alloc_pages_exact(), but try to allocate on node nid first before falling
4916  * back.
4917  *
4918  * Return: pointer to the allocated area or %NULL in case of error.
4919  */
4920 void * __meminit alloc_pages_exact_nid_noprof(int nid, size_t size, gfp_t gfp_mask)
4921 {
4922         unsigned int order = get_order(size);
4923         struct page *p;
4924
4925         if (WARN_ON_ONCE(gfp_mask & (__GFP_COMP | __GFP_HIGHMEM)))
4926                 gfp_mask &= ~(__GFP_COMP | __GFP_HIGHMEM);
4927
4928         p = alloc_pages_node_noprof(nid, gfp_mask, order);
4929         if (!p)
4930                 return NULL;
4931         return make_alloc_exact((unsigned long)page_address(p), order, size);
4932 }
4933
4934 /**
4935  * free_pages_exact - release memory allocated via alloc_pages_exact()
4936  * @virt: the value returned by alloc_pages_exact.
4937  * @size: size of allocation, same value as passed to alloc_pages_exact().
4938  *
4939  * Release the memory allocated by a previous call to alloc_pages_exact.
4940  */
4941 void free_pages_exact(void *virt, size_t size)
4942 {
4943         unsigned long addr = (unsigned long)virt;
4944         unsigned long end = addr + PAGE_ALIGN(size);
4945
4946         while (addr < end) {
4947                 free_page(addr);
4948                 addr += PAGE_SIZE;
4949         }
4950 }
4951 EXPORT_SYMBOL(free_pages_exact);
4952
4953 /**
4954  * nr_free_zone_pages - count number of pages beyond high watermark
4955  * @offset: The zone index of the highest zone
4956  *
4957  * nr_free_zone_pages() counts the number of pages which are beyond the
4958  * high watermark within all zones at or below a given zone index.  For each
4959  * zone, the number of pages is calculated as:
4960  *
4961  *     nr_free_zone_pages = managed_pages - high_pages
4962  *
4963  * Return: number of pages beyond high watermark.
4964  */
4965 static unsigned long nr_free_zone_pages(int offset)
4966 {
4967         struct zoneref *z;
4968         struct zone *zone;
4969
4970         /* Just pick one node, since fallback list is circular */
4971         unsigned long sum = 0;
4972
4973         struct zonelist *zonelist = node_zonelist(numa_node_id(), GFP_KERNEL);
4974
4975         for_each_zone_zonelist(zone, z, zonelist, offset) {
4976                 unsigned long size = zone_managed_pages(zone);
4977                 unsigned long high = high_wmark_pages(zone);
4978                 if (size > high)
4979                         sum += size - high;
4980         }
4981
4982         return sum;
4983 }
4984
4985 /**
4986  * nr_free_buffer_pages - count number of pages beyond high watermark
4987  *
4988  * nr_free_buffer_pages() counts the number of pages which are beyond the high
4989  * watermark within ZONE_DMA and ZONE_NORMAL.
4990  *
4991  * Return: number of pages beyond high watermark within ZONE_DMA and
4992  * ZONE_NORMAL.
4993  */
4994 unsigned long nr_free_buffer_pages(void)
4995 {
4996         return nr_free_zone_pages(gfp_zone(GFP_USER));
4997 }
4998 EXPORT_SYMBOL_GPL(nr_free_buffer_pages);
4999
5000 static void zoneref_set_zone(struct zone *zone, struct zoneref *zoneref)
5001 {
5002         zoneref->zone = zone;
5003         zoneref->zone_idx = zone_idx(zone);
5004 }
5005
5006 /*
5007  * Builds allocation fallback zone lists.
5008  *
5009  * Add all populated zones of a node to the zonelist.
5010  */
5011 static int build_zonerefs_node(pg_data_t *pgdat, struct zoneref *zonerefs)
5012 {
5013         struct zone *zone;
5014         enum zone_type zone_type = MAX_NR_ZONES;
5015         int nr_zones = 0;
5016
5017         do {
5018                 zone_type--;
5019                 zone = pgdat->node_zones + zone_type;
5020                 if (populated_zone(zone)) {
5021                         zoneref_set_zone(zone, &zonerefs[nr_zones++]);
5022                         check_highest_zone(zone_type);
5023                 }
5024         } while (zone_type);
5025
5026         return nr_zones;
5027 }
5028
5029 #ifdef CONFIG_NUMA
5030
5031 static int __parse_numa_zonelist_order(char *s)
5032 {
5033         /*
5034          * We used to support different zonelists modes but they turned
5035          * out to be just not useful. Let's keep the warning in place
5036          * if somebody still use the cmd line parameter so that we do
5037          * not fail it silently
5038          */
5039         if (!(*s == 'd' || *s == 'D' || *s == 'n' || *s == 'N')) {
5040                 pr_warn("Ignoring unsupported numa_zonelist_order value:  %s\n", s);
5041                 return -EINVAL;
5042         }
5043         return 0;
5044 }
5045
5046 static char numa_zonelist_order[] = "Node";
5047 #define NUMA_ZONELIST_ORDER_LEN 16
5048 /*
5049  * sysctl handler for numa_zonelist_order
5050  */
5051 static int numa_zonelist_order_handler(const struct ctl_table *table, int write,
5052                 void *buffer, size_t *length, loff_t *ppos)
5053 {
5054         if (write)
5055                 return __parse_numa_zonelist_order(buffer);
5056         return proc_dostring(table, write, buffer, length, ppos);
5057 }
5058
5059 static int node_load[MAX_NUMNODES];
5060
5061 /**
5062  * find_next_best_node - find the next node that should appear in a given node's fallback list
5063  * @node: node whose fallback list we're appending
5064  * @used_node_mask: nodemask_t of already used nodes
5065  *
5066  * We use a number of factors to determine which is the next node that should
5067  * appear on a given node's fallback list.  The node should not have appeared
5068  * already in @node's fallback list, and it should be the next closest node
5069  * according to the distance array (which contains arbitrary distance values
5070  * from each node to each node in the system), and should also prefer nodes
5071  * with no CPUs, since presumably they'll have very little allocation pressure
5072  * on them otherwise.
5073  *
5074  * Return: node id of the found node or %NUMA_NO_NODE if no node is found.
5075  */
5076 int find_next_best_node(int node, nodemask_t *used_node_mask)
5077 {
5078         int n, val;
5079         int min_val = INT_MAX;
5080         int best_node = NUMA_NO_NODE;
5081
5082         /*
5083          * Use the local node if we haven't already, but for memoryless local
5084          * node, we should skip it and fall back to other nodes.
5085          */
5086         if (!node_isset(node, *used_node_mask) && node_state(node, N_MEMORY)) {
5087                 node_set(node, *used_node_mask);
5088                 return node;
5089         }
5090
5091         for_each_node_state(n, N_MEMORY) {
5092
5093                 /* Don't want a node to appear more than once */
5094                 if (node_isset(n, *used_node_mask))
5095                         continue;
5096
5097                 /* Use the distance array to find the distance */
5098                 val = node_distance(node, n);
5099
5100                 /* Penalize nodes under us ("prefer the next node") */
5101                 val += (n < node);
5102
5103                 /* Give preference to headless and unused nodes */
5104                 if (!cpumask_empty(cpumask_of_node(n)))
5105                         val += PENALTY_FOR_NODE_WITH_CPUS;
5106
5107                 /* Slight preference for less loaded node */
5108                 val *= MAX_NUMNODES;
5109                 val += node_load[n];
5110
5111                 if (val < min_val) {
5112                         min_val = val;
5113                         best_node = n;
5114                 }
5115         }
5116
5117         if (best_node >= 0)
5118                 node_set(best_node, *used_node_mask);
5119
5120         return best_node;
5121 }
5122
5123
5124 /*
5125  * Build zonelists ordered by node and zones within node.
5126  * This results in maximum locality--normal zone overflows into local
5127  * DMA zone, if any--but risks exhausting DMA zone.
5128  */
5129 static void build_zonelists_in_node_order(pg_data_t *pgdat, int *node_order,
5130                 unsigned nr_nodes)
5131 {
5132         struct zoneref *zonerefs;
5133         int i;
5134
5135         zonerefs = pgdat->node_zonelists[ZONELIST_FALLBACK]._zonerefs;
5136
5137         for (i = 0; i < nr_nodes; i++) {
5138                 int nr_zones;
5139
5140                 pg_data_t *node = NODE_DATA(node_order[i]);
5141
5142                 nr_zones = build_zonerefs_node(node, zonerefs);
5143                 zonerefs += nr_zones;
5144         }
5145         zonerefs->zone = NULL;
5146         zonerefs->zone_idx = 0;
5147 }
5148
5149 /*
5150  * Build __GFP_THISNODE zonelists
5151  */
5152 static void build_thisnode_zonelists(pg_data_t *pgdat)
5153 {
5154         struct zoneref *zonerefs;
5155         int nr_zones;
5156
5157         zonerefs = pgdat->node_zonelists[ZONELIST_NOFALLBACK]._zonerefs;
5158         nr_zones = build_zonerefs_node(pgdat, zonerefs);
5159         zonerefs += nr_zones;
5160         zonerefs->zone = NULL;
5161         zonerefs->zone_idx = 0;
5162 }
5163
5164 /*
5165  * Build zonelists ordered by zone and nodes within zones.
5166  * This results in conserving DMA zone[s] until all Normal memory is
5167  * exhausted, but results in overflowing to remote node while memory
5168  * may still exist in local DMA zone.
5169  */
5170
5171 static void build_zonelists(pg_data_t *pgdat)
5172 {
5173         static int node_order[MAX_NUMNODES];
5174         int node, nr_nodes = 0;
5175         nodemask_t used_mask = NODE_MASK_NONE;
5176         int local_node, prev_node;
5177
5178         /* NUMA-aware ordering of nodes */
5179         local_node = pgdat->node_id;
5180         prev_node = local_node;
5181
5182         memset(node_order, 0, sizeof(node_order));
5183         while ((node = find_next_best_node(local_node, &used_mask)) >= 0) {
5184                 /*
5185                  * We don't want to pressure a particular node.
5186                  * So adding penalty to the first node in same
5187                  * distance group to make it round-robin.
5188                  */
5189                 if (node_distance(local_node, node) !=
5190                     node_distance(local_node, prev_node))
5191                         node_load[node] += 1;
5192
5193                 node_order[nr_nodes++] = node;
5194                 prev_node = node;
5195         }
5196
5197         build_zonelists_in_node_order(pgdat, node_order, nr_nodes);
5198         build_thisnode_zonelists(pgdat);
5199         pr_info("Fallback order for Node %d: ", local_node);
5200         for (node = 0; node < nr_nodes; node++)
5201                 pr_cont("%d ", node_order[node]);
5202         pr_cont("\n");
5203 }
5204
5205 #ifdef CONFIG_HAVE_MEMORYLESS_NODES
5206 /*
5207  * Return node id of node used for "local" allocations.
5208  * I.e., first node id of first zone in arg node's generic zonelist.
5209  * Used for initializing percpu 'numa_mem', which is used primarily
5210  * for kernel allocations, so use GFP_KERNEL flags to locate zonelist.
5211  */
5212 int local_memory_node(int node)
5213 {
5214         struct zoneref *z;
5215
5216         z = first_zones_zonelist(node_zonelist(node, GFP_KERNEL),
5217                                    gfp_zone(GFP_KERNEL),
5218                                    NULL);
5219         return zonelist_node_idx(z);
5220 }
5221 #endif
5222
5223 static void setup_min_unmapped_ratio(void);
5224 static void setup_min_slab_ratio(void);
5225 #else   /* CONFIG_NUMA */
5226
5227 static void build_zonelists(pg_data_t *pgdat)
5228 {
5229         struct zoneref *zonerefs;
5230         int nr_zones;
5231
5232         zonerefs = pgdat->node_zonelists[ZONELIST_FALLBACK]._zonerefs;
5233         nr_zones = build_zonerefs_node(pgdat, zonerefs);
5234         zonerefs += nr_zones;
5235
5236         zonerefs->zone = NULL;
5237         zonerefs->zone_idx = 0;
5238 }
5239
5240 #endif  /* CONFIG_NUMA */
5241
5242 /*
5243  * Boot pageset table. One per cpu which is going to be used for all
5244  * zones and all nodes. The parameters will be set in such a way
5245  * that an item put on a list will immediately be handed over to
5246  * the buddy list. This is safe since pageset manipulation is done
5247  * with interrupts disabled.
5248  *
5249  * The boot_pagesets must be kept even after bootup is complete for
5250  * unused processors and/or zones. They do play a role for bootstrapping
5251  * hotplugged processors.
5252  *
5253  * zoneinfo_show() and maybe other functions do
5254  * not check if the processor is online before following the pageset pointer.
5255  * Other parts of the kernel may not check if the zone is available.
5256  */
5257 static void per_cpu_pages_init(struct per_cpu_pages *pcp, struct per_cpu_zonestat *pzstats);
5258 /* These effectively disable the pcplists in the boot pageset completely */
5259 #define BOOT_PAGESET_HIGH       0
5260 #define BOOT_PAGESET_BATCH      1
5261 static DEFINE_PER_CPU(struct per_cpu_pages, boot_pageset);
5262 static DEFINE_PER_CPU(struct per_cpu_zonestat, boot_zonestats);
5263
5264 static void __build_all_zonelists(void *data)
5265 {
5266         int nid;
5267         int __maybe_unused cpu;
5268         pg_data_t *self = data;
5269         unsigned long flags;
5270
5271         /*
5272          * The zonelist_update_seq must be acquired with irqsave because the
5273          * reader can be invoked from IRQ with GFP_ATOMIC.
5274          */
5275         write_seqlock_irqsave(&zonelist_update_seq, flags);
5276         /*
5277          * Also disable synchronous printk() to prevent any printk() from
5278          * trying to hold port->lock, for
5279          * tty_insert_flip_string_and_push_buffer() on other CPU might be
5280          * calling kmalloc(GFP_ATOMIC | __GFP_NOWARN) with port->lock held.
5281          */
5282         printk_deferred_enter();
5283
5284 #ifdef CONFIG_NUMA
5285         memset(node_load, 0, sizeof(node_load));
5286 #endif
5287
5288         /*
5289          * This node is hotadded and no memory is yet present.   So just
5290          * building zonelists is fine - no need to touch other nodes.
5291          */
5292         if (self && !node_online(self->node_id)) {
5293                 build_zonelists(self);
5294         } else {
5295                 /*
5296                  * All possible nodes have pgdat preallocated
5297                  * in free_area_init
5298                  */
5299                 for_each_node(nid) {
5300                         pg_data_t *pgdat = NODE_DATA(nid);
5301
5302                         build_zonelists(pgdat);
5303                 }
5304
5305 #ifdef CONFIG_HAVE_MEMORYLESS_NODES
5306                 /*
5307                  * We now know the "local memory node" for each node--
5308                  * i.e., the node of the first zone in the generic zonelist.
5309                  * Set up numa_mem percpu variable for on-line cpus.  During
5310                  * boot, only the boot cpu should be on-line;  we'll init the
5311                  * secondary cpus' numa_mem as they come on-line.  During
5312                  * node/memory hotplug, we'll fixup all on-line cpus.
5313                  */
5314                 for_each_online_cpu(cpu)
5315                         set_cpu_numa_mem(cpu, local_memory_node(cpu_to_node(cpu)));
5316 #endif
5317         }
5318
5319         printk_deferred_exit();
5320         write_sequnlock_irqrestore(&zonelist_update_seq, flags);
5321 }
5322
5323 static noinline void __init
5324 build_all_zonelists_init(void)
5325 {
5326         int cpu;
5327
5328         __build_all_zonelists(NULL);
5329
5330         /*
5331          * Initialize the boot_pagesets that are going to be used
5332          * for bootstrapping processors. The real pagesets for
5333          * each zone will be allocated later when the per cpu
5334          * allocator is available.
5335          *
5336          * boot_pagesets are used also for bootstrapping offline
5337          * cpus if the system is already booted because the pagesets
5338          * are needed to initialize allocators on a specific cpu too.
5339          * F.e. the percpu allocator needs the page allocator which
5340          * needs the percpu allocator in order to allocate its pagesets
5341          * (a chicken-egg dilemma).
5342          */
5343         for_each_possible_cpu(cpu)
5344                 per_cpu_pages_init(&per_cpu(boot_pageset, cpu), &per_cpu(boot_zonestats, cpu));
5345
5346         mminit_verify_zonelist();
5347         cpuset_init_current_mems_allowed();
5348 }
5349
5350 /*
5351  * unless system_state == SYSTEM_BOOTING.
5352  *
5353  * __ref due to call of __init annotated helper build_all_zonelists_init
5354  * [protected by SYSTEM_BOOTING].
5355  */
5356 void __ref build_all_zonelists(pg_data_t *pgdat)
5357 {
5358         unsigned long vm_total_pages;
5359
5360         if (system_state == SYSTEM_BOOTING) {
5361                 build_all_zonelists_init();
5362         } else {
5363                 __build_all_zonelists(pgdat);
5364                 /* cpuset refresh routine should be here */
5365         }
5366         /* Get the number of free pages beyond high watermark in all zones. */
5367         vm_total_pages = nr_free_zone_pages(gfp_zone(GFP_HIGHUSER_MOVABLE));
5368         /*
5369          * Disable grouping by mobility if the number of pages in the
5370          * system is too low to allow the mechanism to work. It would be
5371          * more accurate, but expensive to check per-zone. This check is
5372          * made on memory-hotadd so a system can start with mobility
5373          * disabled and enable it later
5374          */
5375         if (vm_total_pages < (pageblock_nr_pages * MIGRATE_TYPES))
5376                 page_group_by_mobility_disabled = 1;
5377         else
5378                 page_group_by_mobility_disabled = 0;
5379
5380         pr_info("Built %u zonelists, mobility grouping %s.  Total pages: %ld\n",
5381                 nr_online_nodes,
5382                 str_off_on(page_group_by_mobility_disabled),
5383                 vm_total_pages);
5384 #ifdef CONFIG_NUMA
5385         pr_info("Policy zone: %s\n", zone_names[policy_zone]);
5386 #endif
5387 }
5388
5389 static int zone_batchsize(struct zone *zone)
5390 {
5391 #ifdef CONFIG_MMU
5392         int batch;
5393
5394         /*
5395          * The number of pages to batch allocate is either ~0.1%
5396          * of the zone or 1MB, whichever is smaller. The batch
5397          * size is striking a balance between allocation latency
5398          * and zone lock contention.
5399          */
5400         batch = min(zone_managed_pages(zone) >> 10, SZ_1M / PAGE_SIZE);
5401         batch /= 4;             /* We effectively *= 4 below */
5402         if (batch < 1)
5403                 batch = 1;
5404
5405         /*
5406          * Clamp the batch to a 2^n - 1 value. Having a power
5407          * of 2 value was found to be more likely to have
5408          * suboptimal cache aliasing properties in some cases.
5409          *
5410          * For example if 2 tasks are alternately allocating
5411          * batches of pages, one task can end up with a lot
5412          * of pages of one half of the possible page colors
5413          * and the other with pages of the other colors.
5414          */
5415         batch = rounddown_pow_of_two(batch + batch/2) - 1;
5416
5417         return batch;
5418
5419 #else
5420         /* The deferral and batching of frees should be suppressed under NOMMU
5421          * conditions.
5422          *
5423          * The problem is that NOMMU needs to be able to allocate large chunks
5424          * of contiguous memory as there's no hardware page translation to
5425          * assemble apparent contiguous memory from discontiguous pages.
5426          *
5427          * Queueing large contiguous runs of pages for batching, however,
5428          * causes the pages to actually be freed in smaller chunks.  As there
5429          * can be a significant delay between the individual batches being
5430          * recycled, this leads to the once large chunks of space being
5431          * fragmented and becoming unavailable for high-order allocations.
5432          */
5433         return 0;
5434 #endif
5435 }
5436
5437 static int percpu_pagelist_high_fraction;
5438 static int zone_highsize(struct zone *zone, int batch, int cpu_online,
5439                          int high_fraction)
5440 {
5441 #ifdef CONFIG_MMU
5442         int high;
5443         int nr_split_cpus;
5444         unsigned long total_pages;
5445
5446         if (!high_fraction) {
5447                 /*
5448                  * By default, the high value of the pcp is based on the zone
5449                  * low watermark so that if they are full then background
5450                  * reclaim will not be started prematurely.
5451                  */
5452                 total_pages = low_wmark_pages(zone);
5453         } else {
5454                 /*
5455                  * If percpu_pagelist_high_fraction is configured, the high
5456                  * value is based on a fraction of the managed pages in the
5457                  * zone.
5458                  */
5459                 total_pages = zone_managed_pages(zone) / high_fraction;
5460         }
5461
5462         /*
5463          * Split the high value across all online CPUs local to the zone. Note
5464          * that early in boot that CPUs may not be online yet and that during
5465          * CPU hotplug that the cpumask is not yet updated when a CPU is being
5466          * onlined. For memory nodes that have no CPUs, split the high value
5467          * across all online CPUs to mitigate the risk that reclaim is triggered
5468          * prematurely due to pages stored on pcp lists.
5469          */
5470         nr_split_cpus = cpumask_weight(cpumask_of_node(zone_to_nid(zone))) + cpu_online;
5471         if (!nr_split_cpus)
5472                 nr_split_cpus = num_online_cpus();
5473         high = total_pages / nr_split_cpus;
5474
5475         /*
5476          * Ensure high is at least batch*4. The multiple is based on the
5477          * historical relationship between high and batch.
5478          */
5479         high = max(high, batch << 2);
5480
5481         return high;
5482 #else
5483         return 0;
5484 #endif
5485 }
5486
5487 /*
5488  * pcp->high and pcp->batch values are related and generally batch is lower
5489  * than high. They are also related to pcp->count such that count is lower
5490  * than high, and as soon as it reaches high, the pcplist is flushed.
5491  *
5492  * However, guaranteeing these relations at all times would require e.g. write
5493  * barriers here but also careful usage of read barriers at the read side, and
5494  * thus be prone to error and bad for performance. Thus the update only prevents
5495  * store tearing. Any new users of pcp->batch, pcp->high_min and pcp->high_max
5496  * should ensure they can cope with those fields changing asynchronously, and
5497  * fully trust only the pcp->count field on the local CPU with interrupts
5498  * disabled.
5499  *
5500  * mutex_is_locked(&pcp_batch_high_lock) required when calling this function
5501  * outside of boot time (or some other assurance that no concurrent updaters
5502  * exist).
5503  */
5504 static void pageset_update(struct per_cpu_pages *pcp, unsigned long high_min,
5505                            unsigned long high_max, unsigned long batch)
5506 {
5507         WRITE_ONCE(pcp->batch, batch);
5508         WRITE_ONCE(pcp->high_min, high_min);
5509         WRITE_ONCE(pcp->high_max, high_max);
5510 }
5511
5512 static void per_cpu_pages_init(struct per_cpu_pages *pcp, struct per_cpu_zonestat *pzstats)
5513 {
5514         int pindex;
5515
5516         memset(pcp, 0, sizeof(*pcp));
5517         memset(pzstats, 0, sizeof(*pzstats));
5518
5519         spin_lock_init(&pcp->lock);
5520         for (pindex = 0; pindex < NR_PCP_LISTS; pindex++)
5521                 INIT_LIST_HEAD(&pcp->lists[pindex]);
5522
5523         /*
5524          * Set batch and high values safe for a boot pageset. A true percpu
5525          * pageset's initialization will update them subsequently. Here we don't
5526          * need to be as careful as pageset_update() as nobody can access the
5527          * pageset yet.
5528          */
5529         pcp->high_min = BOOT_PAGESET_HIGH;
5530         pcp->high_max = BOOT_PAGESET_HIGH;
5531         pcp->batch = BOOT_PAGESET_BATCH;
5532         pcp->free_count = 0;
5533 }
5534
5535 static void __zone_set_pageset_high_and_batch(struct zone *zone, unsigned long high_min,
5536                                               unsigned long high_max, unsigned long batch)
5537 {
5538         struct per_cpu_pages *pcp;
5539         int cpu;
5540
5541         for_each_possible_cpu(cpu) {
5542                 pcp = per_cpu_ptr(zone->per_cpu_pageset, cpu);
5543                 pageset_update(pcp, high_min, high_max, batch);
5544         }
5545 }
5546
5547 /*
5548  * Calculate and set new high and batch values for all per-cpu pagesets of a
5549  * zone based on the zone's size.
5550  */
5551 static void zone_set_pageset_high_and_batch(struct zone *zone, int cpu_online)
5552 {
5553         int new_high_min, new_high_max, new_batch;
5554
5555         new_batch = max(1, zone_batchsize(zone));
5556         if (percpu_pagelist_high_fraction) {
5557                 new_high_min = zone_highsize(zone, new_batch, cpu_online,
5558                                              percpu_pagelist_high_fraction);
5559                 /*
5560                  * PCP high is tuned manually, disable auto-tuning via
5561                  * setting high_min and high_max to the manual value.
5562                  */
5563                 new_high_max = new_high_min;
5564         } else {
5565                 new_high_min = zone_highsize(zone, new_batch, cpu_online, 0);
5566                 new_high_max = zone_highsize(zone, new_batch, cpu_online,
5567                                              MIN_PERCPU_PAGELIST_HIGH_FRACTION);
5568         }
5569
5570         if (zone->pageset_high_min == new_high_min &&
5571             zone->pageset_high_max == new_high_max &&
5572             zone->pageset_batch == new_batch)
5573                 return;
5574
5575         zone->pageset_high_min = new_high_min;
5576         zone->pageset_high_max = new_high_max;
5577         zone->pageset_batch = new_batch;
5578
5579         __zone_set_pageset_high_and_batch(zone, new_high_min, new_high_max,
5580                                           new_batch);
5581 }
5582
5583 void __meminit setup_zone_pageset(struct zone *zone)
5584 {
5585         int cpu;
5586
5587         /* Size may be 0 on !SMP && !NUMA */
5588         if (sizeof(struct per_cpu_zonestat) > 0)
5589                 zone->per_cpu_zonestats = alloc_percpu(struct per_cpu_zonestat);
5590
5591         zone->per_cpu_pageset = alloc_percpu(struct per_cpu_pages);
5592         for_each_possible_cpu(cpu) {
5593                 struct per_cpu_pages *pcp;
5594                 struct per_cpu_zonestat *pzstats;
5595
5596                 pcp = per_cpu_ptr(zone->per_cpu_pageset, cpu);
5597                 pzstats = per_cpu_ptr(zone->per_cpu_zonestats, cpu);
5598                 per_cpu_pages_init(pcp, pzstats);
5599         }
5600
5601         zone_set_pageset_high_and_batch(zone, 0);
5602 }
5603
5604 /*
5605  * The zone indicated has a new number of managed_pages; batch sizes and percpu
5606  * page high values need to be recalculated.
5607  */
5608 static void zone_pcp_update(struct zone *zone, int cpu_online)
5609 {
5610         mutex_lock(&pcp_batch_high_lock);
5611         zone_set_pageset_high_and_batch(zone, cpu_online);
5612         mutex_unlock(&pcp_batch_high_lock);
5613 }
5614
5615 static void zone_pcp_update_cacheinfo(struct zone *zone, unsigned int cpu)
5616 {
5617         struct per_cpu_pages *pcp;
5618         struct cpu_cacheinfo *cci;
5619
5620         pcp = per_cpu_ptr(zone->per_cpu_pageset, cpu);
5621         cci = get_cpu_cacheinfo(cpu);
5622         /*
5623          * If data cache slice of CPU is large enough, "pcp->batch"
5624          * pages can be preserved in PCP before draining PCP for
5625          * consecutive high-order pages freeing without allocation.
5626          * This can reduce zone lock contention without hurting
5627          * cache-hot pages sharing.
5628          */
5629         spin_lock(&pcp->lock);
5630         if ((cci->per_cpu_data_slice_size >> PAGE_SHIFT) > 3 * pcp->batch)
5631                 pcp->flags |= PCPF_FREE_HIGH_BATCH;
5632         else
5633                 pcp->flags &= ~PCPF_FREE_HIGH_BATCH;
5634         spin_unlock(&pcp->lock);
5635 }
5636
5637 void setup_pcp_cacheinfo(unsigned int cpu)
5638 {
5639         struct zone *zone;
5640
5641         for_each_populated_zone(zone)
5642                 zone_pcp_update_cacheinfo(zone, cpu);
5643 }
5644
5645 /*
5646  * Allocate per cpu pagesets and initialize them.
5647  * Before this call only boot pagesets were available.
5648  */
5649 void __init setup_per_cpu_pageset(void)
5650 {
5651         struct pglist_data *pgdat;
5652         struct zone *zone;
5653         int __maybe_unused cpu;
5654
5655         for_each_populated_zone(zone)
5656                 setup_zone_pageset(zone);
5657
5658 #ifdef CONFIG_NUMA
5659         /*
5660          * Unpopulated zones continue using the boot pagesets.
5661          * The numa stats for these pagesets need to be reset.
5662          * Otherwise, they will end up skewing the stats of
5663          * the nodes these zones are associated with.
5664          */
5665         for_each_possible_cpu(cpu) {
5666                 struct per_cpu_zonestat *pzstats = &per_cpu(boot_zonestats, cpu);
5667                 memset(pzstats->vm_numa_event, 0,
5668                        sizeof(pzstats->vm_numa_event));
5669         }
5670 #endif
5671
5672         for_each_online_pgdat(pgdat)
5673                 pgdat->per_cpu_nodestats =
5674                         alloc_percpu(struct per_cpu_nodestat);
5675 }
5676
5677 __meminit void zone_pcp_init(struct zone *zone)
5678 {
5679         /*
5680          * per cpu subsystem is not up at this point. The following code
5681          * relies on the ability of the linker to provide the
5682          * offset of a (static) per cpu variable into the per cpu area.
5683          */
5684         zone->per_cpu_pageset = &boot_pageset;
5685         zone->per_cpu_zonestats = &boot_zonestats;
5686         zone->pageset_high_min = BOOT_PAGESET_HIGH;
5687         zone->pageset_high_max = BOOT_PAGESET_HIGH;
5688         zone->pageset_batch = BOOT_PAGESET_BATCH;
5689
5690         if (populated_zone(zone))
5691                 pr_debug("  %s zone: %lu pages, LIFO batch:%u\n", zone->name,
5692                          zone->present_pages, zone_batchsize(zone));
5693 }
5694
5695 void adjust_managed_page_count(struct page *page, long count)
5696 {
5697         atomic_long_add(count, &page_zone(page)->managed_pages);
5698         totalram_pages_add(count);
5699 }
5700 EXPORT_SYMBOL(adjust_managed_page_count);
5701
5702 unsigned long free_reserved_area(void *start, void *end, int poison, const char *s)
5703 {
5704         void *pos;
5705         unsigned long pages = 0;
5706
5707         start = (void *)PAGE_ALIGN((unsigned long)start);
5708         end = (void *)((unsigned long)end & PAGE_MASK);
5709         for (pos = start; pos < end; pos += PAGE_SIZE, pages++) {
5710                 struct page *page = virt_to_page(pos);
5711                 void *direct_map_addr;
5712
5713                 /*
5714                  * 'direct_map_addr' might be different from 'pos'
5715                  * because some architectures' virt_to_page()
5716                  * work with aliases.  Getting the direct map
5717                  * address ensures that we get a _writeable_
5718                  * alias for the memset().
5719                  */
5720                 direct_map_addr = page_address(page);
5721                 /*
5722                  * Perform a kasan-unchecked memset() since this memory
5723                  * has not been initialized.
5724                  */
5725                 direct_map_addr = kasan_reset_tag(direct_map_addr);
5726                 if ((unsigned int)poison <= 0xFF)
5727                         memset(direct_map_addr, poison, PAGE_SIZE);
5728
5729                 free_reserved_page(page);
5730         }
5731
5732         if (pages && s)
5733                 pr_info("Freeing %s memory: %ldK\n", s, K(pages));
5734
5735         return pages;
5736 }
5737
5738 void free_reserved_page(struct page *page)
5739 {
5740         clear_page_tag_ref(page);
5741         ClearPageReserved(page);
5742         init_page_count(page);
5743         __free_page(page);
5744         adjust_managed_page_count(page, 1);
5745 }
5746 EXPORT_SYMBOL(free_reserved_page);
5747
5748 static int page_alloc_cpu_dead(unsigned int cpu)
5749 {
5750         struct zone *zone;
5751
5752         lru_add_drain_cpu(cpu);
5753         mlock_drain_remote(cpu);
5754         drain_pages(cpu);
5755
5756         /*
5757          * Spill the event counters of the dead processor
5758          * into the current processors event counters.
5759          * This artificially elevates the count of the current
5760          * processor.
5761          */
5762         vm_events_fold_cpu(cpu);
5763
5764         /*
5765          * Zero the differential counters of the dead processor
5766          * so that the vm statistics are consistent.
5767          *
5768          * This is only okay since the processor is dead and cannot
5769          * race with what we are doing.
5770          */
5771         cpu_vm_stats_fold(cpu);
5772
5773         for_each_populated_zone(zone)
5774                 zone_pcp_update(zone, 0);
5775
5776         return 0;
5777 }
5778
5779 static int page_alloc_cpu_online(unsigned int cpu)
5780 {
5781         struct zone *zone;
5782
5783         for_each_populated_zone(zone)
5784                 zone_pcp_update(zone, 1);
5785         return 0;
5786 }
5787
5788 void __init page_alloc_init_cpuhp(void)
5789 {
5790         int ret;
5791
5792         ret = cpuhp_setup_state_nocalls(CPUHP_PAGE_ALLOC,
5793                                         "mm/page_alloc:pcp",
5794                                         page_alloc_cpu_online,
5795                                         page_alloc_cpu_dead);
5796         WARN_ON(ret < 0);
5797 }
5798
5799 /*
5800  * calculate_totalreserve_pages - called when sysctl_lowmem_reserve_ratio
5801  *      or min_free_kbytes changes.
5802  */
5803 static void calculate_totalreserve_pages(void)
5804 {
5805         struct pglist_data *pgdat;
5806         unsigned long reserve_pages = 0;
5807         enum zone_type i, j;
5808
5809         for_each_online_pgdat(pgdat) {
5810
5811                 pgdat->totalreserve_pages = 0;
5812
5813                 for (i = 0; i < MAX_NR_ZONES; i++) {
5814                         struct zone *zone = pgdat->node_zones + i;
5815                         long max = 0;
5816                         unsigned long managed_pages = zone_managed_pages(zone);
5817
5818                         /* Find valid and maximum lowmem_reserve in the zone */
5819                         for (j = i; j < MAX_NR_ZONES; j++) {
5820                                 if (zone->lowmem_reserve[j] > max)
5821                                         max = zone->lowmem_reserve[j];
5822                         }
5823
5824                         /* we treat the high watermark as reserved pages. */
5825                         max += high_wmark_pages(zone);
5826
5827                         if (max > managed_pages)
5828                                 max = managed_pages;
5829
5830                         pgdat->totalreserve_pages += max;
5831
5832                         reserve_pages += max;
5833                 }
5834         }
5835         totalreserve_pages = reserve_pages;
5836 }
5837
5838 /*
5839  * setup_per_zone_lowmem_reserve - called whenever
5840  *      sysctl_lowmem_reserve_ratio changes.  Ensures that each zone
5841  *      has a correct pages reserved value, so an adequate number of
5842  *      pages are left in the zone after a successful __alloc_pages().
5843  */
5844 static void setup_per_zone_lowmem_reserve(void)
5845 {
5846         struct pglist_data *pgdat;
5847         enum zone_type i, j;
5848
5849         for_each_online_pgdat(pgdat) {
5850                 for (i = 0; i < MAX_NR_ZONES - 1; i++) {
5851                         struct zone *zone = &pgdat->node_zones[i];
5852                         int ratio = sysctl_lowmem_reserve_ratio[i];
5853                         bool clear = !ratio || !zone_managed_pages(zone);
5854                         unsigned long managed_pages = 0;
5855
5856                         for (j = i + 1; j < MAX_NR_ZONES; j++) {
5857                                 struct zone *upper_zone = &pgdat->node_zones[j];
5858                                 bool empty = !zone_managed_pages(upper_zone);
5859
5860                                 managed_pages += zone_managed_pages(upper_zone);
5861
5862                                 if (clear || empty)
5863                                         zone->lowmem_reserve[j] = 0;
5864                                 else
5865                                         zone->lowmem_reserve[j] = managed_pages / ratio;
5866                         }
5867                 }
5868         }
5869
5870         /* update totalreserve_pages */
5871         calculate_totalreserve_pages();
5872 }
5873
5874 static void __setup_per_zone_wmarks(void)
5875 {
5876         unsigned long pages_min = min_free_kbytes >> (PAGE_SHIFT - 10);
5877         unsigned long lowmem_pages = 0;
5878         struct zone *zone;
5879         unsigned long flags;
5880
5881         /* Calculate total number of !ZONE_HIGHMEM and !ZONE_MOVABLE pages */
5882         for_each_zone(zone) {
5883                 if (!is_highmem(zone) && zone_idx(zone) != ZONE_MOVABLE)
5884                         lowmem_pages += zone_managed_pages(zone);
5885         }
5886
5887         for_each_zone(zone) {
5888                 u64 tmp;
5889
5890                 spin_lock_irqsave(&zone->lock, flags);
5891                 tmp = (u64)pages_min * zone_managed_pages(zone);
5892                 tmp = div64_ul(tmp, lowmem_pages);
5893                 if (is_highmem(zone) || zone_idx(zone) == ZONE_MOVABLE) {
5894                         /*
5895                          * __GFP_HIGH and PF_MEMALLOC allocations usually don't
5896                          * need highmem and movable zones pages, so cap pages_min
5897                          * to a small  value here.
5898                          *
5899                          * The WMARK_HIGH-WMARK_LOW and (WMARK_LOW-WMARK_MIN)
5900                          * deltas control async page reclaim, and so should
5901                          * not be capped for highmem and movable zones.
5902                          */
5903                         unsigned long min_pages;
5904
5905                         min_pages = zone_managed_pages(zone) / 1024;
5906                         min_pages = clamp(min_pages, SWAP_CLUSTER_MAX, 128UL);
5907                         zone->_watermark[WMARK_MIN] = min_pages;
5908                 } else {
5909                         /*
5910                          * If it's a lowmem zone, reserve a number of pages
5911                          * proportionate to the zone's size.
5912                          */
5913                         zone->_watermark[WMARK_MIN] = tmp;
5914                 }
5915
5916                 /*
5917                  * Set the kswapd watermarks distance according to the
5918                  * scale factor in proportion to available memory, but
5919                  * ensure a minimum size on small systems.
5920                  */
5921                 tmp = max_t(u64, tmp >> 2,
5922                             mult_frac(zone_managed_pages(zone),
5923                                       watermark_scale_factor, 10000));
5924
5925                 zone->watermark_boost = 0;
5926                 zone->_watermark[WMARK_LOW]  = min_wmark_pages(zone) + tmp;
5927                 zone->_watermark[WMARK_HIGH] = low_wmark_pages(zone) + tmp;
5928                 zone->_watermark[WMARK_PROMO] = high_wmark_pages(zone) + tmp;
5929
5930                 spin_unlock_irqrestore(&zone->lock, flags);
5931         }
5932
5933         /* update totalreserve_pages */
5934         calculate_totalreserve_pages();
5935 }
5936
5937 /**
5938  * setup_per_zone_wmarks - called when min_free_kbytes changes
5939  * or when memory is hot-{added|removed}
5940  *
5941  * Ensures that the watermark[min,low,high] values for each zone are set
5942  * correctly with respect to min_free_kbytes.
5943  */
5944 void setup_per_zone_wmarks(void)
5945 {
5946         struct zone *zone;
5947         static DEFINE_SPINLOCK(lock);
5948
5949         spin_lock(&lock);
5950         __setup_per_zone_wmarks();
5951         spin_unlock(&lock);
5952
5953         /*
5954          * The watermark size have changed so update the pcpu batch
5955          * and high limits or the limits may be inappropriate.
5956          */
5957         for_each_zone(zone)
5958                 zone_pcp_update(zone, 0);
5959 }
5960
5961 /*
5962  * Initialise min_free_kbytes.
5963  *
5964  * For small machines we want it small (128k min).  For large machines
5965  * we want it large (256MB max).  But it is not linear, because network
5966  * bandwidth does not increase linearly with machine size.  We use
5967  *
5968  *      min_free_kbytes = 4 * sqrt(lowmem_kbytes), for better accuracy:
5969  *      min_free_kbytes = sqrt(lowmem_kbytes * 16)
5970  *
5971  * which yields
5972  *
5973  * 16MB:        512k
5974  * 32MB:        724k
5975  * 64MB:        1024k
5976  * 128MB:       1448k
5977  * 256MB:       2048k
5978  * 512MB:       2896k
5979  * 1024MB:      4096k
5980  * 2048MB:      5792k
5981  * 4096MB:      8192k
5982  * 8192MB:      11584k
5983  * 16384MB:     16384k
5984  */
5985 void calculate_min_free_kbytes(void)
5986 {
5987         unsigned long lowmem_kbytes;
5988         int new_min_free_kbytes;
5989
5990         lowmem_kbytes = nr_free_buffer_pages() * (PAGE_SIZE >> 10);
5991         new_min_free_kbytes = int_sqrt(lowmem_kbytes * 16);
5992
5993         if (new_min_free_kbytes > user_min_free_kbytes)
5994                 min_free_kbytes = clamp(new_min_free_kbytes, 128, 262144);
5995         else
5996                 pr_warn("min_free_kbytes is not updated to %d because user defined value %d is preferred\n",
5997                                 new_min_free_kbytes, user_min_free_kbytes);
5998
5999 }
6000
6001 int __meminit init_per_zone_wmark_min(void)
6002 {
6003         calculate_min_free_kbytes();
6004         setup_per_zone_wmarks();
6005         refresh_zone_stat_thresholds();
6006         setup_per_zone_lowmem_reserve();
6007
6008 #ifdef CONFIG_NUMA
6009         setup_min_unmapped_ratio();
6010         setup_min_slab_ratio();
6011 #endif
6012
6013         khugepaged_min_free_kbytes_update();
6014
6015         return 0;
6016 }
6017 postcore_initcall(init_per_zone_wmark_min)
6018
6019 /*
6020  * min_free_kbytes_sysctl_handler - just a wrapper around proc_dointvec() so
6021  *      that we can call two helper functions whenever min_free_kbytes
6022  *      changes.
6023  */
6024 static int min_free_kbytes_sysctl_handler(const struct ctl_table *table, int write,
6025                 void *buffer, size_t *length, loff_t *ppos)
6026 {
6027         int rc;
6028
6029         rc = proc_dointvec_minmax(table, write, buffer, length, ppos);
6030         if (rc)
6031                 return rc;
6032
6033         if (write) {
6034                 user_min_free_kbytes = min_free_kbytes;
6035                 setup_per_zone_wmarks();
6036         }
6037         return 0;
6038 }
6039
6040 static int watermark_scale_factor_sysctl_handler(const struct ctl_table *table, int write,
6041                 void *buffer, size_t *length, loff_t *ppos)
6042 {
6043         int rc;
6044
6045         rc = proc_dointvec_minmax(table, write, buffer, length, ppos);
6046         if (rc)
6047                 return rc;
6048
6049         if (write)
6050                 setup_per_zone_wmarks();
6051
6052         return 0;
6053 }
6054
6055 #ifdef CONFIG_NUMA
6056 static void setup_min_unmapped_ratio(void)
6057 {
6058         pg_data_t *pgdat;
6059         struct zone *zone;
6060
6061         for_each_online_pgdat(pgdat)
6062                 pgdat->min_unmapped_pages = 0;
6063
6064         for_each_zone(zone)
6065                 zone->zone_pgdat->min_unmapped_pages += (zone_managed_pages(zone) *
6066                                                          sysctl_min_unmapped_ratio) / 100;
6067 }
6068
6069
6070 static int sysctl_min_unmapped_ratio_sysctl_handler(const struct ctl_table *table, int write,
6071                 void *buffer, size_t *length, loff_t *ppos)
6072 {
6073         int rc;
6074
6075         rc = proc_dointvec_minmax(table, write, buffer, length, ppos);
6076         if (rc)
6077                 return rc;
6078
6079         setup_min_unmapped_ratio();
6080
6081         return 0;
6082 }
6083
6084 static void setup_min_slab_ratio(void)
6085 {
6086         pg_data_t *pgdat;
6087         struct zone *zone;
6088
6089         for_each_online_pgdat(pgdat)
6090                 pgdat->min_slab_pages = 0;
6091
6092         for_each_zone(zone)
6093                 zone->zone_pgdat->min_slab_pages += (zone_managed_pages(zone) *
6094                                                      sysctl_min_slab_ratio) / 100;
6095 }
6096
6097 static int sysctl_min_slab_ratio_sysctl_handler(const struct ctl_table *table, int write,
6098                 void *buffer, size_t *length, loff_t *ppos)
6099 {
6100         int rc;
6101
6102         rc = proc_dointvec_minmax(table, write, buffer, length, ppos);
6103         if (rc)
6104                 return rc;
6105
6106         setup_min_slab_ratio();
6107
6108         return 0;
6109 }
6110 #endif
6111
6112 /*
6113  * lowmem_reserve_ratio_sysctl_handler - just a wrapper around
6114  *      proc_dointvec() so that we can call setup_per_zone_lowmem_reserve()
6115  *      whenever sysctl_lowmem_reserve_ratio changes.
6116  *
6117  * The reserve ratio obviously has absolutely no relation with the
6118  * minimum watermarks. The lowmem reserve ratio can only make sense
6119  * if in function of the boot time zone sizes.
6120  */
6121 static int lowmem_reserve_ratio_sysctl_handler(const struct ctl_table *table,
6122                 int write, void *buffer, size_t *length, loff_t *ppos)
6123 {
6124         int i;
6125
6126         proc_dointvec_minmax(table, write, buffer, length, ppos);
6127
6128         for (i = 0; i < MAX_NR_ZONES; i++) {
6129                 if (sysctl_lowmem_reserve_ratio[i] < 1)
6130                         sysctl_lowmem_reserve_ratio[i] = 0;
6131         }
6132
6133         setup_per_zone_lowmem_reserve();
6134         return 0;
6135 }
6136
6137 /*
6138  * percpu_pagelist_high_fraction - changes the pcp->high for each zone on each
6139  * cpu. It is the fraction of total pages in each zone that a hot per cpu
6140  * pagelist can have before it gets flushed back to buddy allocator.
6141  */
6142 static int percpu_pagelist_high_fraction_sysctl_handler(const struct ctl_table *table,
6143                 int write, void *buffer, size_t *length, loff_t *ppos)
6144 {
6145         struct zone *zone;
6146         int old_percpu_pagelist_high_fraction;
6147         int ret;
6148
6149         mutex_lock(&pcp_batch_high_lock);
6150         old_percpu_pagelist_high_fraction = percpu_pagelist_high_fraction;
6151
6152         ret = proc_dointvec_minmax(table, write, buffer, length, ppos);
6153         if (!write || ret < 0)
6154                 goto out;
6155
6156         /* Sanity checking to avoid pcp imbalance */
6157         if (percpu_pagelist_high_fraction &&
6158             percpu_pagelist_high_fraction < MIN_PERCPU_PAGELIST_HIGH_FRACTION) {
6159                 percpu_pagelist_high_fraction = old_percpu_pagelist_high_fraction;
6160                 ret = -EINVAL;
6161                 goto out;
6162         }
6163
6164         /* No change? */
6165         if (percpu_pagelist_high_fraction == old_percpu_pagelist_high_fraction)
6166                 goto out;
6167
6168         for_each_populated_zone(zone)
6169                 zone_set_pageset_high_and_batch(zone, 0);
6170 out:
6171         mutex_unlock(&pcp_batch_high_lock);
6172         return ret;
6173 }
6174
6175 static struct ctl_table page_alloc_sysctl_table[] = {
6176         {
6177                 .procname       = "min_free_kbytes",
6178                 .data           = &min_free_kbytes,
6179                 .maxlen         = sizeof(min_free_kbytes),
6180                 .mode           = 0644,
6181                 .proc_handler   = min_free_kbytes_sysctl_handler,
6182                 .extra1         = SYSCTL_ZERO,
6183         },
6184         {
6185                 .procname       = "watermark_boost_factor",
6186                 .data           = &watermark_boost_factor,
6187                 .maxlen         = sizeof(watermark_boost_factor),
6188                 .mode           = 0644,
6189                 .proc_handler   = proc_dointvec_minmax,
6190                 .extra1         = SYSCTL_ZERO,
6191         },
6192         {
6193                 .procname       = "watermark_scale_factor",
6194                 .data           = &watermark_scale_factor,
6195                 .maxlen         = sizeof(watermark_scale_factor),
6196                 .mode           = 0644,
6197                 .proc_handler   = watermark_scale_factor_sysctl_handler,
6198                 .extra1         = SYSCTL_ONE,
6199                 .extra2         = SYSCTL_THREE_THOUSAND,
6200         },
6201         {
6202                 .procname       = "percpu_pagelist_high_fraction",
6203                 .data           = &percpu_pagelist_high_fraction,
6204                 .maxlen         = sizeof(percpu_pagelist_high_fraction),
6205                 .mode           = 0644,
6206                 .proc_handler   = percpu_pagelist_high_fraction_sysctl_handler,
6207                 .extra1         = SYSCTL_ZERO,
6208         },
6209         {
6210                 .procname       = "lowmem_reserve_ratio",
6211                 .data           = &sysctl_lowmem_reserve_ratio,
6212                 .maxlen         = sizeof(sysctl_lowmem_reserve_ratio),
6213                 .mode           = 0644,
6214                 .proc_handler   = lowmem_reserve_ratio_sysctl_handler,
6215         },
6216 #ifdef CONFIG_NUMA
6217         {
6218                 .procname       = "numa_zonelist_order",
6219                 .data           = &numa_zonelist_order,
6220                 .maxlen         = NUMA_ZONELIST_ORDER_LEN,
6221                 .mode           = 0644,
6222                 .proc_handler   = numa_zonelist_order_handler,
6223         },
6224         {
6225                 .procname       = "min_unmapped_ratio",
6226                 .data           = &sysctl_min_unmapped_ratio,
6227                 .maxlen         = sizeof(sysctl_min_unmapped_ratio),
6228                 .mode           = 0644,
6229                 .proc_handler   = sysctl_min_unmapped_ratio_sysctl_handler,
6230                 .extra1         = SYSCTL_ZERO,
6231                 .extra2         = SYSCTL_ONE_HUNDRED,
6232         },
6233         {
6234                 .procname       = "min_slab_ratio",
6235                 .data           = &sysctl_min_slab_ratio,
6236                 .maxlen         = sizeof(sysctl_min_slab_ratio),
6237                 .mode           = 0644,
6238                 .proc_handler   = sysctl_min_slab_ratio_sysctl_handler,
6239                 .extra1         = SYSCTL_ZERO,
6240                 .extra2         = SYSCTL_ONE_HUNDRED,
6241         },
6242 #endif
6243 };
6244
6245 void __init page_alloc_sysctl_init(void)
6246 {
6247         register_sysctl_init("vm", page_alloc_sysctl_table);
6248 }
6249
6250 #ifdef CONFIG_CONTIG_ALLOC
6251 /* Usage: See admin-guide/dynamic-debug-howto.rst */
6252 static void alloc_contig_dump_pages(struct list_head *page_list)
6253 {
6254         DEFINE_DYNAMIC_DEBUG_METADATA(descriptor, "migrate failure");
6255
6256         if (DYNAMIC_DEBUG_BRANCH(descriptor)) {
6257                 struct page *page;
6258
6259                 dump_stack();
6260                 list_for_each_entry(page, page_list, lru)
6261                         dump_page(page, "migration failure");
6262         }
6263 }
6264
6265 /*
6266  * [start, end) must belong to a single zone.
6267  * @migratetype: using migratetype to filter the type of migration in
6268  *              trace_mm_alloc_contig_migrate_range_info.
6269  */
6270 int __alloc_contig_migrate_range(struct compact_control *cc,
6271                                         unsigned long start, unsigned long end,
6272                                         int migratetype)
6273 {
6274         /* This function is based on compact_zone() from compaction.c. */
6275         unsigned int nr_reclaimed;
6276         unsigned long pfn = start;
6277         unsigned int tries = 0;
6278         int ret = 0;
6279         struct migration_target_control mtc = {
6280                 .nid = zone_to_nid(cc->zone),
6281                 .gfp_mask = GFP_USER | __GFP_MOVABLE | __GFP_RETRY_MAYFAIL,
6282                 .reason = MR_CONTIG_RANGE,
6283         };
6284         struct page *page;
6285         unsigned long total_mapped = 0;
6286         unsigned long total_migrated = 0;
6287         unsigned long total_reclaimed = 0;
6288
6289         lru_cache_disable();
6290
6291         while (pfn < end || !list_empty(&cc->migratepages)) {
6292                 if (fatal_signal_pending(current)) {
6293                         ret = -EINTR;
6294                         break;
6295                 }
6296
6297                 if (list_empty(&cc->migratepages)) {
6298                         cc->nr_migratepages = 0;
6299                         ret = isolate_migratepages_range(cc, pfn, end);
6300                         if (ret && ret != -EAGAIN)
6301                                 break;
6302                         pfn = cc->migrate_pfn;
6303                         tries = 0;
6304                 } else if (++tries == 5) {
6305                         ret = -EBUSY;
6306                         break;
6307                 }
6308
6309                 nr_reclaimed = reclaim_clean_pages_from_list(cc->zone,
6310                                                         &cc->migratepages);
6311                 cc->nr_migratepages -= nr_reclaimed;
6312
6313                 if (trace_mm_alloc_contig_migrate_range_info_enabled()) {
6314                         total_reclaimed += nr_reclaimed;
6315                         list_for_each_entry(page, &cc->migratepages, lru) {
6316                                 struct folio *folio = page_folio(page);
6317
6318                                 total_mapped += folio_mapped(folio) *
6319                                                 folio_nr_pages(folio);
6320                         }
6321                 }
6322
6323                 ret = migrate_pages(&cc->migratepages, alloc_migration_target,
6324                         NULL, (unsigned long)&mtc, cc->mode, MR_CONTIG_RANGE, NULL);
6325
6326                 if (trace_mm_alloc_contig_migrate_range_info_enabled() && !ret)
6327                         total_migrated += cc->nr_migratepages;
6328
6329                 /*
6330                  * On -ENOMEM, migrate_pages() bails out right away. It is pointless
6331                  * to retry again over this error, so do the same here.
6332                  */
6333                 if (ret == -ENOMEM)
6334                         break;
6335         }
6336
6337         lru_cache_enable();
6338         if (ret < 0) {
6339                 if (!(cc->gfp_mask & __GFP_NOWARN) && ret == -EBUSY)
6340                         alloc_contig_dump_pages(&cc->migratepages);
6341                 putback_movable_pages(&cc->migratepages);
6342         }
6343
6344         trace_mm_alloc_contig_migrate_range_info(start, end, migratetype,
6345                                                  total_migrated,
6346                                                  total_reclaimed,
6347                                                  total_mapped);
6348         return (ret < 0) ? ret : 0;
6349 }
6350
6351 static void split_free_pages(struct list_head *list)
6352 {
6353         int order;
6354
6355         for (order = 0; order < NR_PAGE_ORDERS; order++) {
6356                 struct page *page, *next;
6357                 int nr_pages = 1 << order;
6358
6359                 list_for_each_entry_safe(page, next, &list[order], lru) {
6360                         int i;
6361
6362                         post_alloc_hook(page, order, __GFP_MOVABLE);
6363                         if (!order)
6364                                 continue;
6365
6366                         split_page(page, order);
6367
6368                         /* Add all subpages to the order-0 head, in sequence. */
6369                         list_del(&page->lru);
6370                         for (i = 0; i < nr_pages; i++)
6371                                 list_add_tail(&page[i].lru, &list[0]);
6372                 }
6373         }
6374 }
6375
6376 /**
6377  * alloc_contig_range() -- tries to allocate given range of pages
6378  * @start:      start PFN to allocate
6379  * @end:        one-past-the-last PFN to allocate
6380  * @migratetype:        migratetype of the underlying pageblocks (either
6381  *                      #MIGRATE_MOVABLE or #MIGRATE_CMA).  All pageblocks
6382  *                      in range must have the same migratetype and it must
6383  *                      be either of the two.
6384  * @gfp_mask:   GFP mask to use during compaction
6385  *
6386  * The PFN range does not have to be pageblock aligned. The PFN range must
6387  * belong to a single zone.
6388  *
6389  * The first thing this routine does is attempt to MIGRATE_ISOLATE all
6390  * pageblocks in the range.  Once isolated, the pageblocks should not
6391  * be modified by others.
6392  *
6393  * Return: zero on success or negative error code.  On success all
6394  * pages which PFN is in [start, end) are allocated for the caller and
6395  * need to be freed with free_contig_range().
6396  */
6397 int alloc_contig_range_noprof(unsigned long start, unsigned long end,
6398                        unsigned migratetype, gfp_t gfp_mask)
6399 {
6400         unsigned long outer_start, outer_end;
6401         int ret = 0;
6402
6403         struct compact_control cc = {
6404                 .nr_migratepages = 0,
6405                 .order = -1,
6406                 .zone = page_zone(pfn_to_page(start)),
6407                 .mode = MIGRATE_SYNC,
6408                 .ignore_skip_hint = true,
6409                 .no_set_skip_hint = true,
6410                 .gfp_mask = current_gfp_context(gfp_mask),
6411                 .alloc_contig = true,
6412         };
6413         INIT_LIST_HEAD(&cc.migratepages);
6414
6415         /*
6416          * What we do here is we mark all pageblocks in range as
6417          * MIGRATE_ISOLATE.  Because pageblock and max order pages may
6418          * have different sizes, and due to the way page allocator
6419          * work, start_isolate_page_range() has special handlings for this.
6420          *
6421          * Once the pageblocks are marked as MIGRATE_ISOLATE, we
6422          * migrate the pages from an unaligned range (ie. pages that
6423          * we are interested in). This will put all the pages in
6424          * range back to page allocator as MIGRATE_ISOLATE.
6425          *
6426          * When this is done, we take the pages in range from page
6427          * allocator removing them from the buddy system.  This way
6428          * page allocator will never consider using them.
6429          *
6430          * This lets us mark the pageblocks back as
6431          * MIGRATE_CMA/MIGRATE_MOVABLE so that free pages in the
6432          * aligned range but not in the unaligned, original range are
6433          * put back to page allocator so that buddy can use them.
6434          */
6435
6436         ret = start_isolate_page_range(start, end, migratetype, 0, gfp_mask);
6437         if (ret)
6438                 goto done;
6439
6440         drain_all_pages(cc.zone);
6441
6442         /*
6443          * In case of -EBUSY, we'd like to know which page causes problem.
6444          * So, just fall through. test_pages_isolated() has a tracepoint
6445          * which will report the busy page.
6446          *
6447          * It is possible that busy pages could become available before
6448          * the call to test_pages_isolated, and the range will actually be
6449          * allocated.  So, if we fall through be sure to clear ret so that
6450          * -EBUSY is not accidentally used or returned to caller.
6451          */
6452         ret = __alloc_contig_migrate_range(&cc, start, end, migratetype);
6453         if (ret && ret != -EBUSY)
6454                 goto done;
6455         ret = 0;
6456
6457         /*
6458          * Pages from [start, end) are within a pageblock_nr_pages
6459          * aligned blocks that are marked as MIGRATE_ISOLATE.  What's
6460          * more, all pages in [start, end) are free in page allocator.
6461          * What we are going to do is to allocate all pages from
6462          * [start, end) (that is remove them from page allocator).
6463          *
6464          * The only problem is that pages at the beginning and at the
6465          * end of interesting range may be not aligned with pages that
6466          * page allocator holds, ie. they can be part of higher order
6467          * pages.  Because of this, we reserve the bigger range and
6468          * once this is done free the pages we are not interested in.
6469          *
6470          * We don't have to hold zone->lock here because the pages are
6471          * isolated thus they won't get removed from buddy.
6472          */
6473         outer_start = find_large_buddy(start);
6474
6475         /* Make sure the range is really isolated. */
6476         if (test_pages_isolated(outer_start, end, 0)) {
6477                 ret = -EBUSY;
6478                 goto done;
6479         }
6480
6481         /* Grab isolated pages from freelists. */
6482         outer_end = isolate_freepages_range(&cc, outer_start, end);
6483         if (!outer_end) {
6484                 ret = -EBUSY;
6485                 goto done;
6486         }
6487
6488         if (!(gfp_mask & __GFP_COMP)) {
6489                 split_free_pages(cc.freepages);
6490
6491                 /* Free head and tail (if any) */
6492                 if (start != outer_start)
6493                         free_contig_range(outer_start, start - outer_start);
6494                 if (end != outer_end)
6495                         free_contig_range(end, outer_end - end);
6496         } else if (start == outer_start && end == outer_end && is_power_of_2(end - start)) {
6497                 struct page *head = pfn_to_page(start);
6498                 int order = ilog2(end - start);
6499
6500                 check_new_pages(head, order);
6501                 prep_new_page(head, order, gfp_mask, 0);
6502         } else {
6503                 ret = -EINVAL;
6504                 WARN(true, "PFN range: requested [%lu, %lu), allocated [%lu, %lu)\n",
6505                      start, end, outer_start, outer_end);
6506         }
6507 done:
6508         undo_isolate_page_range(start, end, migratetype);
6509         return ret;
6510 }
6511 EXPORT_SYMBOL(alloc_contig_range_noprof);
6512
6513 static int __alloc_contig_pages(unsigned long start_pfn,
6514                                 unsigned long nr_pages, gfp_t gfp_mask)
6515 {
6516         unsigned long end_pfn = start_pfn + nr_pages;
6517
6518         return alloc_contig_range_noprof(start_pfn, end_pfn, MIGRATE_MOVABLE,
6519                                    gfp_mask);
6520 }
6521
6522 static bool pfn_range_valid_contig(struct zone *z, unsigned long start_pfn,
6523                                    unsigned long nr_pages)
6524 {
6525         unsigned long i, end_pfn = start_pfn + nr_pages;
6526         struct page *page;
6527
6528         for (i = start_pfn; i < end_pfn; i++) {
6529                 page = pfn_to_online_page(i);
6530                 if (!page)
6531                         return false;
6532
6533                 if (page_zone(page) != z)
6534                         return false;
6535
6536                 if (PageReserved(page))
6537                         return false;
6538
6539                 if (PageHuge(page))
6540                         return false;
6541         }
6542         return true;
6543 }
6544
6545 static bool zone_spans_last_pfn(const struct zone *zone,
6546                                 unsigned long start_pfn, unsigned long nr_pages)
6547 {
6548         unsigned long last_pfn = start_pfn + nr_pages - 1;
6549
6550         return zone_spans_pfn(zone, last_pfn);
6551 }
6552
6553 /**
6554  * alloc_contig_pages() -- tries to find and allocate contiguous range of pages
6555  * @nr_pages:   Number of contiguous pages to allocate
6556  * @gfp_mask:   GFP mask to limit search and used during compaction
6557  * @nid:        Target node
6558  * @nodemask:   Mask for other possible nodes
6559  *
6560  * This routine is a wrapper around alloc_contig_range(). It scans over zones
6561  * on an applicable zonelist to find a contiguous pfn range which can then be
6562  * tried for allocation with alloc_contig_range(). This routine is intended
6563  * for allocation requests which can not be fulfilled with the buddy allocator.
6564  *
6565  * The allocated memory is always aligned to a page boundary. If nr_pages is a
6566  * power of two, then allocated range is also guaranteed to be aligned to same
6567  * nr_pages (e.g. 1GB request would be aligned to 1GB).
6568  *
6569  * Allocated pages can be freed with free_contig_range() or by manually calling
6570  * __free_page() on each allocated page.
6571  *
6572  * Return: pointer to contiguous pages on success, or NULL if not successful.
6573  */
6574 struct page *alloc_contig_pages_noprof(unsigned long nr_pages, gfp_t gfp_mask,
6575                                  int nid, nodemask_t *nodemask)
6576 {
6577         unsigned long ret, pfn, flags;
6578         struct zonelist *zonelist;
6579         struct zone *zone;
6580         struct zoneref *z;
6581
6582         zonelist = node_zonelist(nid, gfp_mask);
6583         for_each_zone_zonelist_nodemask(zone, z, zonelist,
6584                                         gfp_zone(gfp_mask), nodemask) {
6585                 spin_lock_irqsave(&zone->lock, flags);
6586
6587                 pfn = ALIGN(zone->zone_start_pfn, nr_pages);
6588                 while (zone_spans_last_pfn(zone, pfn, nr_pages)) {
6589                         if (pfn_range_valid_contig(zone, pfn, nr_pages)) {
6590                                 /*
6591                                  * We release the zone lock here because
6592                                  * alloc_contig_range() will also lock the zone
6593                                  * at some point. If there's an allocation
6594                                  * spinning on this lock, it may win the race
6595                                  * and cause alloc_contig_range() to fail...
6596                                  */
6597                                 spin_unlock_irqrestore(&zone->lock, flags);
6598                                 ret = __alloc_contig_pages(pfn, nr_pages,
6599                                                         gfp_mask);
6600                                 if (!ret)
6601                                         return pfn_to_page(pfn);
6602                                 spin_lock_irqsave(&zone->lock, flags);
6603                         }
6604                         pfn += nr_pages;
6605                 }
6606                 spin_unlock_irqrestore(&zone->lock, flags);
6607         }
6608         return NULL;
6609 }
6610 #endif /* CONFIG_CONTIG_ALLOC */
6611
6612 void free_contig_range(unsigned long pfn, unsigned long nr_pages)
6613 {
6614         unsigned long count = 0;
6615         struct folio *folio = pfn_folio(pfn);
6616
6617         if (folio_test_large(folio)) {
6618                 int expected = folio_nr_pages(folio);
6619
6620                 if (nr_pages == expected)
6621                         folio_put(folio);
6622                 else
6623                         WARN(true, "PFN %lu: nr_pages %lu != expected %d\n",
6624                              pfn, nr_pages, expected);
6625                 return;
6626         }
6627
6628         for (; nr_pages--; pfn++) {
6629                 struct page *page = pfn_to_page(pfn);
6630
6631                 count += page_count(page) != 1;
6632                 __free_page(page);
6633         }
6634         WARN(count != 0, "%lu pages are still in use!\n", count);
6635 }
6636 EXPORT_SYMBOL(free_contig_range);
6637
6638 /*
6639  * Effectively disable pcplists for the zone by setting the high limit to 0
6640  * and draining all cpus. A concurrent page freeing on another CPU that's about
6641  * to put the page on pcplist will either finish before the drain and the page
6642  * will be drained, or observe the new high limit and skip the pcplist.
6643  *
6644  * Must be paired with a call to zone_pcp_enable().
6645  */
6646 void zone_pcp_disable(struct zone *zone)
6647 {
6648         mutex_lock(&pcp_batch_high_lock);
6649         __zone_set_pageset_high_and_batch(zone, 0, 0, 1);
6650         __drain_all_pages(zone, true);
6651 }
6652
6653 void zone_pcp_enable(struct zone *zone)
6654 {
6655         __zone_set_pageset_high_and_batch(zone, zone->pageset_high_min,
6656                 zone->pageset_high_max, zone->pageset_batch);
6657         mutex_unlock(&pcp_batch_high_lock);
6658 }
6659
6660 void zone_pcp_reset(struct zone *zone)
6661 {
6662         int cpu;
6663         struct per_cpu_zonestat *pzstats;
6664
6665         if (zone->per_cpu_pageset != &boot_pageset) {
6666                 for_each_online_cpu(cpu) {
6667                         pzstats = per_cpu_ptr(zone->per_cpu_zonestats, cpu);
6668                         drain_zonestat(zone, pzstats);
6669                 }
6670                 free_percpu(zone->per_cpu_pageset);
6671                 zone->per_cpu_pageset = &boot_pageset;
6672                 if (zone->per_cpu_zonestats != &boot_zonestats) {
6673                         free_percpu(zone->per_cpu_zonestats);
6674                         zone->per_cpu_zonestats = &boot_zonestats;
6675                 }
6676         }
6677 }
6678
6679 #ifdef CONFIG_MEMORY_HOTREMOVE
6680 /*
6681  * All pages in the range must be in a single zone, must not contain holes,
6682  * must span full sections, and must be isolated before calling this function.
6683  *
6684  * Returns the number of managed (non-PageOffline()) pages in the range: the
6685  * number of pages for which memory offlining code must adjust managed page
6686  * counters using adjust_managed_page_count().
6687  */
6688 unsigned long __offline_isolated_pages(unsigned long start_pfn,
6689                 unsigned long end_pfn)
6690 {
6691         unsigned long already_offline = 0, flags;
6692         unsigned long pfn = start_pfn;
6693         struct page *page;
6694         struct zone *zone;
6695         unsigned int order;
6696
6697         offline_mem_sections(pfn, end_pfn);
6698         zone = page_zone(pfn_to_page(pfn));
6699         spin_lock_irqsave(&zone->lock, flags);
6700         while (pfn < end_pfn) {
6701                 page = pfn_to_page(pfn);
6702                 /*
6703                  * The HWPoisoned page may be not in buddy system, and
6704                  * page_count() is not 0.
6705                  */
6706                 if (unlikely(!PageBuddy(page) && PageHWPoison(page))) {
6707                         pfn++;
6708                         continue;
6709                 }
6710                 /*
6711                  * At this point all remaining PageOffline() pages have a
6712                  * reference count of 0 and can simply be skipped.
6713                  */
6714                 if (PageOffline(page)) {
6715                         BUG_ON(page_count(page));
6716                         BUG_ON(PageBuddy(page));
6717                         already_offline++;
6718                         pfn++;
6719                         continue;
6720                 }
6721
6722                 BUG_ON(page_count(page));
6723                 BUG_ON(!PageBuddy(page));
6724                 VM_WARN_ON(get_pageblock_migratetype(page) != MIGRATE_ISOLATE);
6725                 order = buddy_order(page);
6726                 del_page_from_free_list(page, zone, order, MIGRATE_ISOLATE);
6727                 pfn += (1 << order);
6728         }
6729         spin_unlock_irqrestore(&zone->lock, flags);
6730
6731         return end_pfn - start_pfn - already_offline;
6732 }
6733 #endif
6734
6735 /*
6736  * This function returns a stable result only if called under zone lock.
6737  */
6738 bool is_free_buddy_page(const struct page *page)
6739 {
6740         unsigned long pfn = page_to_pfn(page);
6741         unsigned int order;
6742
6743         for (order = 0; order < NR_PAGE_ORDERS; order++) {
6744                 const struct page *head = page - (pfn & ((1 << order) - 1));
6745
6746                 if (PageBuddy(head) &&
6747                     buddy_order_unsafe(head) >= order)
6748                         break;
6749         }
6750
6751         return order <= MAX_PAGE_ORDER;
6752 }
6753 EXPORT_SYMBOL(is_free_buddy_page);
6754
6755 #ifdef CONFIG_MEMORY_FAILURE
6756 static inline void add_to_free_list(struct page *page, struct zone *zone,
6757                                     unsigned int order, int migratetype,
6758                                     bool tail)
6759 {
6760         __add_to_free_list(page, zone, order, migratetype, tail);
6761         account_freepages(zone, 1 << order, migratetype);
6762 }
6763
6764 /*
6765  * Break down a higher-order page in sub-pages, and keep our target out of
6766  * buddy allocator.
6767  */
6768 static void break_down_buddy_pages(struct zone *zone, struct page *page,
6769                                    struct page *target, int low, int high,
6770                                    int migratetype)
6771 {
6772         unsigned long size = 1 << high;
6773         struct page *current_buddy;
6774
6775         while (high > low) {
6776                 high--;
6777                 size >>= 1;
6778
6779                 if (target >= &page[size]) {
6780                         current_buddy = page;
6781                         page = page + size;
6782                 } else {
6783                         current_buddy = page + size;
6784                 }
6785
6786                 if (set_page_guard(zone, current_buddy, high))
6787                         continue;
6788
6789                 add_to_free_list(current_buddy, zone, high, migratetype, false);
6790                 set_buddy_order(current_buddy, high);
6791         }
6792 }
6793
6794 /*
6795  * Take a page that will be marked as poisoned off the buddy allocator.
6796  */
6797 bool take_page_off_buddy(struct page *page)
6798 {
6799         struct zone *zone = page_zone(page);
6800         unsigned long pfn = page_to_pfn(page);
6801         unsigned long flags;
6802         unsigned int order;
6803         bool ret = false;
6804
6805         spin_lock_irqsave(&zone->lock, flags);
6806         for (order = 0; order < NR_PAGE_ORDERS; order++) {
6807                 struct page *page_head = page - (pfn & ((1 << order) - 1));
6808                 int page_order = buddy_order(page_head);
6809
6810                 if (PageBuddy(page_head) && page_order >= order) {
6811                         unsigned long pfn_head = page_to_pfn(page_head);
6812                         int migratetype = get_pfnblock_migratetype(page_head,
6813                                                                    pfn_head);
6814
6815                         del_page_from_free_list(page_head, zone, page_order,
6816                                                 migratetype);
6817                         break_down_buddy_pages(zone, page_head, page, 0,
6818                                                 page_order, migratetype);
6819                         SetPageHWPoisonTakenOff(page);
6820                         ret = true;
6821                         break;
6822                 }
6823                 if (page_count(page_head) > 0)
6824                         break;
6825         }
6826         spin_unlock_irqrestore(&zone->lock, flags);
6827         return ret;
6828 }
6829
6830 /*
6831  * Cancel takeoff done by take_page_off_buddy().
6832  */
6833 bool put_page_back_buddy(struct page *page)
6834 {
6835         struct zone *zone = page_zone(page);
6836         unsigned long flags;
6837         bool ret = false;
6838
6839         spin_lock_irqsave(&zone->lock, flags);
6840         if (put_page_testzero(page)) {
6841                 unsigned long pfn = page_to_pfn(page);
6842                 int migratetype = get_pfnblock_migratetype(page, pfn);
6843
6844                 ClearPageHWPoisonTakenOff(page);
6845                 __free_one_page(page, pfn, zone, 0, migratetype, FPI_NONE);
6846                 if (TestClearPageHWPoison(page)) {
6847                         ret = true;
6848                 }
6849         }
6850         spin_unlock_irqrestore(&zone->lock, flags);
6851
6852         return ret;
6853 }
6854 #endif
6855
6856 #ifdef CONFIG_ZONE_DMA
6857 bool has_managed_dma(void)
6858 {
6859         struct pglist_data *pgdat;
6860
6861         for_each_online_pgdat(pgdat) {
6862                 struct zone *zone = &pgdat->node_zones[ZONE_DMA];
6863
6864                 if (managed_zone(zone))
6865                         return true;
6866         }
6867         return false;
6868 }
6869 #endif /* CONFIG_ZONE_DMA */
6870
6871 #ifdef CONFIG_UNACCEPTED_MEMORY
6872
6873 /* Counts number of zones with unaccepted pages. */
6874 static DEFINE_STATIC_KEY_FALSE(zones_with_unaccepted_pages);
6875
6876 static bool lazy_accept = true;
6877
6878 static int __init accept_memory_parse(char *p)
6879 {
6880         if (!strcmp(p, "lazy")) {
6881                 lazy_accept = true;
6882                 return 0;
6883         } else if (!strcmp(p, "eager")) {
6884                 lazy_accept = false;
6885                 return 0;
6886         } else {
6887                 return -EINVAL;
6888         }
6889 }
6890 early_param("accept_memory", accept_memory_parse);
6891
6892 static bool page_contains_unaccepted(struct page *page, unsigned int order)
6893 {
6894         phys_addr_t start = page_to_phys(page);
6895
6896         return range_contains_unaccepted_memory(start, PAGE_SIZE << order);
6897 }
6898
6899 static void __accept_page(struct zone *zone, unsigned long *flags,
6900                           struct page *page)
6901 {
6902         bool last;
6903
6904         list_del(&page->lru);
6905         last = list_empty(&zone->unaccepted_pages);
6906
6907         account_freepages(zone, -MAX_ORDER_NR_PAGES, MIGRATE_MOVABLE);
6908         __mod_zone_page_state(zone, NR_UNACCEPTED, -MAX_ORDER_NR_PAGES);
6909         __ClearPageUnaccepted(page);
6910         spin_unlock_irqrestore(&zone->lock, *flags);
6911
6912         accept_memory(page_to_phys(page), PAGE_SIZE << MAX_PAGE_ORDER);
6913
6914         __free_pages_ok(page, MAX_PAGE_ORDER, FPI_TO_TAIL);
6915
6916         if (last)
6917                 static_branch_dec(&zones_with_unaccepted_pages);
6918 }
6919
6920 void accept_page(struct page *page)
6921 {
6922         struct zone *zone = page_zone(page);
6923         unsigned long flags;
6924
6925         spin_lock_irqsave(&zone->lock, flags);
6926         if (!PageUnaccepted(page)) {
6927                 spin_unlock_irqrestore(&zone->lock, flags);
6928                 return;
6929         }
6930
6931         /* Unlocks zone->lock */
6932         __accept_page(zone, &flags, page);
6933 }
6934
6935 static bool try_to_accept_memory_one(struct zone *zone)
6936 {
6937         unsigned long flags;
6938         struct page *page;
6939
6940         spin_lock_irqsave(&zone->lock, flags);
6941         page = list_first_entry_or_null(&zone->unaccepted_pages,
6942                                         struct page, lru);
6943         if (!page) {
6944                 spin_unlock_irqrestore(&zone->lock, flags);
6945                 return false;
6946         }
6947
6948         /* Unlocks zone->lock */
6949         __accept_page(zone, &flags, page);
6950
6951         return true;
6952 }
6953
6954 static inline bool has_unaccepted_memory(void)
6955 {
6956         return static_branch_unlikely(&zones_with_unaccepted_pages);
6957 }
6958
6959 static bool cond_accept_memory(struct zone *zone, unsigned int order)
6960 {
6961         long to_accept;
6962         bool ret = false;
6963
6964         if (!has_unaccepted_memory())
6965                 return false;
6966
6967         if (list_empty(&zone->unaccepted_pages))
6968                 return false;
6969
6970         /* How much to accept to get to promo watermark? */
6971         to_accept = promo_wmark_pages(zone) -
6972                     (zone_page_state(zone, NR_FREE_PAGES) -
6973                     __zone_watermark_unusable_free(zone, order, 0) -
6974                     zone_page_state(zone, NR_UNACCEPTED));
6975
6976         while (to_accept > 0) {
6977                 if (!try_to_accept_memory_one(zone))
6978                         break;
6979                 ret = true;
6980                 to_accept -= MAX_ORDER_NR_PAGES;
6981         }
6982
6983         return ret;
6984 }
6985
6986 static bool __free_unaccepted(struct page *page)
6987 {
6988         struct zone *zone = page_zone(page);
6989         unsigned long flags;
6990         bool first = false;
6991
6992         if (!lazy_accept)
6993                 return false;
6994
6995         spin_lock_irqsave(&zone->lock, flags);
6996         first = list_empty(&zone->unaccepted_pages);
6997         list_add_tail(&page->lru, &zone->unaccepted_pages);
6998         account_freepages(zone, MAX_ORDER_NR_PAGES, MIGRATE_MOVABLE);
6999         __mod_zone_page_state(zone, NR_UNACCEPTED, MAX_ORDER_NR_PAGES);
7000         __SetPageUnaccepted(page);
7001         spin_unlock_irqrestore(&zone->lock, flags);
7002
7003         if (first)
7004                 static_branch_inc(&zones_with_unaccepted_pages);
7005
7006         return true;
7007 }
7008
7009 #else
7010
7011 static bool page_contains_unaccepted(struct page *page, unsigned int order)
7012 {
7013         return false;
7014 }
7015
7016 static bool cond_accept_memory(struct zone *zone, unsigned int order)
7017 {
7018         return false;
7019 }
7020
7021 static bool __free_unaccepted(struct page *page)
7022 {
7023         BUILD_BUG();
7024         return false;
7025 }
7026
7027 #endif /* CONFIG_UNACCEPTED_MEMORY */
This page took 0.430455 seconds and 4 git commands to generate.