ARM: 7684/1: errata: Workaround for Cortex-A15 erratum 798181 (TLBI/DSB operations)
authorCatalin Marinas <catalin.marinas@arm.com>
Tue, 26 Mar 2013 22:35:04 +0000 (23:35 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Wed, 3 Apr 2013 15:45:49 +0000 (16:45 +0100)
commitc8b1bd3e39a9f2f180e00e6945be5074522410fe
treedcd4dc84c5a0da7ce4c1581b3ee6f81fdb969765
parent018ad058cdcf638a3f79cf1cd36d68793b040f86
ARM: 7684/1: errata: Workaround for Cortex-A15 erratum 798181 (TLBI/DSB operations)

On Cortex-A15 (r0p0..r3p2) the TLBI/DSB are not adequately shooting down
all use of the old entries. This patch implements the erratum workaround
which consists of:

1. Dummy TLBIMVAIS and DSB on the CPU doing the TLBI operation.
2. Send IPI to the CPUs that are running the same mm (and ASID) as the
   one being invalidated (or all the online CPUs for global pages).
3. CPU receiving the IPI executes a DMB and CLREX (part of the exception
   return code already).

Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/Kconfig
arch/arm/include/asm/highmem.h
arch/arm/include/asm/mmu_context.h
arch/arm/include/asm/tlbflush.h
arch/arm/kernel/smp_tlb.c
arch/arm/mm/context.c