u-boot/arch/arm/cpu
Nishanth Menon a615d0be6a ARM: Introduce erratum workaround for 801819
Add workaround for Cortex-A15 ARM erratum 801819 which says in summary
that "A livelock can occur in the L2 cache arbitration that might
prevent a snoop from completing. Under certain conditions this can
cause the system to deadlock. "

Recommended workaround is as follows:
Do both of the following:

1) Do not use the write-back no-allocate memory type.
2) Do not issue write-back cacheable stores at any time when the cache
is disabled (SCTLR.C=0) and the MMU is enabled (SCTLR.M=1). Because it
is implementation defined whether cacheable stores update the cache when
the cache is disabled it is not expected that any portable code will
execute cacheable stores when the cache is disabled.

For implementations of Cortex-A15 configured without the “L2 arbitration
register slice” option (typically one or two core systems), you must
also do the following:

3) Disable write-streaming in each CPU by setting ACTLR[28:25] = 0b1111

So, we provide an option to disable write streaming on OMAP5 and DRA7.
It is a rare condition to occur and may be enabled selectively based
on platform acceptance of risk.

Applies to: A15 revisions r2p0, r2p1, r2p2, r2p3 or r2p4 and REVIDR[3]
is set to 0.

Note: certain unicore SoCs *might* not have REVIDR[3] not set, but
might not meet the condition for the erratum to occur when they donot
have ACP (Accelerator Coherency Port) hooked to ACE (AXI Coherency
Extensions). Such SoCs will need the work around handled in the SoC
specific manner, since there is no ARM generic manner to detect such
configurations.

Based on ARM errata Document revision 18.0 (22 Nov 2013)

Suggested-by: Richard Woodruff <r-woodruff2@ti.com>
Suggested-by: Brad Griffis <bgriffis@ti.com>
Reviewed-by: Brad Griffis <bgriffis@ti.com>
Signed-off-by: Nishanth Menon <nm@ti.com>
2015-08-12 20:47:49 -04:00
..
arm11 ARM: cache: implement a default weak flush_cache() function 2015-08-12 20:47:48 -04:00
arm720t ARM: ARM720t: remove empty asm/arch/hardware.h 2015-04-23 08:52:27 -04:00
arm920t ARM: move -march=* and -mtune= options to arch/arm/Makefile 2015-03-27 16:55:22 +01:00
arm926ejs ARM: cache: implement a default weak flush_cache() function 2015-08-12 20:47:48 -04:00
arm946es ARM: integrator: abolish CONFIG_INTEGRATOR 2015-04-23 08:52:27 -04:00
arm1136 arm1136/arm1176: Merge cache handling code 2015-08-12 20:47:41 -04:00
arm1176 arm1136/arm1176: Merge cache handling code 2015-08-12 20:47:41 -04:00
armv7 ARM: Introduce erratum workaround for 801819 2015-08-12 20:47:49 -04:00
armv7m stm32f4: add cpu clock option for 180 MHz 2015-07-27 15:02:14 -04:00
armv8 ARM: cache: implement a default weak flush_cache() function 2015-08-12 20:47:48 -04:00
pxa ARM: move -march=* and -mtune= options to arch/arm/Makefile 2015-03-27 16:55:22 +01:00
sa1100 ARM: move -march=* and -mtune= options to arch/arm/Makefile 2015-03-27 16:55:22 +01:00
Makefile ARM: tegra: collect SoC sources into mach-tegra 2015-02-21 08:23:51 -05:00
u-boot-spl.lds dm: arm: Put driver model I2C drivers before legacy ones 2015-07-21 17:39:21 -06:00
u-boot.lds ARM: Clean up CONFIG_ARMV7_NONSEC/VIRT/PSCI conditions 2015-05-13 09:24:13 -07:00