mm-damon-vaddr-consistently-use-only-pmd_entry-for-damos_migrate.patch removed from -mm tree
The quilt patch titled
Subject: mm/damon/vaddr: consistently use only pmd_entry for damos_migrate
has been removed from the -mm tree. Its filename was
mm-damon-vaddr-consistently-use-only-pmd_entry-for-damos_migrate.patch
This patch was dropped because it was merged into the mm-stable branch of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
------------------------------------------------------
From: SeongJae Park <[email protected]>
Subject: mm/damon/vaddr: consistently use only pmd_entry for damos_migrate
Date: Wed, 12 Nov 2025 07:41:08 -0800
For page table walks, it is usual [1] to have only one pmd entry function. The vaddr.c code for DAMOS_MIGRATE_{HOT,COLD} is not following the pattern. Instead, it uses both pmd and pte entry functions without a special reason. Refactor it to use only the pmd entry function, to make the code under mm/ more consistent.
---
mm/damon/vaddr.c | 88 +++++++++++++++++++-------------------------- 1 file changed, 39 insertions(+), 49 deletions(-)
mm/damon/vaddr.c renamed from mm/damon/vaddr.c~mm-damon-vaddr-consistently-use-only-pmd_entry-for-damos_migrate +39 -49
@@ -697,7 +697,6 @@ isolate:list_add (&folio->lru, &migration_lists[i]); } -#ifdef CONFIG_TRANSPARENT_HUGEPAGE static int damos_va_migrate_pmd_entry (pmd_t *pmd,unsigned long addr,unsigned long next,struct mm_walk *walk) {
@@ -707,58 +706,49 @@ static int damos_va_migrate_pmd_entry(pmstruct damos_migrate_dests *dests = &s->migrate_dests;struct folio *folio;spinlock_t *ptl; -pmd_t pmde; - - ptl =pmd_lock (walk->mm, pmd); - pmde =pmdp_get (pmd); - -if (!pmd_present (pmde) || !pmd_trans_huge (pmde)) - goto unlock; - -/* Tell page walk code to not split the PMD */ - walk->action =ACTION_CONTINUE ; - - folio =vm_normal_folio_pmd (walk->vma, addr, pmde); -if (!folio) - goto unlock; - -if (damos_va_filter_out (s, folio, walk->vma, addr,NULL , pmd)) - goto unlock; - -damos_va_migrate_dests_add (folio, walk->vma, addr, dests, - migration_lists); - -unlock: -spin_unlock (ptl); -return 0 ; -} -#else -#define damos_va_migrate_pmd_entry NULL -#endif /* CONFIG_TRANSPARENT_HUGEPAGE */ - -static int damos_va_migrate_pte_entry (pte_t *pte,unsigned long addr, -unsigned long next,struct mm_walk *walk) -{ -struct damos_va_migrate_private *priv = walk->private; -struct list_head *migration_lists = priv->migration_lists; -struct damos *s = priv->scheme; -struct damos_migrate_dests *dests = &s->migrate_dests; -struct folio *folio; -pte_t ptent; - - ptent =ptep_get (pte); -if (pte_none (ptent) || !pte_present (ptent)) -return 0 ; +pte_t *start_pte, *pte, ptent; +int nr; - folio =vm_normal_folio (walk->vma, addr, ptent); -if (!folio) +#ifdef CONFIG_TRANSPARENT_HUGEPAGE + ptl =pmd_trans_huge_lock (pmd, walk->vma); +if (ptl) { +pmd_t pmde =pmdp_get (pmd); + +if (!pmd_present (pmde)) + goto huge_out; + folio =vm_normal_folio_pmd (walk->vma, addr, pmde); +if (!folio) + goto huge_out; +if (damos_va_filter_out (s, folio, walk->vma, addr,NULL , pmd)) + goto huge_out; +damos_va_migrate_dests_add (folio, walk->vma, addr, dests, + migration_lists); +huge_out: +spin_unlock (ptl);return 0 ; + } +#endif /* CONFIG_TRANSPARENT_HUGEPAGE */ -if (damos_va_filter_out (s, folio, walk->vma, addr, pte,NULL )) + start_pte = pte =pte_offset_map_lock (walk->mm, pmd, addr, &ptl); +if (!pte)return 0 ; -damos_va_migrate_dests_add (folio, walk->vma, addr, dests, - migration_lists); +for (; addr < next; pte += nr, addr += nr *PAGE_SIZE ) { + nr =1 ; + ptent =ptep_get (pte); + +if (pte_none (ptent) || !pte_present (ptent)) +continue ; + folio =vm_normal_folio (walk->vma, addr, ptent); +if (!folio) +continue ; +if (damos_va_filter_out (s, folio, walk->vma, addr, pte,NULL )) +return 0 ; +damos_va_migrate_dests_add (folio, walk->vma, addr, dests, + migration_lists); + nr =folio_nr_pages (folio); + } +pte_unmap_unlock (start_pte, ptl);return 0 ; }
@@ -824,7 +814,7 @@ static unsigned long damos_va_migrate(ststruct damos_migrate_dests *dests = &s->migrate_dests;struct mm_walk_ops walk_ops = { .pmd_entry = damos_va_migrate_pmd_entry, - .pte_entry = damos_va_migrate_pte_entry, + .pte_entry =NULL , .walk_lock =PGWALK_RDLOCK , };
_
Patches currently in -mm which might be from [email protected] are