ARM: imx6: exit coherency when shutting down a cpu
authorShawn Guo <shawn.guo@linaro.org>
Tue, 22 May 2012 14:13:46 +0000 (22:13 +0800)
committerBen Hutchings <ben@decadent.org.uk>
Tue, 19 Jun 2012 22:18:15 +0000 (23:18 +0100)
commitb8878d246b5cacedcebd20cac9add30a4dbcf7df
tree1cff9eb3f454a03b70b6f6d24872a94e1a9dbd92
parent4b5b660f26443a4e3e2a6ce7ea39aa0d3fcb7fef
ARM: imx6: exit coherency when shutting down a cpu

commit 602bf40971d7f9a1ec0b7ba2b7e6427849828651 upstream.

There is a system hang issue on imx6q which can easily be seen with
running a cpu hotplug stress testing (hotplug secondary cores from
user space via sysfs interface for thousands iterations).

It turns out that the issue is caused by coherency of the cpu that
is being shut down.  When shutting down a cpu, we need to have the
cpu exit coherency to prevent it from receiving cache, TLB, or BTB
maintenance operations broadcast by other CPUs in the cluster.

Copy cpu_enter_lowpower() and cpu_leave_lowpower() from mach-vexpress
to have coherency properly handled in platform_cpu_die(), thus fix
the issue.

Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
arch/arm/mach-imx/hotplug.c