linux-stable/arch
Shawn Guo b6e23bb63f ARM: imx: remove imx_src_prepare_restart() call
There is ~10% possibility that the following emergency restart command
fails to reboot imx6q.

$ echo b > /proc/sysrq-trigger

The IMX restart routine mxc_restart() assumes that it will always run on
primary core, and will call imx_src_prepare_restart() to disable
secondary cores in order to get them come to online in the following
boot.  However, the assumption is only true for normal kernel_restart()
case where migrate_to_reboot_cpu() will be called to migrate to primary
core, but not necessarily true for emergency_restart() case.  So when
emergency_restart() calls into mxc_restart() on any secondary core,
system will hang immediately once imx_src_prepare_restart() is called
to disabled secondary cores.  Since emergency_restart() is defined as a
function that is safe to call in interrupt context, we cannot just call
migrate_to_reboot_cpu() to fix the issue.

Fortunately, we just found that the issue can be fixed at imx6q platform
level.  We used to call imx_src_prepare_restart() to disable all
secondary cores before resetting hardware.  Otherwise, the secondary
will fail come to online in the reboot.  However, we recently found that
after commit 6050d18 (ARM: imx: reset core along with enable/disable
operation) comes to play, we do not need to reset the secondary cores
any more.  That said, mxc_restart() now can run on any core to reboot
the system, as long as we remove the imx_src_prepare_restart() call from
mxc_restart().

So let's simply remove imx_src_prepare_restart() call to fix the above
emergency restart failure.

Reported-by: Jiada Wang <jiada_wang@mentor.com>
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2013-11-11 22:58:43 +08:00
..
alpha Remove GENERIC_HARDIRQ config option 2013-09-13 15:09:52 +02:00
arc ARC: [plat-arcfpga] defconfig update 2013-11-07 14:34:32 +05:30
arm ARM: imx: remove imx_src_prepare_restart() call 2013-11-11 22:58:43 +08:00
arm64 ARM64: /proc/interrupts: display IPIs of online CPUs only 2013-11-07 17:26:54 +00:00
avr32 avr32: cast syscall_return to silence compiler warning 2013-09-30 08:42:01 +02:00
blackfin Merge branch 'genirq' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2013-09-13 07:31:38 -07:00
c6x Remove GENERIC_HARDIRQ config option 2013-09-13 15:09:52 +02:00
cris Remove GENERIC_HARDIRQ config option 2013-09-13 15:09:52 +02:00
frv Remove GENERIC_HARDIRQ config option 2013-09-13 15:09:52 +02:00
h8300 Remove GENERIC_HARDIRQ config option 2013-09-13 15:09:52 +02:00
hexagon Remove GENERIC_HARDIRQ config option 2013-09-13 15:09:52 +02:00
ia64 Remove GENERIC_HARDIRQ config option 2013-09-13 15:09:52 +02:00
m32r Remove GENERIC_HARDIRQ config option 2013-09-13 15:09:52 +02:00
m68k Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k 2013-11-11 18:17:07 +09:00
metag Remove GENERIC_HARDIRQ config option 2013-09-13 15:09:52 +02:00
microblaze Remove GENERIC_HARDIRQ config option 2013-09-13 15:09:52 +02:00
mips Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2013-11-08 08:32:58 +09:00
mn10300 Remove GENERIC_HARDIRQ config option 2013-09-13 15:09:52 +02:00
openrisc openrisc: clean-up prom.h 2013-09-24 21:12:27 -05:00
parisc parisc: add generic 32- and 64-bit defconfigs 2013-11-07 23:07:22 +01:00
powerpc Driver Core / sysfs patches for 3.13-rc1 2013-11-07 11:42:15 +09:00
s390 s390/mm,tlb: correct tlb flush on page table upgrade 2013-11-04 13:51:47 +01:00
score Score: Modify the Makefile of Score, remove -mlong-calls for compiling 2013-09-26 03:46:03 +08:00
sh Remove GENERIC_HARDIRQ config option 2013-09-13 15:09:52 +02:00
sparc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2013-10-23 07:47:42 +01:00
tile arch: tile: re-use kbasename() helper 2013-09-30 10:34:46 -04:00
um uml: check length in exitcode_proc_write() 2013-10-30 12:24:49 -07:00
unicore32 Remove GENERIC_HARDIRQ config option 2013-09-13 15:09:52 +02:00
x86 Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2013-11-01 12:54:51 -07:00
xtensa xtensa: Cocci spatch "noderef" 2013-10-16 11:48:31 -07:00
.gitignore
Kconfig mutex: replace CONFIG_HAVE_ARCH_MUTEX_CPU_RELAX with simple ifdef 2013-09-28 12:46:21 +02:00