From f86c79eb86ad278c48ac976d9d7d08fd36115dd7 Mon Sep 17 00:00:00 2001 From: Charan Teja Kalla Date: Wed, 9 Aug 2023 13:35:44 +0530 Subject: [PATCH] FROMGIT: Multi-gen LRU: skip CMA pages when they are not eligible This patch is based on the commit 5da226dbfce3("mm: skip CMA pages when they are not available") which skips cma pages reclaim when they are not eligible for the current allocation context. In mglru, such pages are added to the tail of the immediate generation to maintain better LRU order, which is unlike the case of conventional LRU where such pages are directly added to the head of the LRU list(akin to adding to head of the youngest generation in mglru). No observable issue without this patch on MGLRU, but logically it make sense to skip the CMA page reclaim when those pages can't be satisfied for the current allocation context. Link: https://lkml.kernel.org/r/1691568344-13475-1-git-send-email-quic_charante@quicinc.com Change-Id: I586415b3e3a92da23f3e79b9d63802a2ced03432 Signed-off-by: Charan Teja Kalla Reviewed-by: Kalesh Singh Cc: David Hildenbrand Cc: Suren Baghdasaryan Cc: Yu Zhao Cc: Zhaoyang Huang Signed-off-by: Andrew Morton (cherry picked from commit 75d52d9304ef5b268eb798b0c679815290a0fc83 https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-unstable) Bug: 288383787 Bug: 291719697 Signed-off-by: Kalesh Singh --- mm/vmscan.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/vmscan.c b/mm/vmscan.c index 5d2260bbd04f..85846ee87ca7 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -4869,7 +4869,7 @@ static bool sort_folio(struct lruvec *lruvec, struct folio *folio, struct scan_c } /* ineligible */ - if (zone > sc->reclaim_idx) { + if (zone > sc->reclaim_idx || skip_cma(folio, sc)) { gen = folio_inc_gen(lruvec, folio, false); list_move_tail(&folio->lru, &lrugen->folios[gen][type][zone]); return true;