generic: 5.15: replace ramips AR8033 fiber patch with 5.18 patches
[openwrt/openwrt.git] / target / linux / generic / backport-5.15 / 020-v6.1-10-mm-multi-gen-LRU-kill-switch.patch
index 0adb15f5e247510bda3b928fdc9898e6c62ecda4..cf5b8f0e9f78dbebda03060bd9913a1f9463ea5a 100644 (file)
@@ -87,11 +87,9 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
  mm/vmscan.c                     | 228 +++++++++++++++++++++++++++++++-
  6 files changed, 265 insertions(+), 9 deletions(-)
 
-diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h
-index 45cdb12243e3..f9a5d6a81101 100644
 --- a/include/linux/cgroup.h
 +++ b/include/linux/cgroup.h
-@@ -433,6 +433,18 @@ static inline void cgroup_put(struct cgroup *cgrp)
+@@ -433,6 +433,18 @@ static inline void cgroup_put(struct cgr
        css_put(&cgrp->self);
  }
  
@@ -110,7 +108,7 @@ index 45cdb12243e3..f9a5d6a81101 100644
  /**
   * task_css_set_check - obtain a task's css_set with extra access conditions
   * @task: the task to obtain css_set for
-@@ -447,7 +459,6 @@ static inline void cgroup_put(struct cgroup *cgrp)
+@@ -447,7 +459,6 @@ static inline void cgroup_put(struct cgr
   * as locks used during the cgroup_subsys::attach() methods.
   */
  #ifdef CONFIG_PROVE_RCU
