aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/backport-5.15/020-v6.1-10-mm-multi-gen-LRU-kill-switch.patch
diff options
context:
space:
mode:
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.patch41
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
-