On Thu, Jan 23, 2025 at 09:26:13PM +0800, Qi Zheng wrote: > Hi all, > > As suggested by Peter Zijlstra below [1], this series aims to remove > tlb_remove_page_ptdesc(). > > : Fundamentally tlb_remove_page() is about removing *pages* as from a PTE, > : there should not be a page-table anywhere near here *ever*. > : > : Yes, some architectures use tlb_remove_page() for page-tables too, but > : that is more or less an implementation detail that can be fixed. > > After this series, all architectures use tlb_remove_table() or tlb_remove_ptdesc() > to remove the page table pages. In the future, once all architectures using > tlb_remove_table() have also converted to using struct ptdesc (eg. powerpc), it > may be possible to use only tlb_remove_ptdesc(). Right, so I don't think Sparc and Power care to use ptdesc, they're using non page page-tables. At the very least we should do something like this, the only point of having tlb_remove_ptdesc() is type safety, there really is no benefit from it in any other way. --- diff --git a/include/asm-generic/tlb.h b/include/asm-generic/tlb.h index dec030cb1210..a6731328db6f 100644 --- a/include/asm-generic/tlb.h +++ b/include/asm-generic/tlb.h @@ -504,7 +504,7 @@ static inline void tlb_remove_page(struct mmu_gather *tlb, struct page *page) return tlb_remove_page_size(tlb, page, PAGE_SIZE); } -static inline void tlb_remove_ptdesc(struct mmu_gather *tlb, void *pt) +static inline void tlb_remove_ptdesc(struct mmu_gather *tlb, struct ptdesc *pt) { tlb_remove_table(tlb, pt); }