]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
ARM: vexpress: fix CPU hotplug with CT9x4 tile.
authorRussell King <rmk+kernel@arm.linux.org.uk>
Thu, 2 Apr 2015 14:38:18 +0000 (15:38 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Tue, 7 Apr 2015 14:40:21 +0000 (15:40 +0100)
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>
arch/arm/mach-vexpress/Kconfig

index 3c2509b4b6946bfcfd9b4e7a325b3945ba6c244c..4be5379770407f75f501d98020478f6cb606f774 100644 (file)
@@ -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