On Fri, Jul 08, 2022 at 09:18:03AM +0200, Peter Zijlstra wrote: > Scattered across the archs are 3 basic forms of tlb_{start,end}_vma(). > Provide two new MMU_GATHER_knobs to enumerate them and remove the per > arch tlb_{start,end}_vma() implementations. > > - MMU_GATHER_NO_FLUSH_CACHE indicates the arch has flush_cache_range() > but does *NOT* want to call it for each VMA. > > - MMU_GATHER_MERGE_VMAS indicates the arch wants to merge the > invalidate across multiple VMAs if possible. > > With these it is possible to capture the three forms: > > 1) empty stubs; > select MMU_GATHER_NO_FLUSH_CACHE and MMU_GATHER_MERGE_VMAS > > 2) start: flush_cache_range(), end: empty; > select MMU_GATHER_MERGE_VMAS > > 3) start: flush_cache_range(), end: flush_tlb_range(); > default > > Obviously, if the architecture does not have flush_cache_range() then > it also doesn't need to select MMU_GATHER_NO_FLUSH_CACHE. > > Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx> > --- > arch/Kconfig | 7 +++++++ > arch/csky/include/asm/tlb.h | 13 ------------- > arch/loongarch/Kconfig | 1 + > arch/loongarch/include/asm/tlb.h | 10 ---------- > arch/powerpc/Kconfig | 1 + > arch/powerpc/include/asm/tlb.h | 2 -- > arch/s390/Kconfig | 1 + > arch/s390/include/asm/tlb.h | 3 --- > arch/sparc/Kconfig | 2 ++ > arch/sparc/include/asm/tlb_64.h | 2 -- > arch/x86/Kconfig | 1 + > arch/x86/include/asm/tlb.h | 3 --- > include/asm-generic/tlb.h | 21 +++++++++++++++++++-- > 13 files changed, 32 insertions(+), 35 deletions(-) > > --- a/arch/Kconfig > +++ b/arch/Kconfig > @@ -438,6 +438,13 @@ config MMU_GATHER_PAGE_SIZE > > config MMU_GATHER_NO_RANGE > bool > + select MMU_GATHER_MERGE_VMAS > + > +config MMU_GATHER_NO_FLUSH_CACHE > + bool If this is really a sparc-special and we don't necessarily want it to proliferate, then maybe: default y depends on SPARC would keep it confined? But I don't mind either way and the important bits of the patch look good: Acked-by: Will Deacon <will@xxxxxxxxxx> Thanks, Will