On 26/02/2026 11:23, Usama Arif wrote:
> diff --git a/mm/rmap.c b/mm/rmap.c
> index 2519d579bc1d8..2dae46fff08ae 100644
> --- a/mm/rmap.c
> +++ b/mm/rmap.c
> @@ -2067,8 +2067,10 @@ static bool try_to_unmap_one(struct folio *folio,
> struct vm_area_struct *vma,
> pgtable_t pgtable = prealloc_pte;
>
> prealloc_pte = NULL;
> +
> if (!arch_needs_pgtable_deposit() && !pgtable &&
> vma_is_anonymous(vma)) {
> + count_vm_event(THP_SPLIT_PMD_FAILED);
> page_vma_mapped_walk_done(&pvmw);
> ret = false;
> break;
> @@ -2471,6 +2473,7 @@ static bool try_to_migrate_one(struct folio *folio,
> struct vm_area_struct *vma,
> prealloc_pte = NULL;
> if (!arch_needs_pgtable_deposit() && !pgtable &&
> vma_is_anonymous(vma)) {
> + count_vm_event(THP_SPLIT_PMD_FAILED);
> page_vma_mapped_walk_done(&pvmw);
> ret = false;
> break;
This will need to be guarded by CONFIG_TRANSPARENT_HUGEPAGE. Will need below
diff in next series..
diff --git a/mm/rmap.c b/mm/rmap.c
index 2dae46fff08ae..9d74600951cf6 100644
--- a/mm/rmap.c
+++ b/mm/rmap.c
@@ -2070,7 +2070,9 @@ static bool try_to_unmap_one(struct folio *folio, struct
vm_area_struct *vma,
if (!arch_needs_pgtable_deposit() && !pgtable &&
vma_is_anonymous(vma)) {
+#if defined(CONFIG_TRANSPARENT_HUGEPAGE)
count_vm_event(THP_SPLIT_PMD_FAILED);
+#endif
page_vma_mapped_walk_done(&pvmw);
ret = false;
break;
@@ -2473,7 +2475,9 @@ static bool try_to_migrate_one(struct folio *folio,
struct vm_area_struct *vma,
prealloc_pte = NULL;
if (!arch_needs_pgtable_deposit() && !pgtable &&
vma_is_anonymous(vma)) {
+#if defined(CONFIG_TRANSPARENT_HUGEPAGE)
count_vm_event(THP_SPLIT_PMD_FAILED);
+#endif
page_vma_mapped_walk_done(&pvmw);
ret = false;
break;
- [RFC v2 09/21] mm: handle walk_page_range() failure from THP sp... Usama Arif
- [RFC v2 08/21] mm: thp: handle split failure in follow_pmd_mask... Usama Arif
- [RFC v2 10/21] mm: thp: handle split failure in mremap move_pag... Usama Arif
- [RFC v2 11/21] mm: thp: handle split failure in userfaultfd mov... Usama Arif
- [RFC v2 12/21] mm: thp: handle split failure in device migratio... Usama Arif
- [RFC v2 13/21] mm: huge_mm: Make sure all split_huge_pmd calls ... Usama Arif
- [RFC v2 14/21] mm: thp: allocate PTE page tables lazily at spli... Usama Arif
- [RFC v2 15/21] mm: thp: remove pgtable_trans_huge_{deposit/with... Usama Arif
- [RFC v2 16/21] mm: thp: add THP_SPLIT_PMD_FAILED counter Usama Arif
- Re: [RFC v2 16/21] mm: thp: add THP_SPLIT_PMD_FAILED count... Usama Arif
- [RFC v2 17/21] selftests/mm: add THP PMD split test infrastruct... Usama Arif
- [RFC v2 18/21] selftests/mm: add partial_mprotect test for chan... Usama Arif
- [RFC v2 19/21] selftests/mm: add partial_mlock test Usama Arif
- [RFC v2 20/21] selftests/mm: add partial_mremap test for move_p... Usama Arif
- [RFC v2 21/21] selftests/mm: add madv_dontneed_partial test Usama Arif
- Re: [RFC v2 00/21] mm: thp: lazy PTE page table allocation at P... Nico Pache
