• Peter Zijlstra's avatar
    asm-generic/tlb, arch: Provide generic tlb_flush() based on flush_tlb_range() · 5f307be1
    Peter Zijlstra authored
    Provide a generic tlb_flush() implementation that relies on
    flush_tlb_range(). This is a little awkward because flush_tlb_range()
    assumes a VMA for range invalidation, but we no longer have one.
    
    Audit of all flush_tlb_range() implementations shows only vma->vm_mm
    and vma->vm_flags are used, and of the latter only VM_EXEC (I-TLB
    invalidates) and VM_HUGETLB (large TLB invalidate) are used.
    
    Therefore, track VM_EXEC and VM_HUGETLB in two more bits, and create a
    'fake' VMA.
    
    This allows architectures that have a reasonably efficient
    flush_tlb_range() to not require any additional effort.
    
    No change in behavior intended.
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: default avatarWill Deacon <will.deacon@arm.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Nick Piggin <npiggin@gmail.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Rik van Riel <riel@surriel.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    5f307be1
tlb.h 1.23 KB