ARM: 7773/1: PJ4B: Add support for errata 4742
authorGregory CLEMENT <gregory.clement@free-electrons.com>
Sun, 23 Jun 2013 09:17:11 +0000 (10:17 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Mon, 24 Jun 2013 13:28:46 +0000 (14:28 +0100)
commit3e0a07f8c401bb43e0f964c5f1285b2cb2028645
tree8d25c87e417d999d33f621cf74371df5d6751c66
parent63384fd0b1509acf522a8a8fcede09087eedb7df
ARM: 7773/1: PJ4B: Add support for errata 4742

This commit fixes the regression on Armada 370 (the kernal hang during
boot) introduced by the commit: "ARM: 7691/1: mm: kill unused
TLB_CAN_READ_FROM_L1_CACHE and use ALT_SMP instead".

When coming out of either a Wait for Interrupt (WFI) or a Wait for
Event (WFE) IDLE states, a specific timing sensitivity exists between
the retiring WFI/WFE instructions and the newly issued subsequent
instructions. This sensitivity can result in a CPU hang scenario.  The
workaround is to insert either a Data Synchronization Barrier (DSB) or
Data Memory Barrier (DMB) command immediately after the WFI/WFE
instruction.

This commit was based on the work of Lior Amsalem, but heavily
modified to apply the errata fix dynamically according to the
processor type thanks to the suggestions of Russell King and Nicolas
Pitre.

Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Reviewed-by: Will Deacon <will.deacon@arm.com>
Acked-by: Nicolas Pitre <nico@linaro.org>
Tested-by: Willy Tarreau <w@1wt.eu>
Cc: <stable@vger.kernel.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/Kconfig
arch/arm/include/asm/glue-proc.h
arch/arm/mm/proc-macros.S
arch/arm/mm/proc-v7.S