linux/arch/arm/mach-imx
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
..
devices ARM: imx: prepare for removal of flexcan_platform_data 2013-06-27 15:15:08 +02:00
3ds_debugboard.c ARM: imx: include hardware.h rather than mach/hardware.h 2012-10-15 10:05:43 +08:00
3ds_debugboard.h ARM: imx: include board headers in the same folder 2012-10-15 09:18:14 +08:00
anatop.c ARM: imx: use imx_init_revision_from_anatop() on imx6sl 2013-10-21 09:13:13 +08:00
avic.c ARM: arm-soc cleanup for 3.10 2013-05-02 09:03:55 -07:00
board-mx31lilly.h ARM: imx: include board headers in the same folder 2012-10-15 09:18:14 +08:00
board-mx31lite.h ARM: imx: include board headers in the same folder 2012-10-15 09:18:14 +08:00
board-mx31moboard.h ARM: imx: include board headers in the same folder 2012-10-15 09:18:14 +08:00
board-pcm038.h ARM: imx: include board headers in the same folder 2012-10-15 09:18:14 +08:00
clk-busy.c ARM: arm-soc non-critical fixes for 3.10 2013-05-02 08:56:55 -07:00
clk-fixup-div.c ARM: imx: add common clock support for fixup div 2013-08-16 13:11:24 +08:00
clk-fixup-mux.c ARM: imx: initialize clk_init_data.flags for clk-fixup-mux 2013-09-17 10:04:23 +08:00
clk-gate2.c ARM: mach-imx: clk-gate2: Include "clk.h" 2013-04-01 16:17:50 +08:00
clk-imx1.c ARM: imx: include hardware.h rather than mach/hardware.h 2012-10-15 10:05:43 +08:00
clk-imx6q.c ARM: i.MX6q: fix the wrong parent of can_root clock 2013-11-11 22:58:42 +08:00
clk-imx6sl.c ARM: imx: enable suspend for imx6sl 2013-10-21 09:39:27 +08:00
clk-imx21.c ARM: imx: include hardware.h rather than mach/hardware.h 2012-10-15 10:05:43 +08:00
clk-imx25.c ARM: i.MX25: clk: parent per5_clk to AHB clock 2013-02-05 10:54:35 +01:00
clk-imx27.c ARM: i.MX: change dev_id to cpu0 while registering cpu clock 2013-09-19 03:53:44 +02:00
clk-imx31.c Linux 3.8-rc6 2013-02-04 22:56:41 -08:00
clk-imx35.c ARM: imx35 Bugfix admux clock 2013-04-09 19:46:30 +08:00
clk-imx51-imx53.c ARM: mach-imx: clk-imx51-imx53: Retrieve base address and irq from dt 2013-10-21 09:27:55 +08:00
clk-pfd.c ARM: imx: add common clock support for pfd 2012-05-02 12:08:20 +02:00
clk-pllv1.c ARM: mach-imx: clk-pllv1: Staticize clk_pllv1_ops 2013-04-01 16:17:49 +08:00
clk-pllv2.c ARM: mach-imx: clk-pllv2: Staticize clk_pllv2_ops 2013-04-01 16:17:50 +08:00
clk-pllv3.c ARM: imx: clk-pllv3: improve the timeout waiting method 2013-08-16 13:11:25 +08:00
clk-vf610.c ARM: imx: fix vf610 enet module clock selection 2013-07-15 08:28:09 +08:00
clk.c ARM: imx6: change some clocks to fixup clocks 2013-08-16 13:11:25 +08:00
clk.h The common clk framework changes for 3.12 are dominated by clock driver 2013-09-09 15:49:04 -07:00
common.h ARM: imx: remove imx_src_prepare_restart() call 2013-11-11 22:58:43 +08:00
cpu-imx5.c ARM: mach-imx: cpu-imx5: Include "common.h" 2013-04-01 16:17:49 +08:00
cpu-imx25.c ARM: imx: include hardware.h rather than mach/hardware.h 2012-10-15 10:05:43 +08:00
cpu-imx27.c ARM: imx: include hardware.h rather than mach/hardware.h 2012-10-15 10:05:43 +08:00
cpu-imx31.c ARM: imx: include hardware.h rather than mach/hardware.h 2012-10-15 10:05:43 +08:00
cpu-imx35.c ARM: imx: include hardware.h rather than mach/hardware.h 2012-10-15 10:05:43 +08:00
cpu.c ARM: imx: Include linux/err.h 2013-10-21 09:15:12 +08:00
cpuidle-imx5.c ARM: imx: cpuidle: use init/exit common routine 2013-04-23 13:45:23 +02:00
cpuidle-imx6q.c ARM: imx: cpuidle: use init/exit common routine 2013-04-23 13:45:23 +02:00
cpuidle.h ARM: imx: cpuidle: use init/exit common routine 2013-04-23 13:45:23 +02:00
crm-regs-imx5.h ARM i.MX53: Fix PLL4 base address 2012-06-04 15:23:57 +02:00
crmregs-imx3.h ARM i.MX3: Make ccm base address a variable 2012-04-25 17:03:45 +02:00
devices-imx1.h ARM: imx: move platform device code into mach-imx 2012-10-15 09:18:15 +08:00
devices-imx21.h ARM: imx: move platform device code into mach-imx 2012-10-15 09:18:15 +08:00
devices-imx25.h ARM: imx: prepare for removal of flexcan_platform_data 2013-06-27 15:15:08 +02:00
devices-imx27.h ARM : i.MX27 : split code for allocation of ressources of camera and eMMA 2012-11-16 16:21:48 +01:00
devices-imx31.h ARM: imx: move platform device code into mach-imx 2012-10-15 09:18:15 +08:00
devices-imx35.h ARM: imx: prepare for removal of flexcan_platform_data 2013-06-27 15:15:08 +02:00
devices-imx51.h ARM: imx: move platform device code into mach-imx 2012-10-15 09:18:15 +08:00
ehci-imx5.c ARM: imx: include hardware.h rather than mach/hardware.h 2012-10-15 10:05:43 +08:00
ehci-imx25.c Merge branch 'next/cam-samsung' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into next/soc 2012-11-30 09:27:57 -08:00
ehci-imx27.c ARM: imx: include hardware.h rather than mach/hardware.h 2012-10-15 10:05:43 +08:00
ehci-imx31.c ARM: imx: include hardware.h rather than mach/hardware.h 2012-10-15 10:05:43 +08:00
ehci-imx35.c Merge branch 'next/cam-samsung' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into next/soc 2012-11-30 09:27:57 -08:00
epit.c ARM: imx: remove IRQF_DISABLED 2013-10-21 09:11:05 +08:00
eukrea_mbimx27-baseboard.c ARM: cpuimx27 and mbimx27: prepend CONFIG_ to Kconfig macro 2013-04-03 16:50:54 +08:00
eukrea_mbimxsd25-baseboard.c ARM: imx: prepare for removal of flexcan_platform_data 2013-06-27 15:15:08 +02:00
eukrea_mbimxsd35-baseboard.c ARM: imx: prepare for removal of flexcan_platform_data 2013-06-27 15:15:08 +02:00
eukrea_mbimxsd51-baseboard.c ARM: imx: include hardware.h rather than mach/hardware.h 2012-10-15 10:05:43 +08:00
eukrea-baseboards.h ARM: imx: include board headers in the same folder 2012-10-15 09:18:14 +08:00
gpc.c ARM: imx: ensure dsm_request signal is not asserted when setting LPM 2013-10-21 09:39:26 +08:00
hardware.h ARM: imx: include <asm/io.h> in hardware.h 2013-06-17 15:45:10 +08:00
headsmp.S ARM: imx: replicate the diagnostic register of boot cpu into secondary cores 2013-05-12 21:39:18 +08:00
hotplug.c ARM: imx: do not return from imx_cpu_die() call 2013-10-21 09:37:31 +08:00
iim.h ARM: imx: include iim.h rather than mach/iim.h 2012-10-15 10:03:10 +08:00
imx25-dt.c ARM: imx: create mxc_arch_reset_init_dt() for DT boot 2013-06-17 15:45:10 +08:00
imx27-dt.c ARM: imx: create mxc_arch_reset_init_dt() for DT boot 2013-06-17 15:45:10 +08:00
imx31-dt.c ARM: imx: create mxc_arch_reset_init_dt() for DT boot 2013-06-17 15:45:10 +08:00
imx51-dt.c ARM: imx: remove custom .init_time hook 2013-09-29 21:09:30 +02:00
iomux-imx31.c ARM: mach-imx: iomux-imx31: Staticize mxc_pin_alloc_map 2013-04-01 16:17:48 +08:00
iomux-mx1.h ARM: imx: move iomux drivers and headers into mach-imx 2012-10-15 09:18:14 +08:00
iomux-mx2x.h ARM: imx: move iomux drivers and headers into mach-imx 2012-10-15 09:18:14 +08:00
iomux-mx3.h ARM: imx: move iomux drivers and headers into mach-imx 2012-10-15 09:18:14 +08:00
iomux-mx21.h ARM: imx: move iomux drivers and headers into mach-imx 2012-10-15 09:18:14 +08:00
iomux-mx25.h ARM: imx: move iomux drivers and headers into mach-imx 2012-10-15 09:18:14 +08:00
iomux-mx27.h ARM: imx: move iomux drivers and headers into mach-imx 2012-10-15 09:18:14 +08:00
iomux-mx35.h ARM: imx: move iomux drivers and headers into mach-imx 2012-10-15 09:18:14 +08:00
iomux-mx51.h ARM: imx: move iomux drivers and headers into mach-imx 2012-10-15 09:18:14 +08:00
iomux-v1.c ARM: imx: include hardware.h rather than mach/hardware.h 2012-10-15 10:05:43 +08:00
iomux-v1.h ARM: imx: move iomux drivers and headers into mach-imx 2012-10-15 09:18:14 +08:00
iomux-v3.c ARM: imx: include hardware.h rather than mach/hardware.h 2012-10-15 10:05:43 +08:00
iomux-v3.h ARM: imx: move iomux drivers and headers into mach-imx 2012-10-15 09:18:14 +08:00
irq-common.c ARM: imx: irq-common: Include header to avoid sparse warning 2013-06-17 15:45:14 +08:00
irq-common.h ARM: imx: remove header file mach/irqs.h 2012-10-15 10:05:43 +08:00
Kconfig ARM: SoC platform changes for 3.13 2013-11-11 16:49:45 +09:00
mach-apf9328.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
mach-armadillo5x0.c ARM: imx: remove IRQF_DISABLED 2013-10-21 09:11:05 +08:00
mach-bug.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
mach-cpuimx27.c ARM: cpuimx27 and mbimx27: prepend CONFIG_ to Kconfig macro 2013-04-03 16:50:54 +08:00
mach-cpuimx35.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
mach-cpuimx51sd.c ARM: imx: Remove cpufreq driver 2013-04-01 16:17:34 +08:00
mach-eukrea_cpuimx25.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
mach-imx6q.c ARM: imx: replace imx6q_restart() with mxc_restart() 2013-10-21 09:36:53 +08:00
mach-imx6sl.c ARM: imx: enable suspend for imx6sl 2013-10-21 09:39:27 +08:00
mach-imx27_visstrim_m10.c gpio: (gpio-pca953x) move header to linux/platform_data/ 2013-08-29 12:33:52 -07:00
mach-imx27ipcam.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
mach-imx27lite.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
mach-imx53.c ARM: imx: remove custom .init_time hook 2013-09-29 21:09:30 +02:00
mach-kzm_arm11_01.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
mach-mx1ads.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
mach-mx21ads.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
mach-mx25_3ds.c ARM: imx: prepare for removal of flexcan_platform_data 2013-06-27 15:15:08 +02:00
mach-mx27_3ds.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
mach-mx27ads.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
mach-mx31_3ds.c ARM: imx: remove IRQF_DISABLED 2013-10-21 09:11:05 +08:00
mach-mx31ads.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
mach-mx31lilly.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
mach-mx31lite.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
mach-mx31moboard.c leds: leds-mc13783: Prepare driver to support MC13892 LEDs 2013-06-20 16:21:34 -07:00
mach-mx35_3ds.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
mach-mx51_babbage.c ARM: imx: Remove cpufreq driver 2013-04-01 16:17:34 +08:00
mach-mxt_td60.c gpio: (gpio-pca953x) move header to linux/platform_data/ 2013-08-29 12:33:52 -07:00
mach-pca100.c ARM: imx: Remove mxc specific ulpi access ops 2013-06-17 15:45:16 +08:00
mach-pcm037_eet.c ARM: imx: include common.h rather than mach/common.h 2012-10-15 10:03:10 +08:00
mach-pcm037.c ARM: imx: remove IRQF_DISABLED 2013-10-21 09:11:05 +08:00
mach-pcm038.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
mach-pcm043.c ARM: imx: prepare for removal of flexcan_platform_data 2013-06-27 15:15:08 +02:00
mach-qong.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
mach-scb9328.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
mach-vf610.c ARM: imx: remove custom .init_time hook 2013-09-29 21:09:30 +02:00
mach-vpr200.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
Makefile ARM: imx: enable suspend for imx6sl 2013-10-21 09:39:27 +08:00
mm-imx1.c ARM: imx: move clk_prepare() out from mxc_restart() 2013-06-17 15:45:10 +08:00
mm-imx3.c Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm 2013-07-03 09:46:29 -07:00
mm-imx5.c ARM: mach-imx: mm-imx5: Retrieve iomuxc base address from dt 2013-10-21 09:35:57 +08:00
mm-imx21.c ARM: imx: move clk_prepare() out from mxc_restart() 2013-06-17 15:45:10 +08:00
mm-imx25.c ARM: i.MX: remove sdma script address arrays from platform data 2013-08-26 20:47:16 +05:30
mm-imx27.c ARM: imx: move clk_prepare() out from mxc_restart() 2013-06-17 15:45:10 +08:00
mmdc.c ARM: drivers: remove __dev* attributes. 2013-01-03 15:57:04 -08:00
mx1-camera-fiq-ksym.c ARM: imx: move platform_data definitions 2012-09-14 11:17:21 +02:00
mx1-camera-fiq.S ARM: imx: move mx1 support to mach-imx 2010-06-30 08:59:44 +02:00
mx1.h ARM: imx: include hardware.h rather than mach/hardware.h 2012-10-15 10:05:43 +08:00
mx2x.h ARM: imx: include hardware.h rather than mach/hardware.h 2012-10-15 10:05:43 +08:00
mx3x.h ARM: imx: include hardware.h rather than mach/hardware.h 2012-10-15 10:05:43 +08:00
mx21.h ARM: imx: include hardware.h rather than mach/hardware.h 2012-10-15 10:05:43 +08:00
mx25.h ARM: imx: include hardware.h rather than mach/hardware.h 2012-10-15 10:05:43 +08:00
mx27.h ARM: i.MX27: Typo fix 2013-07-15 08:28:07 +08:00
mx31.h ARM: imx: include hardware.h rather than mach/hardware.h 2012-10-15 10:05:43 +08:00
mx31lilly-db.c ARM: imx: remove IRQF_DISABLED 2013-10-21 09:11:05 +08:00
mx31lite-db.c ARM: imx: include hardware.h rather than mach/hardware.h 2012-10-15 10:05:43 +08:00
mx31moboard-devboard.c ARM: imx: include hardware.h rather than mach/hardware.h 2012-10-15 10:05:43 +08:00
mx31moboard-marxbot.c ARM: imx: include hardware.h rather than mach/hardware.h 2012-10-15 10:05:43 +08:00
mx31moboard-smartbot.c ARM: imx: include hardware.h rather than mach/hardware.h 2012-10-15 10:05:43 +08:00
mx35.h ARM: imx: include hardware.h rather than mach/hardware.h 2012-10-15 10:05:43 +08:00
mx51.h ARM: imx: include hardware.h rather than mach/hardware.h 2012-10-15 10:05:43 +08:00
mx53.h ARM: imx: include hardware.h rather than mach/hardware.h 2012-10-15 10:05:43 +08:00
mxc.h ARM: imx: enable suspend for imx6sl 2013-10-21 09:39:27 +08:00
pcm037.h ARM: imx: use machine specific hook for late init 2012-05-08 20:36:16 +08:00
pcm970-baseboard.c ARM: imx: include hardware.h rather than mach/hardware.h 2012-10-15 10:05:43 +08:00
platsmp.c arm: delete __cpuinit/__CPUINIT usage from all ARM users 2013-07-14 19:36:52 -04:00
pm-imx3.c ARM: imx: include hardware.h rather than mach/hardware.h 2012-10-15 10:05:43 +08:00
pm-imx5.c ARM: mx53: Allow suspend/resume 2013-08-22 23:20:45 +08:00
pm-imx6q.c ARM: imx: enable suspend for imx6sl 2013-10-21 09:39:27 +08:00
pm-imx27.c ARM: imx: include hardware.h rather than mach/hardware.h 2012-10-15 10:05:43 +08:00
src.c ARM: imx: remove imx_src_prepare_restart() call 2013-11-11 22:58:43 +08:00
ssi-fiq-ksym.c ARM: imx: merge plat-mxc into mach-imx 2012-10-15 10:02:19 +08:00
ssi-fiq.S ARM: imx: merge plat-mxc into mach-imx 2012-10-15 10:02:19 +08:00
system.c ARM: imx: remove imx_src_prepare_restart() call 2013-11-11 22:58:43 +08:00
time.c ARM: imx: remove IRQF_DISABLED 2013-10-21 09:11:05 +08:00
tzic.c ARM: mach-imx: tzic: Staticize *tzic_base 2013-04-01 16:17:51 +08:00
ulpi.h ARM: imx: Remove mxc specific ulpi access ops 2013-06-17 15:45:16 +08:00