Re: [RFC PATCH 1/2] mm/pgtable: use ptdesc for pmd_huge_pte

David Hildenbrand (Red Hat)
2025-12-18T10:02:13Z

On 12/15/25 01:53, Alex Shi wrote:
>
>
> On 2025/12/14 14:55, alexs@kernel.org wrote:
>> From: Alex Shi<alexs@kernel.org>
>>
>> 'pmd_huge_pte' are pgtable variables, but used 'pgtable->lru'
>> instead of pgtable->pt_list in pgtable_trans_huge_deposit/withdraw
>> functions, That's a bit weird.
>>
>> So let's convert the pgtable_t to precise 'struct ptdesc *' for
>> ptdesc->pmd_huge_pte, and mm->pmd_huge_pte, then convert function
>> pgtable_trans_huge_deposit() to use correct ptdesc.
>>
>> This convertion works for most of arch, but failed on s390/sparc/powerpc
>> since they use 'pte_t *' as pgtable_t. Is there any suggestion for these
>> archs? If we could have a solution, we may remove the pgtable_t for other
>> archs.
>
> If s390/sparc/powerpc can't align pgtable_t with others, we have to keep
> the pgtable_t to bridge different types. But we could take step to
> change pgtable_t as 'struct ptdesc *' in other archs. That could
> simplify and clarify related code too, isn't it?

Not sure. s390 and friends squeeze multiple actual page tables into a
single page and that single page has a single ptdesc.

I was rather hoping that we can make the code more consistent by making
everybody just point at the start of the page table? (that is, make it
consistent for all, not use ptdesc for some and pte_t * for others)

--
Cheers

David