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
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
ehci-imx27.c
ehci-imx31.c
ehci-imx35.c
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
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
irq-common.c ARM: i.MX: Fix FIQ interrupt handling for TZIC 2016-06-21 15:57:05 +08:00
irq-common.h
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
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
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
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
mm-imx3.c ARM: imx: deconstruct mx3_idle 2016-06-28 10:26:37 +08:00
mm-imx21.c
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
mx21.h
mx27.h
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
suspend-imx53.S
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