]> git.baikalelectronics.ru Git - kernel.git/commit
mmu_gather: Remove per arch tlb_{start,end}_vma()
authorPeter Zijlstra <peterz@infradead.org>
Fri, 8 Jul 2022 07:18:03 +0000 (09:18 +0200)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 21 Jul 2022 17:50:13 +0000 (10:50 -0700)
commit01f84261a2fe21409a4147b277c051c8918716c2
tree16bddb00103c3b96e15dc5d967b7aa59a3b820fc
parente124e86264525a262cab84e67913050f9e856c93
mmu_gather: Remove per arch tlb_{start,end}_vma()

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@infradead.org>
Acked-by: Will Deacon <will@kernel.org>
Cc: David Miller <davem@davemloft.net>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
13 files changed:
arch/Kconfig
arch/csky/include/asm/tlb.h
arch/loongarch/Kconfig
arch/loongarch/include/asm/tlb.h
arch/powerpc/Kconfig
arch/powerpc/include/asm/tlb.h
arch/s390/Kconfig
arch/s390/include/asm/tlb.h
arch/sparc/Kconfig
arch/sparc/include/asm/tlb_64.h
arch/x86/Kconfig
arch/x86/include/asm/tlb.h
include/asm-generic/tlb.h