@@ -127,11 +125,9 @@ index 45cdb12243e3..f9a5d6a81101 100644
  static inline int cgroup_attach_task_all(struct task_struct *from,
                                         struct task_struct *t) { return 0; }
  static inline int cgroupstats_build(struct cgroupstats *stats,
-diff --git a/include/linux/mm_inline.h b/include/linux/mm_inline.h
-index 58aabb1ba020..e095c1c24311 100644
 --- a/include/linux/mm_inline.h
 +++ b/include/linux/mm_inline.h
-@@ -91,10 +91,21 @@ static __always_inline enum lru_list page_lru(struct page *page)
+@@ -91,10 +91,21 @@ static __always_inline enum lru_list pag
  
  #ifdef CONFIG_LRU_GEN
  
@@ -154,7 +150,7 @@ index 58aabb1ba020..e095c1c24311 100644
  
  static inline bool lru_gen_in_fault(void)
  {
-@@ -207,7 +218,7 @@ static inline bool lru_gen_add_page(struct lruvec *lruvec, struct page *page, bo
+@@ -207,7 +218,7 @@ static inline bool lru_gen_add_page(stru
  
        VM_WARN_ON_ONCE_PAGE(gen != -1, page);
  
@@ -163,8 +159,6 @@ index 58aabb1ba020..e095c1c24311 100644
                return false;
        /*
         * There are three common cases for this page:
-diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
-index 659bab633bdf..edaf035503ed 100644
 --- a/include/linux/mmzone.h
 +++ b/include/linux/mmzone.h
 @@ -364,6 +364,13 @@ enum {
@@ -190,8 +184,6 @@ index 659bab633bdf..edaf035503ed 100644
  };
  
  enum {
-diff --git a/kernel/cgroup/cgroup-internal.h b/kernel/cgroup/cgroup-internal.h
-index d8fcc139ac05..28c32a01da7d 100644
 --- a/kernel/cgroup/cgroup-internal.h
 +++ b/kernel/cgroup/cgroup-internal.h
 @@ -165,7 +165,6 @@ struct cgroup_mgctx {
@@ -202,8 +194,6 @@ index d8fcc139ac05..28c32a01da7d 100644
  extern spinlock_t css_set_lock;
  extern struct cgroup_subsys *cgroup_subsys[];
  extern struct list_head cgroup_roots;
-diff --git a/mm/Kconfig b/mm/Kconfig
-index 62433f3cd7ae..4a7d0af3c39b 100644
 --- a/mm/Kconfig
 +++ b/mm/Kconfig
 @@ -906,6 +906,12 @@ config LRU_GEN
@@ -219,8 +209,6 @@ index 62433f3cd7ae..4a7d0af3c39b 100644
  config LRU_GEN_STATS
        bool "Full stats for debugging"
        depends on LRU_GEN
-diff --git a/mm/vmscan.c b/mm/vmscan.c
-index b6f6fc2585e1..be37d996bc92 100644
 --- a/mm/vmscan.c
 +++ b/mm/vmscan.c
 @@ -52,6 +52,7 @@
@@ -231,7 +219,7 @@ index b6f6fc2585e1..be37d996bc92 100644
  
  #include <asm/tlbflush.h>
  #include <asm/div64.h>
-@@ -2841,6 +2842,14 @@ static bool can_age_anon_pages(struct pglist_data *pgdat,
+@@ -2841,6 +2842,14 @@ static bool can_age_anon_pages(struct pg
  
  #ifdef CONFIG_LRU_GEN
  
@@ -246,7 +234,7 @@ index b6f6fc2585e1..be37d996bc92 100644
  /******************************************************************************
   *                          shorthand helpers
   ******************************************************************************/
-@@ -3717,7 +3726,8 @@ static void walk_pmd_range_locked(pud_t *pud, unsigned long next, struct vm_area
+@@ -3717,7 +3726,8 @@ static void walk_pmd_range_locked(pud_t
                        goto next;
  
                if (!pmd_trans_huge(pmd[i])) {
@@ -256,7 +244,7 @@ index b6f6fc2585e1..be37d996bc92 100644
                                pmdp_test_and_clear_young(vma, addr, pmd + i);
                        goto next;
                }
-@@ -3815,10 +3825,12 @@ static void walk_pmd_range(pud_t *pud, unsigned long start, unsigned long end,
+@@ -3815,10 +3825,12 @@ restart:
                walk->mm_stats[MM_NONLEAF_TOTAL]++;
  
  #ifdef CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG
@@ -272,7 +260,7 @@ index b6f6fc2585e1..be37d996bc92 100644
  #endif
                if (!walk->force_scan && !test_bloom_filter(walk->lruvec, walk->max_seq, pmd + i))
                        continue;
-@@ -4080,7 +4092,7 @@ static bool try_to_inc_max_seq(struct lruvec *lruvec, unsigned long max_seq,
+@@ -4080,7 +4092,7 @@ static bool try_to_inc_max_seq(struct lr
         * handful of PTEs. Spreading the work out over a period of time usually
         * is less efficient, but it avoids bursty page faults.
         */
@@ -281,11 +269,10 @@ index b6f6fc2585e1..be37d996bc92 100644
                success = iterate_mm_list_nowalk(lruvec, max_seq);
                goto done;
        }
-@@ -4845,6 +4857,208 @@ static void lru_gen_shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc
-       blk_finish_plug(&plug);
+@@ -4846,6 +4858,208 @@ done:
  }
  
-+/******************************************************************************
+ /******************************************************************************
 + *                          state change
 + ******************************************************************************/
 +
@@ -487,10 +474,11 @@ index b6f6fc2585e1..be37d996bc92 100644
 +      .attrs = lru_gen_attrs,
 +};
 +
- /******************************************************************************
++/******************************************************************************
   *                          initialization
   ******************************************************************************/
-@@ -4855,6 +5069,7 @@ void lru_gen_init_lruvec(struct lruvec *lruvec)
+@@ -4855,6 +5069,7 @@ void lru_gen_init_lruvec(struct lruvec *
        struct lru_gen_struct *lrugen = &lruvec->lrugen;
  
        lrugen->max_seq = MIN_NR_GENS + 1;
@@ -508,6 +496,3 @@ index b6f6fc2585e1..be37d996bc92 100644
        return 0;
  };
  late_initcall(init_lru_gen);
--- 
-2.40.0
-