Message ID | cover.1737637631.git.zhengqi.arch@bytedance.com (mailing list archive) |
---|---|
Headers | show |
Series | remove tlb_remove_page_ptdesc() | expand |
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); }
On 2025/1/24 19:47, Peter Zijlstra wrote: > 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); > } Ah, make sense. I think this can be added to the patch #1. Thanks!