[PATCH v2 1/2] mm/huge_memory.c: skip zero-page remapping when underused THP shrinker is disabled

From: Nico Pache (Red Hat)

Date: Sun Oct 25 2026 - 13:44:58 EST


The zero-page remapping in __folio_split() was added to support the
underused THP shrinker. When the shrinker is disabled via
shrink_underused, gate TTU_USE_SHARED_ZEROPAGE on split_underused_thp
to avoid scanning subpages for zero content unnecessarily.

Suggested-by: David Hildenbrand <david@xxxxxxxxxx>
Fixes: b1f202060afe ("mm: remap unused subpages to shared zeropage when splitting isolated thp")
Signed-off-by: Nico Pache <nico.pache@xxxxxxxxx>
---
mm/huge_memory.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index bd44d58e8684..2d56d1bff0ea 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -4104,7 +4104,8 @@ static int __folio_freeze_split_anon(struct folio *folio,
out_no_split:
local_irq_enable();
if (anon_vma) {
- if (!ret && !folio_is_device_private(folio))
+ if (!ret && !folio_is_device_private(folio) &&
+ split_underused_thp)
ttu_flags = TTU_USE_SHARED_ZEROPAGE;
remap_anon_folio(folio, 1 << old_order, ttu_flags);
}

--
2.56.0