Thread (30 messages) 30 messages, 6 authors, 2025-07-11

Re: [PATCH v8 02/15] introduce khugepaged_collapse_single_pmd to unify khugepaged and madvise_collapse

From: Baolin Wang <baolin.wang@linux.alibaba.com>
Date: 2025-07-04 03:50:56
Also in: linux-doc, linux-mm, lkml


On 2025/7/2 13:57, Nico Pache wrote:
quoted hunk ↗ jump to hunk
The khugepaged daemon and madvise_collapse have two different
implementations that do almost the same thing.

Create khugepaged_collapse_single_pmd to increase code reuse and create an
entry point these two users.

Refactor madvise_collapse and khugepaged_scan_mm_slot to use the new
khugepaged_collapse_single_pmd function. This introduces a minor
behavioral change that is most likely an undiscovered bug. The current
implementation of khugepaged tests khugepaged_test_exit_or_disable
before calling khugepaged_pte_mapped_thp, but we weren't doing it in the
madvise_collapse case. By unifying these two callers madvise_collapse
now also performs this check.

Reviewed-by: Baolin Wang <baolin.wang@linux.alibaba.com>
Signed-off-by: Nico Pache <npache@redhat.com>
---
  mm/khugepaged.c | 95 +++++++++++++++++++++++++------------------------
  1 file changed, 49 insertions(+), 46 deletions(-)
diff --git a/mm/khugepaged.c b/mm/khugepaged.c
index f27fe7ca9b86..bf69e81a3d82 100644
--- a/mm/khugepaged.c
+++ b/mm/khugepaged.c
@@ -2354,6 +2354,50 @@ static int khugepaged_scan_file(struct mm_struct *mm, unsigned long addr,
  	return result;
  }
  
+/*
+ * Try to collapse a single PMD starting at a PMD aligned addr, and return
+ * the results.
+ */
+static int khugepaged_collapse_single_pmd(unsigned long addr,
+				   struct vm_area_struct *vma, bool *mmap_locked,
+				   struct collapse_control *cc)
+{
+	int result = SCAN_FAIL;
+	struct mm_struct *mm = vma->vm_mm;
+
+	if (IS_ENABLED(CONFIG_SHMEM) && !vma_is_anonymous(vma)) {
Seems you still forgot to drop 'IS_ENABLED(CONFIG_SHMEM)' :)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help