Re: [PATCH Resend] mm: Refine __{pgd,p4d,pud,pmd,pte}_alloc_one_*() about HIGHMEM
From: Lance Yang
Date: Fri Nov 07 2025 - 09:17:59 EST
On 2025/11/7 20:50, Arnd Bergmann wrote:
On Fri, Nov 7, 2025, at 12:44, Lance Yang wrote:
From: Lance Yang <lance.yang@xxxxxxxxx>
On Fri, 7 Nov 2025 17:59:22 +0800, Huacai Chen wrote:
*/
static inline pte_t *__pte_alloc_one_kernel_noprof(struct mm_struct *mm)
{
- struct ptdesc *ptdesc = pagetable_alloc_noprof(GFP_PGTABLE_KERNEL &
- ~__GFP_HIGHMEM, 0);
+ struct ptdesc *ptdesc = pagetable_alloc_noprof(GFP_PGTABLE_KERNEL, 0);
I looked into the history and it seems you are right. This defensive pattern
was likely introduced by Vishal Moola in commit c787ae5[1].
Right, so not even so long ago, so we need to make sure we agree
on a direction and don't send opposite patches in the name of
cleanups.
Yes, better to get on the same page now than to have conflicting
cleanups down the line ;)
After this cleanup, would it make sense to add a BUILD_BUG_ON() somewhere
to check that __GFP_HIGHMEM is not present in GFP_PGTABLE_KERNEL and
GFP_PGTABLE_USER? This would prevent any future regression ;)
Just a thought ...
I think we can go either way here, but I'd tend towards not
adding more checks but instead removing any mention of __GFP_HIGHMEM
that we can show is either pointless or can be avoided, with
Makes sense to me :)
the goal of having only a small number of actual highmem
allocations remaining in places we do care about (normal
page cache, zram, possibly huge pages).
Right! That's the ideal end state. Making the code cleaner and
the intention clearer ;p
Cheers,
Lance