From cf3b5e3a2f36371dbf3a05d81aa5f3f2f5e9ca75 Mon Sep 17 00:00:00 2001 From: Sooyong Suk Date: Wed, 10 Jul 2024 11:20:55 +0900 Subject: [PATCH] ANDROID: mm: add vendor hook in vmscan.c Add vendor hook to skip rebalance anon lru list. Bug: 351175506 Change-Id: Ib4e56976d892b96f6c319a1b69d23d71ac7ce993 Signed-off-by: Sooyong Suk --- drivers/android/vendor_hooks.c | 1 + include/trace/hooks/vmscan.h | 3 +++ mm/vmscan.c | 4 ++++ 3 files changed, 8 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 610d996cd217..2d485af5ac73 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -275,3 +275,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_async_psi_bypass); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cma_alloc_retry); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_smaps_pte_entry); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_smap); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rebalance_anon_lru_bypass); diff --git a/include/trace/hooks/vmscan.h b/include/trace/hooks/vmscan.h index 66d0f3b279a8..357d1bb1aacb 100644 --- a/include/trace/hooks/vmscan.h +++ b/include/trace/hooks/vmscan.h @@ -40,6 +40,9 @@ DECLARE_HOOK(android_vh_should_memcg_bypass, DECLARE_HOOK(android_vh_do_shrink_slab, TP_PROTO(struct shrinker *shrinker, long *freeable), TP_ARGS(shrinker, freeable)); +DECLARE_HOOK(android_vh_rebalance_anon_lru_bypass, + TP_PROTO(bool *bypass), + TP_ARGS(bypass)); #endif /* _TRACE_HOOK_VMSCAN_H */ /* This part must be outside protection */ #include diff --git a/mm/vmscan.c b/mm/vmscan.c index de5cc20847b5..0494bee69ea5 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -5712,6 +5712,7 @@ static void shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc) unsigned long nr_to_reclaim = sc->nr_to_reclaim; bool proportional_reclaim; struct blk_plug plug; + bool bypass = false; if (lru_gen_enabled() && !root_reclaim(sc)) { lru_gen_shrink_lruvec(lruvec, sc); @@ -5809,6 +5810,9 @@ static void shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc) } blk_finish_plug(&plug); sc->nr_reclaimed += nr_reclaimed; + trace_android_vh_rebalance_anon_lru_bypass(&bypass); + if (bypass) + return; /* * Even if we did not try to evict anon pages at all, we want to