ARM: 7769/1: Cortex-A15: fix erratum 798181 implementation
authorMarc Zyngier <Marc.Zyngier@arm.com>
Fri, 21 Jun 2013 11:07:27 +0000 (12:07 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 22 Jul 2013 01:21:34 +0000 (18:21 -0700)
commite6a01df4cd3a38e8dcc05d763c0f793b2f30c5f2
tree9cec5f21f1d4b5c46be63e57f981d0d9f261678d
parent4aa6022129a8b5e0b0e42815521071ce7a766a84
ARM: 7769/1: Cortex-A15: fix erratum 798181 implementation

commit 0d0752bca1f9a91fb646647aa4abbb21156f316c upstream.

Looking into the active_asids array is not enough, as we also need
to look into the reserved_asids array (they both represent processes
that are currently running).

Also, not holding the ASID allocator lock is racy, as another CPU
could schedule that process and trigger a rollover, making the erratum
workaround miss an IPI.

Exposing this outside of context.c is a little ugly on the side, so
let's define a new entry point that the erratum workaround can call
to obtain the cpumask.

Acked-by: Will Deacon <will.deacon@arm.com>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/arm/include/asm/mmu_context.h
arch/arm/kernel/smp_tlb.c
arch/arm/mm/context.c