linux/arch/arm/mach-imx
Shawn Guo c944b0b935 ARM: imx6: spin the cpu until hardware takes it down
Though commit 602bf40 (ARM: imx6: exit coherency when shutting down
a cpu) improves the stability of imx6q cpu hotplug a lot, there are
still hangs seen with a more stressful hotplug testing.

It's expected that once imx_enable_cpu(cpu, false) is called, the cpu
will be taken down by hardware immediately, and the code after that
will not get any chance to execute.  However, this is not always the
case from the testing.  The cpu could possibly be alive for a few
cycles before hardware actually takes it down.  So rather than letting
cpu execute some code that could cause a hang in these cycles, let's
make the cpu spin there and wait for hardware to take it down.

Cc: <stable@vger.kernel.org>
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2012-08-23 21:10:22 +08:00
..
include/mach dmaengine: imx-dma: merge old dma-v1.c with imx-dma.c 2012-03-26 11:31:29 +05:30
clk-busy.c ARM: imx: add common clock support for clk busy 2012-05-02 12:08:26 +02:00
clk-gate2.c ARM i.MX: Add common clock support for 2bit gate 2012-05-02 12:08:13 +02:00
clk-imx1.c ARM i.MX: remove now unnecessary argument from mxc_timer_init 2012-05-16 12:46:09 +02:00
clk-imx6q.c ARM i.MX6q: Add virtual 1/3.5 dividers in the LDB clock path 2012-08-17 10:31:43 +08:00
clk-imx21.c ARM i.MX: remove now unnecessary argument from mxc_timer_init 2012-05-16 12:46:09 +02:00
clk-imx25.c ARM i.MX: remove now unnecessary argument from mxc_timer_init 2012-05-16 12:46:09 +02:00
clk-imx27.c i.MX27: Fix emma-prp and csi clocks. 2012-08-07 09:14:30 +02:00
clk-imx31.c ARM: clk-imx31: Fix the keypad clock name 2012-08-03 16:28:47 +02:00
clk-imx35.c ARM: imx: assert SCC gate stays enabled 2012-07-04 09:38:29 +02:00
clk-imx51-imx53.c ARM: imx: enable emi_slow_gate clock for imx5 2012-08-03 22:36:00 +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 i.MX: Add common clock support for pllv1 2012-05-02 12:07:53 +02:00
clk-pllv2.c ARM i.MX pllv2: make round_rate accurate 2012-06-04 15:23:47 +02:00
clk-pllv3.c ARM: imx: add common clock support for pllv3 2012-05-02 12:08:06 +02:00
clk.h ARM: imx: add common clock support for clk busy 2012-05-02 12:08:26 +02:00
cpu_op-mx51.c bug.h: add include of it to various implicit C users 2012-02-29 17:15:08 -05:00
cpu_op-mx51.h ARM i.MX: Merge i.MX5 support into mach-imx 2011-11-16 08:37:37 +01:00
cpu-imx5.c ARM: imx: use machine specific hook for late init 2012-05-08 20:36:16 +08:00
cpu-imx25.c ARM: mx25: Print silicon revision on boot 2011-08-26 08:50:58 +02:00
cpu-imx27.c ARM: mx27: Print silicon revision on boot 2011-08-26 08:50:58 +02:00
cpu-imx31.c ARM: mx31: use generic function for displaying silicon revision 2011-08-26 08:50:59 +02:00
cpu-imx35.c ARM: mx35: use generic function for displaying silicon revision 2011-08-26 08:50:59 +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: clean up the section marks of extern data 2011-05-19 13:11:11 +02:00
devices-imx21.h ARM: imx: remove unused pdata from device macros 2012-07-06 08:25:20 +02:00
devices-imx25.h ARM: imx: remove unused pdata from device macros 2012-07-06 08:25:20 +02:00
devices-imx27.h ARM: imx: remove unused pdata from device macros 2012-07-06 08:25:20 +02:00
devices-imx31.h arm-soc: sparse IRQ conversion 2012-07-23 17:36:02 -07:00
devices-imx35.h arm-soc: sparse IRQ conversion 2012-07-23 17:36:02 -07:00
devices-imx50.h ARM i.MX: Merge i.MX5 support into mach-imx 2011-11-16 08:37:37 +01:00
devices-imx51.h ARM: imx: remove unused pdata from device macros 2012-07-06 08:25:20 +02:00
devices-imx53.h ARM: imx: remove unused pdata from device macros 2012-07-06 08:25:20 +02:00
efika.h ARM i.MX: Merge i.MX5 support into mach-imx 2011-11-16 08:37:37 +01:00
ehci-imx5.c ARM: imx: fix mx51 ehci setup errors 2012-07-09 10:32:44 +02:00
ehci-imx25.c ARM: imx: make ehci power/oc polarities configurable 2012-07-09 10:32:39 +02:00
ehci-imx27.c ARM i.MX ehci: factor out soc specific functions 2011-02-11 08:34:17 +01:00
ehci-imx31.c ARM: imx: move mx3 support to mach-imx 2011-05-19 13:11:38 +02:00
ehci-imx35.c ARM: imx: make ehci power/oc polarities configurable 2012-07-09 10:32:39 +02:00
eukrea_mbimx27-baseboard.c ARM: imx: eliminate macro IRQ_GPIOx() 2012-07-01 21:57:16 +08:00
eukrea_mbimxsd25-baseboard.c ARM: imx: eukrea_mbimxsd25: use IMX_GPIO_NR 2012-05-08 17:31:25 +02:00
eukrea_mbimxsd35-baseboard.c dma: ipu: remove the use of ipu_platform_data 2012-07-01 21:57:43 +08:00
eukrea_mbimxsd51-baseboard.c ARM: imx: eukrea_mbimxsd rename to eukrea_mbimxsd51 2012-05-08 17:31:25 +02:00
gpc.c arm/imx6q: add core drivers clock, gpc, mmdc and src 2011-10-31 14:26:23 +01:00
head-v7.S Merge branch 'imx/pm2' of git://git.linaro.org/people/shawnguo/linux-2.6 into imx6/pm 2012-01-06 12:44:05 -08:00
hotplug.c ARM: imx6: spin the cpu until hardware takes it down 2012-08-23 21:10:22 +08:00
imx27-dt.c arm-soc: sparse IRQ conversion 2012-07-23 17:36:02 -07:00
imx31-dt.c ARM i.MX31: Add devicetree support 2012-07-10 19:23:03 +02:00
imx51-dt.c ARM: imx: move irq_domain_add_legacy call into tzic driver 2012-07-01 21:57:29 +08:00
imx53-dt.c arm-soc: power management changes 2012-07-23 17:43:53 -07:00
iomux-imx31.c ARM: gpio: convert includes of mach/gpio.h and asm/gpio.h to linux/gpio.h 2011-08-08 14:27:41 +01:00
Kconfig arm-soc: sparse IRQ conversion 2012-07-23 17:36:02 -07:00
lluart.c ARM: imx6: Add UART2 for low-level debug 2012-05-11 15:17:57 +08:00
mach-apf9328.c ARM: imx: remove unneeded mach/irq.h inclusion 2012-07-01 21:58:41 +08:00
mach-armadillo5x0.c dma: ipu: remove the use of ipu_platform_data 2012-07-01 21:57:43 +08:00
mach-bug.c ARM: restart: mxc: use new restart hook 2012-01-05 12:57:15 +00:00
mach-cpuimx27.c arm-soc: sparse IRQ conversion 2012-07-23 17:36:02 -07:00
mach-cpuimx35.c arm-soc: sparse IRQ conversion 2012-07-23 17:36:02 -07:00
mach-cpuimx51sd.c arm-soc: sparse IRQ conversion 2012-07-23 17:36:02 -07:00
mach-eukrea_cpuimx25.c ARM: imx: remove unused pdata from device macros 2012-07-06 08:25:20 +02:00
mach-imx6q.c arm-soc: power management changes 2012-07-23 17:43:53 -07:00
mach-imx27_visstrim_m10.c arm-soc: sparse IRQ conversion 2012-07-23 17:36:02 -07:00
mach-imx27ipcam.c ARM: imx: remove unused pdata from device macros 2012-07-06 08:25:20 +02:00
mach-imx27lite.c ARM: restart: mxc: use new restart hook 2012-01-05 12:57:15 +00:00
mach-kzm_arm11_01.c ARM: imx: eliminate macro IOMUX_TO_IRQ() 2012-07-01 21:57:06 +08:00
mach-mx1ads.c ARM: imx: remove unneeded mach/irq.h inclusion 2012-07-01 21:58:41 +08:00
mach-mx21ads.c Merge branch 'imx/sparse-irq' of git://git.linaro.org/people/shawnguo/linux-2.6 into next/irq 2012-07-02 23:18:19 +02:00
mach-mx25_3ds.c ARM: imx: remove unused pdata from device macros 2012-07-06 08:25:20 +02:00
mach-mx27_3ds.c arm-soc: sparse IRQ conversion 2012-07-23 17:36:02 -07:00
mach-mx27ads.c arm-soc: sparse IRQ conversion 2012-07-23 17:36:02 -07:00
mach-mx31_3ds.c arm-soc: sparse IRQ conversion 2012-07-23 17:36:02 -07:00
mach-mx31ads.c ARM: imx: add a legacy irqdomain for mx31ads 2012-07-01 21:58:21 +08:00
mach-mx31lilly.c ARM: imx: eliminate macro IOMUX_TO_IRQ() 2012-07-01 21:57:06 +08:00
mach-mx31lite.c ARM: imx: remove unneeded mach/irq.h inclusion 2012-07-01 21:58:41 +08:00
mach-mx31moboard.c arm-soc: sparse IRQ conversion 2012-07-23 17:36:02 -07:00
mach-mx35_3ds.c arm-soc: sparse IRQ conversion 2012-07-23 17:36:02 -07:00
mach-mx50_rdp.c Consolidate i.MX 5 platforms to be under the new shared i.MX 3/5/6 tree. 2012-01-23 14:50:30 -08:00
mach-mx51_3ds.c arm-soc: sparse IRQ conversion 2012-07-23 17:36:02 -07:00
mach-mx51_babbage.c ARM: imx: remove unused pdata from device macros 2012-07-06 08:25:20 +02:00
mach-mx51_efikamx.c arm-soc: sweeping late_initcall cleanup 2012-05-26 13:14:01 -07:00
mach-mx51_efikasb.c arm-soc: sweeping late_initcall cleanup 2012-05-26 13:14:01 -07:00
mach-mx53_ard.c arm-soc: power management changes 2012-07-23 17:43:53 -07:00
mach-mx53_evk.c arm-soc: power management changes 2012-07-23 17:43:53 -07:00
mach-mx53_loco.c arm-soc: power management changes 2012-07-23 17:43:53 -07:00
mach-mx53_smd.c arm-soc: power management changes 2012-07-23 17:43:53 -07:00
mach-mxt_td60.c ARM: imx: eliminate macro IRQ_GPIOx() 2012-07-01 21:57:16 +08:00
mach-pca100.c arm-soc: sparse IRQ conversion 2012-07-23 17:36:02 -07:00
mach-pcm037_eet.c ARM: imx: use machine specific hook for late init 2012-05-08 20:36:16 +08:00
mach-pcm037.c arm-soc: sparse IRQ conversion 2012-07-23 17:36:02 -07:00
mach-pcm038.c arm-soc: sparse IRQ conversion 2012-07-23 17:36:02 -07:00
mach-pcm043.c arm-soc: sparse IRQ conversion 2012-07-23 17:36:02 -07:00
mach-qong.c arm-soc: sparse IRQ conversion 2012-07-23 17:36:02 -07:00
mach-scb9328.c ARM: imx: remove unneeded mach/irq.h inclusion 2012-07-01 21:58:41 +08:00
mach-vpr200.c arm-soc: sparse IRQ conversion 2012-07-23 17:36:02 -07:00
Makefile ARM i.MX31: Add devicetree support 2012-07-10 19:23:03 +02:00
Makefile.boot ARM: dts: Add basic support for imx6q-sabresd 2012-05-11 15:17:52 +08:00
mm-imx1.c ARM: imx: remove unneeded mach/irq.h inclusion 2012-07-01 21:58:41 +08:00
mm-imx3.c GPIO changes for v3.6: 2012-07-26 13:56:38 -07:00
mm-imx5.c GPIO changes for v3.6: 2012-07-26 13:56:38 -07:00
mm-imx21.c ARM: imx: remove unneeded mach/irq.h inclusion 2012-07-01 21:58:41 +08:00
mm-imx25.c GPIO changes for v3.6: 2012-07-26 13:56:38 -07:00
mm-imx27.c ARM: imx: remove unneeded mach/irq.h inclusion 2012-07-01 21:58:41 +08:00
mmdc.c arm/imx6q: add core drivers clock, gpc, mmdc and src 2011-10-31 14:26:23 +01:00
mx1-camera-fiq-ksym.c ARM: imx: move mx1 support to mach-imx 2010-06-30 08:59:44 +02:00
mx1-camera-fiq.S ARM: imx: move mx1 support to mach-imx 2010-06-30 08:59:44 +02:00
mx31lilly-db.c dma: ipu: remove the use of ipu_platform_data 2012-07-01 21:57:43 +08:00
mx31lite-db.c arm-soc: sparse IRQ conversion 2012-07-23 17:36:02 -07:00
mx31moboard-devboard.c arm: imx: Start using struct usb_otg 2012-02-13 13:36:03 +02:00
mx31moboard-marxbot.c arm: imx: Start using struct usb_otg 2012-02-13 13:36:03 +02:00
mx31moboard-smartbot.c ARM: imx: move mx3 support to mach-imx 2011-05-19 13:11:38 +02:00
mx51_efika.c ARM: imx: eliminate macro IMX_GPIO_TO_IRQ() 2012-07-01 21:50:09 +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: eliminate macro IRQ_GPIOx() 2012-07-01 21:57:16 +08:00
platsmp.c arm/imx6q: add smp and cpu hotplug support 2011-10-31 14:26:24 +01:00
pm-imx3.c ARM i.MX3: Make ccm base address a variable 2012-04-25 17:03:45 +02:00
pm-imx5.c ARM: imx: Add imx5 cpuidle 2012-06-05 08:51:47 +02:00
pm-imx6q.c ARM: imx6q: resume PL310 only when CACHE_L2X0 defined 2011-12-26 10:18:59 +08:00
pm-imx27.c ARM: plat-mxc: hook special idle handlers to arm_pm_idle 2012-01-20 18:55:14 -05:00
src.c ARM: 7293/1: logical_cpu_map: decouple CPU mapping from SMP 2012-01-23 10:20:05 +00:00