diff options
Diffstat (limited to 'target/linux/generic/backport-5.15/020-v6.1-10-mm-multi-gen-LRU-kill-switch.patch')
-rw-r--r-- | target/linux/generic/backport-5.15/020-v6.1-10-mm-multi-gen-LRU-kill-switch.patch | 41 |
1 files changed, 13 insertions, 28 deletions
diff --git a/target/linux/generic/backport-5.15/020-v6.1-10-mm-multi-gen-LRU-kill-switch.patch b/target/linux/generic/backport-5.15/020-v6.1-10-mm-multi-gen-LRU-kill-switch.patch index 0adb15f5e2..cf5b8f0e9f 100644 --- a/target/linux/generic/backport-5.15/020-v6.1-10-mm-multi-gen-LRU-kill-switch.patch +++ b/target/linux/generic/backport-5.15/020-v6.1-10-mm-multi-gen-LRU-kill-switch.patch @@ -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 - |