• Peter Zijlstra's avatar
    mmu_gather: Remove per arch tlb_{start,end}_vma() · 1e9fdf21
    Peter Zijlstra authored
    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: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: default avatarWill Deacon <will@kernel.org>
    Cc: David Miller <davem@davemloft.net>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    1e9fdf21
Kconfig 37.9 KB