ARM: tlb: reduce scope of barrier domains for TLB invalidation
authorWill Deacon <will.deacon@arm.com>
Thu, 23 May 2013 17:43:58 +0000 (18:43 +0100)
committerWill Deacon <will.deacon@arm.com>
Mon, 12 Aug 2013 11:25:45 +0000 (12:25 +0100)
commit62cbbc42e0019aff6310259f275ae812463f8836
tree4f31f394d44b55c7b3112e3060e81fb51a947895
parent3ea128065ed20d33bd02ff6dab689f88e38000be
ARM: tlb: reduce scope of barrier domains for TLB invalidation

Our TLB invalidation routines may require a barrier before the
maintenance (in order to ensure pending page table writes are visible to
the hardware walker) and barriers afterwards (in order to ensure
completion of the maintenance and visibility in the instruction stream).

Whilst this is expensive, the cost can be reduced somewhat by reducing
the scope of the barrier instructions:

  - The barrier before only needs to apply to stores (pte writes)
  - Local ops are required only to affect the non-shareable domain
  - Global ops are required only to affect the inner-shareable domain

This patch makes these changes for the TLB flushing code.

Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm/include/asm/tlbflush.h