summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVernon Yang <yanglincheng@kylinos.cn>2026-02-07 16:16:13 +0800
committerAndrew Morton <akpm@linux-foundation.org>2026-04-05 13:53:02 -0700
commit80a4bcac69348e32ccb5ab46401ac2a416fcb576 (patch)
tree1b1d047c18ec84294def0f76bc65352e38a85634
parent15c578d0dc9952c634f59fcdf9f75be0e42ca834 (diff)
downloadlinux-80a4bcac69348e32ccb5ab46401ac2a416fcb576.tar.gz
linux-80a4bcac69348e32ccb5ab46401ac2a416fcb576.zip
mm: khugepaged: set to next mm direct when mm has MMF_DISABLE_THP_COMPLETELY
When an mm with the MMF_DISABLE_THP_COMPLETELY flag is detected during scanning, directly set khugepaged_scan.mm_slot to the next mm_slot, reduce redundant operation. Without this patch, entering khugepaged_scan_mm_slot() next time, we will set khugepaged_scan.mm_slot to the next mm_slot. With this patch, we will directly set khugepaged_scan.mm_slot to the next mm_slot. Link: https://lkml.kernel.org/r/20260207081613.588598-6-vernon2gm@gmail.com Signed-off-by: Vernon Yang <yanglincheng@kylinos.cn> Acked-by: David Hildenbrand (Red Hat) <david@kernel.org> Reviewed-by: Lance Yang <lance.yang@linux.dev> Reviewed-by: Dev Jain <dev.jain@arm.com> Reviewed-by: Barry Song <baohua@kernel.org> Cc: Baolin Wang <baolin.wang@linux.alibaba.com> Cc: "Liam R. Howlett" <Liam.Howlett@oracle.com> Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> Cc: Nico Pache <npache@redhat.com> Cc: Ryan Roberts <ryan.roberts@arm.com> Cc: Zi Yan <ziy@nvidia.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
-rw-r--r--mm/khugepaged.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/mm/khugepaged.c b/mm/khugepaged.c
index 1dd3cfca610d..17ab58681032 100644
--- a/mm/khugepaged.c
+++ b/mm/khugepaged.c
@@ -2508,9 +2508,9 @@ breakouterloop_mmap_lock:
VM_BUG_ON(khugepaged_scan.mm_slot != slot);
/*
* Release the current mm_slot if this mm is about to die, or
- * if we scanned all vmas of this mm.
+ * if we scanned all vmas of this mm, or THP got disabled.
*/
- if (hpage_collapse_test_exit(mm) || !vma) {
+ if (hpage_collapse_test_exit_or_disable(mm) || !vma) {
/*
* Make sure that if mm_users is reaching zero while
* khugepaged runs here, khugepaged_exit will find