Re: [RFC v2 16/21] mm: thp: add THP_SPLIT_PMD_FAILED counter
From: Usama Arif
Date: Thu Feb 26 2026 - 09:29:33 EST
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;