[PATCH v4 0/3] Optimize folio split in memory failure

From: Zi Yan

Date: Wed Oct 29 2025 - 21:40:27 EST


Hi all,

This patchset is a follow-up of "[PATCH v3] mm/huge_memory: do not change
split_huge_page*() target order silently."[1] and
[PATCH v4] mm/huge_memory: preserve PG_has_hwpoisoned if a folio is split
to >0 order[2], since both are separated out as hotfixes. It improves how
memory failure code handles large block size(LBS) folios with
min_order_for_split() > 0. By splitting a large folio containing HW
poisoned pages to min_order_for_split(), the after-split folios without
HW poisoned pages could be freed for reuse. To achieve this, folio split
code needs to set has_hwpoisoned on after-split folios containing HW
poisoned pages and it is done in the hotfix in [2].

This patchset includes:
1. A patch adds split_huge_page_to_order(),
2. Patch 2 and Patch 3 of "[PATCH v2 0/3] Do not change split folio target
order"[3],

This patchset is based on mm-new.

Changelog
===
>From V3[4]:
1. Patch, mm/huge_memory: preserve PG_has_hwpoisoned if a folio is split
to >0 order, is sent separately as a hotfix[2].
2. made newly added new_order const in memory_failure() and
soft_offline_in_use_page().
3. explained in a comment why in memory_failure() after-split >0 order
folios are still treated as if the split failed.


>From V2[3]:
1. Patch 1 is sent separately as a hotfix[1].
2. set has_hwpoisoned on after-split folios if any contains HW poisoned
pages.
3. added split_huge_page_to_order().
4. added a missing newline after variable decalaration.
5. added /* release= */ to try_to_split_thp_page().
6. restructured try_to_split_thp_page() in memory_failure().
7. fixed a typo.
8. reworded the comment in soft_offline_in_use_page() for better
understanding.


Link: https://lore.kernel.org/all/20251017013630.139907-1-ziy@xxxxxxxxxx/ [1]
Link: https://lore.kernel.org/all/20251023030521.473097-1-ziy@xxxxxxxxxx/ [2]
Link: https://lore.kernel.org/all/20251016033452.125479-1-ziy@xxxxxxxxxx/ [3]
Link: https://lore.kernel.org/all/20251022033531.389351-1-ziy@xxxxxxxxxx/ [4]

Zi Yan (3):
mm/huge_memory: add split_huge_page_to_order()
mm/memory-failure: improve large block size folio handling.
mm/huge_memory: fix kernel-doc comments for folio_split() and related.

include/linux/huge_mm.h | 22 ++++++++++++++++------
mm/huge_memory.c | 27 +++++++++++++++------------
mm/memory-failure.c | 31 +++++++++++++++++++++++++++----
3 files changed, 58 insertions(+), 22 deletions(-)

--
2.43.0