summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-vexpress
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2015-04-02 15:38:18 +0100
committerRussell King <rmk+kernel@arm.linux.org.uk>2015-04-07 15:40:21 +0100
commitf6ac49ba29499387e12e864a22e6d4bf46dafe9b (patch)
treef1c0bfdd76d274465581e4c85353a7abce378f16 /arch/arm/mach-vexpress
parente1e2f6e4c5759aab3a8cfb1a0c19017ea770dfd2 (diff)
downloadlinux-f6ac49ba29499387e12e864a22e6d4bf46dafe9b.tar.gz
linux-f6ac49ba29499387e12e864a22e6d4bf46dafe9b.tar.bz2
linux-f6ac49ba29499387e12e864a22e6d4bf46dafe9b.zip
ARM: vexpress: fix CPU hotplug with CT9x4 tile.
The Cortex A9 tile fails to unplug CPUs if errata 643719 is not enabled. This leads to random weird behaviours, but ultimately seem to lock the kernel one way or another when a CPU is hot unplugged. Symptoms range from a spinlock lockup in the scheduler, the entire system hanging, to dumping out the kernel printk buffer a few lines at a time, and other weird behaviours. This is caused by the outgoing CPU not having its inner caches properly flushed before it exits coherency - flush_cache_louis() is used to achieve this, but as a result of the hardware bug, this function ends up doing nothing without the errata workaround enabled. As the Versatile Express has an affected CPU, this errata must always be enabled. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-vexpress')
-rw-r--r--arch/arm/mach-vexpress/Kconfig1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/arm/mach-vexpress/Kconfig b/arch/arm/mach-vexpress/Kconfig
index 3c2509b4b694..4be537977040 100644
--- a/arch/arm/mach-vexpress/Kconfig
+++ b/arch/arm/mach-vexpress/Kconfig
@@ -42,6 +42,7 @@ if ARCH_VEXPRESS
config ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA
bool "Enable A5 and A9 only errata work-arounds"
default y
+ select ARM_ERRATA_643719 if SMP
select ARM_ERRATA_720789
select PL310_ERRATA_753970 if CACHE_L2X0
help