linux_dsm_epyc7002/arch/arm
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
..
boot ARM: SoC DT updates for 3.13 2013-11-11 17:34:56 +09:00
common ARM: SoC cleanups for 3.13 2013-11-11 16:42:43 +09:00
configs ARM: SoC DT updates for 3.13 2013-11-11 17:34:56 +09:00
crypto ARM: 7837/3: fix Thumb-2 bug in AES assembler code 2013-09-22 11:43:38 +01:00
include ARM: SoC platform changes for 3.13 2013-11-11 16:49:45 +09:00
kernel ARM: SoC platform changes for 3.13 2013-11-11 16:49:45 +09:00
kvm ARM: kvm: rename cpu_reset to avoid name clash 2013-09-24 11:15:05 -07:00
lib
mach-at91 ARM: SoC DT updates for 3.13 2013-11-11 17:34:56 +09:00
mach-bcm BCM changes for 3.13/soc. A number of cleanup related changes. 2013-10-30 14:03:39 -07:00
mach-bcm2835 ARM: bcm2835: remove custom .init_time hook 2013-09-29 21:09:24 +02:00
mach-clps711x ARM: clps711x: Use linux/sched_clock.h 2013-10-11 14:50:10 -07:00
mach-cns3xxx
mach-davinci ARM: driver updates for 3.13 2013-11-11 17:05:37 +09:00
mach-dove ARM: driver updates for 3.13 2013-11-11 17:05:37 +09:00
mach-ebsa110
mach-ep93xx usb: ohci: remove ep93xx bus glue platform driver 2013-10-29 16:43:37 -07:00
mach-exynos ARM: SoC cleanups for 3.13 2013-11-11 16:42:43 +09:00
mach-footbridge
mach-gemini ARM: gemini: convert to GENERIC_CLOCKEVENTS 2013-10-28 15:06:15 -07:00
mach-highbank ARM: SoC platform changes for 3.13 2013-11-11 16:49:45 +09:00
mach-imx ARM: imx: remove imx_src_prepare_restart() call 2013-11-11 22:58:43 +08:00
mach-integrator ARM: integrator: core module registers from compatible strings 2013-10-16 14:10:14 +02:00
mach-iop13xx
mach-iop32x
mach-iop33x
mach-ixp4xx
mach-keystone ARM: keystone: fix PM domain initcall to be keystone only 2013-10-14 11:10:33 -07:00
mach-kirkwood ARM: SoC DT updates for 3.13 2013-11-11 17:34:56 +09:00
mach-ks8695
mach-lpc32xx
mach-mmp
mach-msm ARM: msm: Create a common board-dt and config ARCH_MSM_DT 2013-09-25 13:02:56 -07:00
mach-mv78xx0
mach-mvebu
mach-mxs ARM: SoC DT updates for 3.13 2013-11-11 17:34:56 +09:00
mach-netx
mach-nomadik Merge branch 'clk-of-init-v2_for-3.13' of https://github.com/shesselba/linux-dove into next/cleanup 2013-10-07 09:47:31 -07:00
mach-nspire ARM: nspire: remove custom .init_time hook 2013-09-29 21:09:37 +02:00
mach-omap1 ARM: OMAP1: Fix a bunch of GPIO related section warnings after initdata got corrected 2013-10-18 10:50:51 -07:00
mach-omap2 ARM: SoC DT updates for 3.13 2013-11-11 17:34:56 +09:00
mach-orion5x
mach-picoxcell
mach-prima2 ARM: prima2: remove custom .init_time hook 2013-09-29 21:09:38 +02:00
mach-pxa
mach-realview
mach-rockchip ARM: SoC board updates for 3.13 2013-11-11 16:57:16 +09:00
mach-rpc
mach-s3c24xx ARM: S3C24XX: add dma pdata for s3c2410, s3c2440 and s3c2442 2013-10-21 05:32:48 +09:00
mach-s3c64xx ARM: SoC DT updates for 3.13 2013-11-11 17:34:56 +09:00
mach-s5p64x0
mach-s5pc100
mach-s5pv210 ARM: Samsung: Remove the MIPI PHY setup code 2013-10-16 13:48:08 -07:00
mach-sa1100
mach-shmobile ARM: SoC board updates for 3.13 2013-11-11 16:57:16 +09:00
mach-socfpga ARM: drop explicit selection of HAVE_CLK and CLKDEV_LOOKUP 2013-10-07 10:41:32 -07:00
mach-spear ARM: drop explicit selection of HAVE_CLK and CLKDEV_LOOKUP 2013-10-07 10:41:32 -07:00
mach-sti ARM: sti: remove custom .init_time hook 2013-09-29 21:09:43 +02:00
mach-sunxi ARM: sunxi: remove .init_time hooks 2013-10-28 10:19:45 -07:00
mach-tegra ARM: SoC platform changes for 3.13 2013-11-11 16:49:45 +09:00
mach-u300 ARM: drop explicit selection of HAVE_CLK and CLKDEV_LOOKUP 2013-10-07 10:41:32 -07:00
mach-ux500 ARM: SoC DT updates for 3.13 2013-11-11 17:34:56 +09:00
mach-versatile
mach-vexpress Via Paul Walmsley <paul@pwsan.com>: 2013-10-28 14:39:03 -07:00
mach-virt
mach-vt8500 ARM: drop explicit selection of HAVE_CLK and CLKDEV_LOOKUP 2013-10-07 10:41:32 -07:00
mach-w90x900
mach-zynq
mm Device tree fixes and reverts for v3.12-rc5 2013-10-15 17:14:13 -07:00
net net: fix unsafe set_memory_rw from softirq 2013-10-07 15:16:45 -04:00
nwfpe
oprofile
plat-iop
plat-omap ARM: OMAP: remove deprecated IRQF_DISABLED 2013-10-03 13:24:36 -07:00
plat-orion
plat-pxa
plat-samsung ARM: SoC DT updates for 3.13 2013-11-11 17:34:56 +09:00
plat-versatile
tools
vfp
xen
Kconfig ARM: driver updates for 3.13 2013-11-11 17:05:37 +09:00
Kconfig-nommu
Kconfig.debug ARM: imx: add low-level debug for vybrid 2013-10-21 09:11:07 +08:00
Makefile ARM: SoC cleanups for 3.13 2013-11-11 16:42:43 +09:00