aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/backport-5.15/020-v6.1-06-mm-multi-gen-LRU-minimal-implementation.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/generic/backport-5.15/020-v6.1-06-mm-multi-gen-LRU-minimal-implementation.patch')
-rw-r--r--target/linux/generic/backport-5.15/020-v6.1-06-mm-multi-gen-LRU-minimal-implementation.patch51
1 files changed, 16 insertions, 35 deletions
diff --git a/target/linux/generic/backport-5.15/020-v6.1-06-mm-multi-gen-LRU-minimal-implementation.patch b/target/linux/generic/backport-5.15/020-v6.1-06-mm-multi-gen-LRU-minimal-implementation.patch
index 1e310ae211..f8a7d9bd7f 100644
--- a/target/linux/generic/backport-5.15/020-v6.1-06-mm-multi-gen-LRU-minimal-implementation.patch
+++ b/target/linux/generic/backport-5.15/020-v6.1-06-mm-multi-gen-LRU-minimal-implementation.patch
@@ -208,11 +208,9 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/workingset.c | 110 ++++-
8 files changed, 1025 insertions(+), 11 deletions(-)
-diff --git a/include/linux/mm_inline.h b/include/linux/mm_inline.h
-index 65320d2b8f60..58aabb1ba020 100644
--- a/include/linux/mm_inline.h
+++ b/include/linux/mm_inline.h
-@@ -106,6 +106,33 @@ static inline int lru_gen_from_seq(unsigned long seq)
+@@ -106,6 +106,33 @@ static inline int lru_gen_from_seq(unsig
return seq % MAX_NR_GENS;
}
@@ -246,7 +244,7 @@ index 65320d2b8f60..58aabb1ba020 100644
static inline int page_lru_gen(struct page *page)
{
unsigned long flags = READ_ONCE(page->flags);
-@@ -158,6 +185,15 @@ static inline void lru_gen_update_size(struct lruvec *lruvec, struct page *page,
+@@ -158,6 +185,15 @@ static inline void lru_gen_update_size(s
__update_lru_size(lruvec, lru, zone, -delta);
return;
}
@@ -262,8 +260,6 @@ index 65320d2b8f60..58aabb1ba020 100644
}
static inline bool lru_gen_add_page(struct lruvec *lruvec, struct page *page, bool reclaiming)
-diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
-index 0c39f72184d0..fce8945c507c 100644
--- a/include/linux/mmzone.h
+++ b/include/linux/mmzone.h
@@ -327,6 +327,28 @@ enum lruvec_flags {
@@ -328,8 +324,6 @@ index 0c39f72184d0..fce8945c507c 100644
};
void lru_gen_init_lruvec(struct lruvec *lruvec);
-diff --git a/include/linux/page-flags-layout.h b/include/linux/page-flags-layout.h
-index 240905407a18..7d79818dc065 100644
--- a/include/linux/page-flags-layout.h
+++ b/include/linux/page-flags-layout.h
@@ -106,7 +106,10 @@
@@ -344,8 +338,6 @@ index 240905407a18..7d79818dc065 100644
#endif
#endif /* _LINUX_PAGE_FLAGS_LAYOUT */
-diff --git a/kernel/bounds.c b/kernel/bounds.c
-index 5ee60777d8e4..b529182e8b04 100644
--- a/kernel/bounds.c
+++ b/kernel/bounds.c
@@ -24,8 +24,10 @@ int main(void)
@@ -359,8 +351,6 @@ index 5ee60777d8e4..b529182e8b04 100644
#endif
/* End of constants */
-diff --git a/mm/Kconfig b/mm/Kconfig
-index 0eeb27397884..62433f3cd7ae 100644
--- a/mm/Kconfig
+++ b/mm/Kconfig
@@ -897,6 +897,7 @@ config IO_MAPPING
@@ -388,11 +378,9 @@ index 0eeb27397884..62433f3cd7ae 100644
source "mm/damon/Kconfig"
endmenu
-diff --git a/mm/swap.c b/mm/swap.c
-index 0bdc96661fb6..5d227577b609 100644
--- a/mm/swap.c
+++ b/mm/swap.c
-@@ -389,6 +389,40 @@ static void __lru_cache_activate_page(struct page *page)
+@@ -389,6 +389,40 @@ static void __lru_cache_activate_page(st
local_unlock(&lru_pvecs.lock);
}
@@ -433,7 +421,7 @@ index 0bdc96661fb6..5d227577b609 100644
/*
* Mark a page as having seen activity.
*
-@@ -403,6 +437,11 @@ void mark_page_accessed(struct page *page)
+@@ -403,6 +437,11 @@ void mark_page_accessed(struct page *pag
{
page = compound_head(page);
@@ -445,11 +433,9 @@ index 0bdc96661fb6..5d227577b609 100644
if (!PageReferenced(page)) {
SetPageReferenced(page);
} else if (PageUnevictable(page)) {
-diff --git a/mm/vmscan.c b/mm/vmscan.c
-index 41826fe17eb3..932abd24c1b3 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
-@@ -1142,9 +1142,11 @@ static int __remove_mapping(struct address_space *mapping, struct page *page,
+@@ -1142,9 +1142,11 @@ static int __remove_mapping(struct addre
if (PageSwapCache(page)) {
swp_entry_t swap = { .val = page_private(page) };
@@ -462,7 +448,7 @@ index 41826fe17eb3..932abd24c1b3 100644
__delete_from_swap_cache(page, swap, shadow);
xa_unlock_irq(&mapping->i_pages);
put_swap_page(page, swap);
-@@ -2502,6 +2504,9 @@ static void prepare_scan_count(pg_data_t *pgdat, struct scan_control *sc)
+@@ -2502,6 +2504,9 @@ static void prepare_scan_count(pg_data_t
unsigned long file;
struct lruvec *target_lruvec;
@@ -472,7 +458,7 @@ index 41826fe17eb3..932abd24c1b3 100644
target_lruvec = mem_cgroup_lruvec(sc->target_mem_cgroup, pgdat);
/*
-@@ -2827,6 +2832,17 @@ static bool can_age_anon_pages(struct pglist_data *pgdat,
+@@ -2827,6 +2832,17 @@ static bool can_age_anon_pages(struct pg
* shorthand helpers
******************************************************************************/
@@ -490,7 +476,7 @@ index 41826fe17eb3..932abd24c1b3 100644
#define for_each_gen_type_zone(gen, type, zone) \
for ((gen) = 0; (gen) < MAX_NR_GENS; (gen)++) \
for ((type) = 0; (type) < ANON_AND_FILE; (type)++) \
-@@ -2852,6 +2868,745 @@ static struct lruvec __maybe_unused *get_lruvec(struct mem_cgroup *memcg, int ni
+@@ -2852,6 +2868,745 @@ static struct lruvec __maybe_unused *get
return pgdat ? &pgdat->__lruvec : NULL;
}
@@ -1253,7 +1239,7 @@ index 41826fe17eb3..932abd24c1b3 100644
#endif /* CONFIG_LRU_GEN */
static void shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc)
-@@ -2907,6 +3672,11 @@ static void shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc)
+@@ -2907,6 +3672,11 @@ static void shrink_lruvec(struct lruvec
bool proportional_reclaim;
struct blk_plug plug;
@@ -1265,7 +1251,7 @@ index 41826fe17eb3..932abd24c1b3 100644
get_scan_count(lruvec, sc, nr);
/* Record the original scan target for proportional adjustments later */
-@@ -3372,6 +4142,9 @@ static void snapshot_refaults(struct mem_cgroup *target_memcg, pg_data_t *pgdat)
+@@ -3372,6 +4142,9 @@ static void snapshot_refaults(struct mem
struct lruvec *target_lruvec;
unsigned long refaults;
@@ -1275,7 +1261,7 @@ index 41826fe17eb3..932abd24c1b3 100644
target_lruvec = mem_cgroup_lruvec(target_memcg, pgdat);
refaults = lruvec_page_state(target_lruvec, WORKINGSET_ACTIVATE_ANON);
target_lruvec->refaults[0] = refaults;
-@@ -3736,12 +4509,16 @@ unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *memcg,
+@@ -3736,12 +4509,16 @@ unsigned long try_to_free_mem_cgroup_pag
}
#endif
@@ -1294,7 +1280,7 @@ index 41826fe17eb3..932abd24c1b3 100644
if (!can_age_anon_pages(pgdat, sc))
return;
-@@ -4058,12 +4835,11 @@ static int balance_pgdat(pg_data_t *pgdat, int order, int highest_zoneidx)
+@@ -4058,12 +4835,11 @@ restart:
sc.may_swap = !nr_boost_reclaim;
/*
@@ -1311,11 +1297,9 @@ index 41826fe17eb3..932abd24c1b3 100644
/*
* If we're getting trouble reclaiming, start doing writepage
-diff --git a/mm/workingset.c b/mm/workingset.c
-index 880d882f3325..aeba62cebf8c 100644
--- a/mm/workingset.c
+++ b/mm/workingset.c
-@@ -187,7 +187,6 @@ static unsigned int bucket_order __read_mostly;
+@@ -187,7 +187,6 @@ static unsigned int bucket_order __read_
static void *pack_shadow(int memcgid, pg_data_t *pgdat, unsigned long eviction,
bool workingset)
{
@@ -1323,7 +1307,7 @@ index 880d882f3325..aeba62cebf8c 100644
eviction &= EVICTION_MASK;
eviction = (eviction << MEM_CGROUP_ID_SHIFT) | memcgid;
eviction = (eviction << NODES_SHIFT) | pgdat->node_id;
-@@ -212,10 +211,107 @@ static void unpack_shadow(void *shadow, int *memcgidp, pg_data_t **pgdat,
+@@ -212,10 +211,107 @@ static void unpack_shadow(void *shadow,
*memcgidp = memcgid;
*pgdat = NODE_DATA(nid);
@@ -1432,7 +1416,7 @@ index 880d882f3325..aeba62cebf8c 100644
/**
* workingset_age_nonresident - age non-resident entries as LRU ages
* @lruvec: the lruvec that was aged
-@@ -264,10 +360,14 @@ void *workingset_eviction(struct page *page, struct mem_cgroup *target_memcg)
+@@ -264,10 +360,14 @@ void *workingset_eviction(struct page *p
VM_BUG_ON_PAGE(page_count(page), page);
VM_BUG_ON_PAGE(!PageLocked(page), page);
@@ -1447,7 +1431,7 @@ index 880d882f3325..aeba62cebf8c 100644
workingset_age_nonresident(lruvec, thp_nr_pages(page));
return pack_shadow(memcgid, pgdat, eviction, PageWorkingset(page));
}
-@@ -296,7 +396,13 @@ void workingset_refault(struct page *page, void *shadow)
+@@ -296,7 +396,13 @@ void workingset_refault(struct page *pag
bool workingset;
int memcgid;
@@ -1461,6 +1445,3 @@ index 880d882f3325..aeba62cebf8c 100644
rcu_read_lock();
/*
---
-2.40.0
-