Re: [PATCH 06/13] mm: add PMD swap entry splitting support

From: Usama Arif

Date: Tue Jun 02 2026 - 08:59:24 EST




On 30/05/2026 11:52, Dev Jain wrote:
>
>
> On 27/04/26 3:31 pm, Usama Arif wrote:
>> Add a swap branch in __split_huge_pmd_locked() that splits a PMD swap
>> entry into 512 PTE swap entries. Unlike migration splits, no folio
>> reference is needed because swap entries point to swap slots, not
>> pages. Each PTE inherits the correct sub-slot offset and preserves
>> soft_dirty, uffd_wp, and exclusive flags.
>>
>> This branch is reached from the explicit __split_huge_pmd() callers
>> that hit a non-present PMD: partial-range mprotect / munmap, the
>> wp_huge_pmd() PMD-COW fallback, and the swap-in / swapoff fallbacks
>> added in later patches when the cached folio is no longer PMD-sized.
>> page_vma_mapped_walk() does not iterate PMD swap entries, so
>> try_to_unmap_one() and try_to_migrate_one() do not reach this branch
>> and freeze=true cannot occur in this branch today. page and folio
>> are therefore left uninitialized in the swap branch; a
>> VM_WARN_ON_ONCE(freeze) catches any future caller that breaks this
>> invariant before the freeze path dereferences page_to_pfn(page + i)
>> or put_page(page).
>>
>> Signed-off-by: Usama Arif <usama.arif@xxxxxxxxx>
>> ---
>> include/linux/leafops.h | 6 +++---
>> mm/huge_memory.c | 27 ++++++++++++++++++++++++++-
>> 2 files changed, 29 insertions(+), 4 deletions(-)
>>
>> diff --git a/include/linux/leafops.h b/include/linux/leafops.h
>> index 79e04db45bfb..2c0dfce6d0f0 100644
>> --- a/include/linux/leafops.h
>> +++ b/include/linux/leafops.h
>> @@ -657,9 +657,9 @@ static inline bool pmd_is_swap_entry(pmd_t pmd)
>> * pmd_is_valid_softleaf() - Is this PMD entry a valid softleaf entry?
>> * @pmd: PMD entry.
>> *
>> - * PMD leaf entries are valid only if they are device private or migration
>> - * entries. This function asserts that a PMD leaf entry is valid in this
>> - * respect.
>> + * PMD leaf entries are valid only if they are device private, migration,
>> + * or swap entries. This function asserts that a PMD leaf entry is valid
>> + * in this respect.
>> *
>
> The commentary change can go in the previous patch right?
>

Will do! Thanks