ARM: imx: fix sync issue between imx_cpu_die and imx_cpu_kill
authorShawn Guo <shawn.guo@linaro.org>
Tue, 26 Mar 2013 08:46:07 +0000 (16:46 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 5 Apr 2013 16:26:14 +0000 (09:26 -0700)
commit1df12d51667611bd288c0bc33cbe6aec60aaa011
treef2720f3b4e0d1370de5e5c9d7c36100b14ca0a65
parentece83fd9ecb8c15dff1e82c1571e0c9d76e4be77
ARM: imx: fix sync issue between imx_cpu_die and imx_cpu_kill

commit 2f3edfd7e27ad4206acbc2ae99c9df5f46353024 upstream.

There is a sync issue with hotplug operation.  It's possible that when
imx_cpu_kill gets running on primary core, the imx_cpu_die execution
on the core which is to be killed hasn't been finished yet.  The problem
will very likely be hit when running suspend without no_console_suspend
setting on kernel cmdline.

It uses cpu jumping argument register to sync imx_cpu_die and
imx_cpu_kill.  The register will be set in imx_cpu_die and imx_cpu_kill
will wait for the register being cleared to actually kill the cpu.

Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/arm/mach-imx/common.h
arch/arm/mach-imx/hotplug.c
arch/arm/mach-imx/src.c