Re: [PATCH] mm/pgtable: convert pgtable_t to ptdesc pointer
Mike Rapoport <[email protected]> Wed, 7 Jan 2026 11:05:42 +0200
| Newsgroups | org.kernel.vger.linux-hexagon,dev.linux.lists.loongarch,org.infradead.lists.linux-riscv,org.infradead.lists.linux-snps-arc,org.infradead.lists.linux-um,org.kernel.vger.linux-alpha,org.kernel.vger.linux-arch,org.kernel.vger.linux-csky,org.kernel.vger.linux-kernel,org.kernel.vger.linux-m68k,org.kernel.vger.linux-mips,org.kernel.vger.linux-openrisc,org.kernel.vger.linux-parisc,org.kernel.vger.linux-sh,org.kvack.linux-mm |
|---|---|
| Message-ID | <[email protected]> |
On Wed, Jan 07, 2026 at 02:46:35PM +0800, [email protected] wrote: > From: Alex Shi <[email protected]> > > After struct ptdesc introduced, pgtable_t should used it instead of old > struct page pointer. The only thing in the way for this change is just > pgtable->lru in pgtable_trans_huge_deposit/withdraw. > > Let's convert them into ptdesc and use struct ptdesc* as pgtable_t. > Thanks testing support from kernel test robot <[email protected]> > > Signed-off-by: Alex Shi <[email protected]> > --- ... > diff --git a/arch/arm/include/asm/pgalloc.h b/arch/arm/include/asm/pgalloc.h > index a17f01235c29..1a3484c2df4c 100644 > --- a/arch/arm/include/asm/pgalloc.h > +++ b/arch/arm/include/asm/pgalloc.h > @@ -96,12 +96,12 @@ pte_alloc_one(struct mm_struct *mm) > { > struct page *pte; > > - pte = __pte_alloc_one(mm, GFP_PGTABLE_USER | PGTABLE_HIGHMEM); > + pte = ptdesc_page(__pte_alloc_one(mm, GFP_PGTABLE_USER | PGTABLE_HIGHMEM)); When ptdesc will be separated from struct page, ptdesc_page() would fail if the allocation failed. This line should be split into something like struct ptdesc *ptdesc = __pte_alloc_one(...); if (!ptesc) return NULL; pte = ptdesc_page(ptdesc); > if (!pte) > return NULL; > if (!PageHighMem(pte)) > clean_pte_table(page_address(pte)); > - return pte; > + return page_ptdesc(pte); > } > > static inline void __pmd_populate(pmd_t *pmdp, phys_addr_t pte, -- Sincerely yours, Mike.