linux/arch/arm/mach-imx
Kohji Okuno 91740fc824 ARM: imx6q: cpuidle: fix bug that CPU might not wake up at expected time
In the current cpuidle implementation for i.MX6q, the CPU that sets
'WAIT_UNCLOCKED' and the CPU that returns to 'WAIT_CLOCKED' are always
the same. While the CPU that sets 'WAIT_UNCLOCKED' is in IDLE state of
"WAIT", if the other CPU wakes up and enters IDLE state of "WFI"
istead of "WAIT", this CPU can not wake up at expired time.
 Because, in the case of "WFI", the CPU must be waked up by the local
timer interrupt. But, while 'WAIT_UNCLOCKED' is set, the local timer
is stopped, when all CPUs execute "wfi" instruction. As a result, the
local timer interrupt is not fired.
 In this situation, this CPU will wake up by IRQ different from local
timer. (e.g. broacast timer)

So, this fix changes CPU to return to 'WAIT_CLOCKED'.

Signed-off-by: Kohji Okuno <okuno.kohji@jp.panasonic.com>
Fixes: e5f9dec8ff ("ARM: imx6q: support WAIT mode using cpuidle")
Cc: <stable@vger.kernel.org>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
2019-03-19 16:48:00 +08:00
..
devices License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
3ds_debugboard.c ARM: imx: 3ds-debugboard: Include "3ds_debugboard.h" header file 2017-10-13 14:44:02 +08:00
3ds_debugboard.h
anatop.c ARM: imx: add i.mx6ulz msl support 2018-09-30 15:31:40 +08:00
avic.c ARM: imx: avic: set low-power interrupt mask for imx25 2018-02-28 08:55:01 +08:00
board-mx31lilly.h
board-mx31lite.h
board-mx31moboard.h
common.h ARM: imx: add i.MX7ULP cpuidle support 2019-01-15 23:03:40 +08:00
cpu-imx5.c ARM: mx5: Set the DBGEN bit in ARM_GPC register 2018-07-12 09:52:20 +08:00
cpu-imx25.c ARM: mx25: Retrieve IIM base from dt 2015-03-13 22:06:35 +08:00
cpu-imx27.c ARM: imx: use endian-safe readl/readw/writel/writew 2016-02-02 13:24:17 +08:00
cpu-imx31.c ARM: imx: use endian-safe readl/readw/writel/writew 2016-02-02 13:24:17 +08:00
cpu-imx35.c ARM: imx: use endian-safe readl/readw/writel/writew 2016-02-02 13:24:17 +08:00
cpu.c ARM: imx: add initial support for imx7ulp 2018-12-10 08:56:30 +08:00
cpuidle-imx5.c ARM: imx: cpuidle-imx5: Include "cpuidle.h" header file 2017-10-13 14:44:05 +08:00
cpuidle-imx6q.c ARM: imx6q: cpuidle: fix bug that CPU might not wake up at expected time 2019-03-19 16:48:00 +08:00
cpuidle-imx6sl.c ARM: imx: remove i.MX6SLL support in i.MX6SL cpu idle driver 2018-06-19 09:07:34 +08:00
cpuidle-imx6sx.c ARM: imx: update the cpu power up timing setting on i.mx6sx 2018-12-06 09:55:13 +08:00
cpuidle-imx7ulp.c ARM: imx: add i.MX7ULP cpuidle support 2019-01-15 23:03:40 +08:00
cpuidle.h ARM: imx: add i.MX7ULP cpuidle support 2019-01-15 23:03:40 +08:00
crmregs-imx3.h
devices-imx21.h
devices-imx27.h
devices-imx31.h
devices-imx35.h ARM: imx: prepare for removal of flexcan_platform_data 2013-06-27 15:15:08 +02:00
ehci-imx27.c ARM: imx: move EHCI platform defines out of platform_data header 2014-07-18 16:10:04 +08:00
ehci-imx31.c ARM: imx: move EHCI platform defines out of platform_data header 2014-07-18 16:10:04 +08:00
ehci-imx35.c ARM: imx: move EHCI platform defines out of platform_data header 2014-07-18 16:10:04 +08:00
ehci.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
gpc.c ARM: imx: add L2 page power control for GPC 2018-06-19 09:06:48 +08:00
hardware.h ARM: imx: (trivial) fix typo and grammar 2016-09-05 10:36:19 +08:00
headsmp.S ARM: imx: enable big endian mode 2016-02-02 13:31:19 +08:00
hotplug.c ARM: imx: do not return from imx_cpu_die() call 2013-10-21 09:37:31 +08:00
iim.h
imx27-dt.c ARM: imx: rework mx27_pm_init() call 2016-06-28 10:26:40 +08:00
imx31-dt.c ARM: i.MX31: remove rnga registration as a platform device 2018-07-11 20:23:18 +08:00
imx35-dt.c ARM: i.MX: Do not explicitly call l2x0_of_init() 2016-06-21 20:40:47 +08:00
iomux-imx31.c ARM: imx: use endian-safe readl/readw/writel/writew 2016-02-02 13:24:17 +08:00
iomux-mx2x.h
iomux-mx3.h ARM: i.MX31 iomux: remove duplicates with alternate name 2016-08-08 21:41:17 +08:00
iomux-mx21.h
iomux-mx27.h
iomux-mx35.h
iomux-v1.c ARM: imx: use endian-safe readl/readw/writel/writew 2016-02-02 13:24:17 +08:00
iomux-v1.h
iomux-v3.c ARM: imx: use endian-safe readl/readw/writel/writew 2016-02-02 13:24:17 +08:00
iomux-v3.h ARM: imx: Fix trivial typo in comments 2015-03-03 12:05:46 +08:00
irq-common.c ARM: i.MX: Fix FIQ interrupt handling for TZIC 2016-06-21 15:57:05 +08:00
irq-common.h ARM: imx: drop support for irq priorisation 2013-12-09 13:18:25 +08:00
Kconfig ARM: imx: fix dependencies on imx7ulp 2018-12-11 10:41:20 +08:00
mach-armadillo5x0.c ARM: imx legacy: armadillo5x0: move peripheral initialization to .init_late 2016-09-20 22:35:08 +08:00
mach-bug.c ARM: i.MX: Setup IRQ handler from IRQ driver 2014-05-12 22:58:51 +08:00
mach-imx1.c ARM: i.MX: remove map_io callback 2017-01-02 14:02:09 +08:00
mach-imx6q.c cpufreq: imx6q: Move speed grading check to cpufreq driver 2017-10-18 10:08:21 +08:00
mach-imx6sl.c ARM: imx: call imx6sx_cpuidle_init() conditionally for 6sll 2018-07-11 21:05:20 +08:00
mach-imx6sx.c ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-imx6ul.c ARM: imx: mach-imx6ul: add imx6ull support 2016-11-15 08:58:43 +08:00
mach-imx7d-cm4.c ARM: imx: Provide support for NXP i.MX7D Cortex-M4 2018-07-03 15:17:57 +08:00
mach-imx7d.c ARM: SoC platform updates for v4.8 2016-08-01 18:27:08 -04:00
mach-imx7ulp.c ARM: imx: add i.MX7ULP SoC revision support 2019-01-16 09:36:07 +08:00
mach-imx25.c ARM: i.MX25: globally disable supervisor protect 2017-04-04 21:11:16 +08:00
mach-imx27_visstrim_m10.c dma-mapping: remove the DMA_MEMORY_EXCLUSIVE flag 2019-02-20 07:27:00 -07:00
mach-imx50.c ARM: imx: Use IRQCHIP_DECLARE for TZIC 2016-06-12 19:47:18 +08:00
mach-imx51.c ARM: imx51: fix a leaked reference by adding missing of_node_put 2019-03-19 16:48:00 +08:00
mach-imx53.c ARM: mx5: Set the DBGEN bit in ARM_GPC register 2018-07-12 09:52:20 +08:00
mach-kzm_arm11_01.c ARM: SoC platform updates for v4.9 2016-10-07 21:18:42 -07:00
mach-ls1021a.c ARM: imx: Add Freescale LS1021A SMP support 2014-11-23 14:56:21 +08:00
mach-mx21ads.c regulator: fixed/gpio: Pull inversion/OD into gpiolib 2019-02-06 15:58:29 +00:00
mach-mx27_3ds.c ARM: mach-mx27_3ds: Remove camera support 2017-01-03 13:52:38 +08:00
mach-mx27ads.c regulator: fixed/gpio: Pull inversion/OD into gpiolib 2019-02-06 15:58:29 +00:00
mach-mx31_3ds.c ARM: imx: Update spi_imx platform data to reflect current state 2018-04-18 11:11:23 +08:00
mach-mx31ads.c ARM: imx legacy: mx31ads: move peripheral initialization to .init_late 2016-09-20 22:34:51 +08:00
mach-mx31lilly.c ARM: imx: Update spi_imx platform data to reflect current state 2018-04-18 11:11:23 +08:00
mach-mx31lite.c ARM: imx: Update spi_imx platform data to reflect current state 2018-04-18 11:11:23 +08:00
mach-mx31moboard.c dma-mapping: remove the DMA_MEMORY_EXCLUSIVE flag 2019-02-20 07:27:00 -07:00
mach-mx35_3ds.c ARM: mach-mx35_3ds: Remove camera support 2017-01-03 13:52:31 +08:00
mach-pca100.c ARM: imx: pca100: use device properties for at24 eeprom 2018-04-18 11:18:27 +08:00
mach-pcm037_eet.c ARM: imx: Update spi_imx platform data to reflect current state 2018-04-18 11:11:23 +08:00
mach-pcm037.c ARM: imx: pcm037: use device properties for at24 eeprom 2018-04-18 11:18:30 +08:00
mach-pcm043.c mmc: sdhci: imx: Use the slot GPIO descriptor 2018-12-17 08:26:24 +01:00
mach-qong.c mtd: rawnand: Move platform_nand_xxx definitions out of rawnand.h 2018-10-03 11:12:25 +02:00
mach-vf610.c ARM: vf610: enable Cortex-M4 configuration on Vybrid SoC 2015-05-20 23:10:14 +02:00
mach-vpr200.c ARM: imx: vpr200: drop at24_platform_data 2018-04-18 11:18:07 +08:00
Makefile ARM: imx: add i.MX7ULP cpuidle support 2019-01-15 23:03:40 +08:00
Makefile.boot ARM: vf610: enable Cortex-M4 configuration on Vybrid SoC 2015-05-20 23:10:14 +02:00
mm-imx3.c ARM: imx: deconstruct mx3_idle 2016-06-28 10:26:37 +08:00
mm-imx21.c ARM: imx: move clk_prepare() out from mxc_restart() 2013-06-17 15:45:10 +08:00
mm-imx27.c ARM: imx: rework mx27_pm_init() call 2016-06-28 10:26:40 +08:00
mmdc.c perf/core, arch/arm: Use PERF_PMU_CAP_NO_EXCLUDE for exclusion incapable PMUs 2019-01-21 11:01:23 +01:00
mx2x.h
mx3x.h ARM: imx: move revision definitions and declarations into a header 2015-06-03 14:44:30 +08:00
mx21.h
mx27.h ARM: imx: move revision definitions and declarations into a header 2015-06-03 14:44:30 +08:00
mx31.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mx31lilly-db.c ARM: imx legacy: mx31lilly: move peripheral initialization to .init_late 2016-09-20 22:34:54 +08:00
mx31lite-db.c ARM: imx legacy: mx31lite: move peripheral initialization to .init_late 2016-09-20 22:34:47 +08:00
mx31moboard-devboard.c ARM: imx: imx31moboard: Include "board-mx31moboard.h" header file 2017-10-13 14:43:56 +08:00
mx31moboard-marxbot.c ARM: imx: imx31moboard: Include "board-mx31moboard.h" header file 2017-10-13 14:43:56 +08:00
mx31moboard-smartbot.c ARM: mx31moboard-smartbot: Remove camera support 2017-01-03 13:52:28 +08:00
mx35.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mxc.h ARM: imx: add initial support for imx7ulp 2018-12-10 08:56:30 +08:00
pcm037.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
platsmp.c ARM: 8641/1: treewide: Replace uses of virt_to_phys with __pa_symbol 2017-02-28 11:06:10 +00:00
pm-imx5.c ARM: imx: use endian-safe readl/readw/writel/writew 2016-02-02 13:24:17 +08:00
pm-imx6.c ARM: imx: add i.mx6ulz msl support 2018-09-30 15:31:40 +08:00
pm-imx7ulp.c ARM: imx: add i.MX7ULP cpuidle support 2019-01-15 23:03:40 +08:00
pm-imx25.c ARM: mx25: Add basic suspend/resume support 2016-02-14 11:24:18 +08:00
pm-imx27.c ARM: imx: rework mx27_pm_init() call 2016-06-28 10:26:40 +08:00
src.c ARM: 8641/1: treewide: Replace uses of virt_to_phys with __pa_symbol 2017-02-28 11:06:10 +00:00
ssi-fiq-ksym.c Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
ssi-fiq.S Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
suspend-imx6.S ARM: imx: add suspend/resume support for i.mx6ul 2015-09-17 08:54:35 +08:00
suspend-imx53.S ARM: imx53: Set DDR pins to high impedance when in suspend to RAM. 2015-06-03 14:49:36 +08:00
system.c ARM: imx: remove cpu_is_mx1 check 2016-06-28 10:26:20 +08:00
tzic.c ARM: SoC platform updates for v4.8 2016-08-01 18:27:08 -04:00
ulpi.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00