linux/arch/arm
Kevin Hilman 5b4d5bcc68 ARM: OMAP4: CPUidle: add synchronization for coupled idle states
With coupled idle states, a failure for any CPU to hit a low power
state must be coordinated such that all CPUs abort.

On OMAP4, when entering a coupled state, CPU0 has to wait for CPU1 to
enter its low power state before it can enter its low power state.

This is implemented by letting CPU0 wait for the CPU1 powerdomain to
hit off.  However, there are conditions where CPU1 might abort/fail
and not hit off while CPU0 is waiting for it.  For example, a CPU1
wakeup or a failed attempt to hit off due to hardware conditions.

To avoid the deadlock where CPU0 would continually wait for CPU1 to
hit off-mode, this patch adds a flag to signal when each CPU has come
out of its low-power state.  CPU0 then checks whether CPU1 has hit off
*or* has already completed its attempt to hit off.  If the latter,
CPU0 must abort its attempt to hit a low-power state so the coupled
state enter method can return.

In addition, cpuidle_coupled_parallel_barrier() is used to ensure the
clearing of the 'done' flag is synchronized on all CPUs.

Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Signed-off-by: Kevin Hilman <khilman@ti.com>
2012-07-25 16:06:04 -07:00
..
boot ARM: SPEAr600: Fix timer interrupt definition in spear600.dtsi 2012-07-18 10:05:05 +05:30
common ARM: dma-mapping: fix debug messages in dmabounce code 2012-06-13 14:25:16 +02:00
configs ARM: OMAP2+: omap2plus_defconfig: EHCI driver is not stable, disable it 2012-07-09 01:15:07 -07:00
include/asm ARM: fix warnings about atomic64_read 2012-07-05 13:06:32 +01:00
kernel ARM: 7440/1: kprobes: only test 'sub pc, pc, #1b-2b+8-2' on ARMv6 2012-07-05 12:57:16 +01:00
lib ARM: Remove support for ARMv3 ARM610 and ARM710 CPUs 2012-05-05 05:50:50 +01:00
mach-at91 Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma 2012-05-25 09:31:59 -07:00
mach-bcmring
mach-clps711x ARM: clps711x: Cleanup IRQ handling 2012-05-15 21:20:59 +02:00
mach-cns3xxx ARM: PCI: provide a default bus scan implementation 2012-05-13 17:12:17 +01:00
mach-davinci arm-soc: sweeping late_initcall cleanup 2012-05-26 13:14:01 -07:00
mach-dove ARM: Orion: Fix WDT compile for Dove and MV78xx0 2012-07-04 10:37:34 +02:00
mach-ebsa110
mach-ep93xx - More robust parsing especially of xattr data in JFFS2 2012-06-01 16:55:42 -07:00
mach-exynos ARM: EXYNOS: register devices in 'need_restore' state for pm_domains 2012-07-12 17:29:55 +09:00
mach-footbridge ARM: PCI: provide a default bus scan implementation 2012-05-13 17:12:17 +01:00
mach-gemini
mach-h720x
mach-highbank ARM: highbank: Add smc calls to enable/disable the L2 2012-06-07 22:39:43 -07:00
mach-imx ARM: imx: assert SCC gate stays enabled 2012-07-04 09:38:29 +02:00
mach-integrator Merge branches 'amba', 'devel-stable', 'fixes', 'mach-types', 'mmci', 'pci' and 'versatile' into for-linus 2012-05-21 15:15:10 +01:00
mach-iop13xx ARM: PCI: get rid of pci_std_swizzle() 2012-05-13 17:12:16 +01:00
mach-iop32x ARM: PCI: provide a default bus scan implementation 2012-05-13 17:12:17 +01:00
mach-iop33x ARM: PCI: provide a default bus scan implementation 2012-05-13 17:12:17 +01:00
mach-ixp4xx - More robust parsing especially of xattr data in JFFS2 2012-06-01 16:55:42 -07:00
mach-kirkwood ARM: Orion: Fix Virtual/Physical mixup with watchdog 2012-06-23 16:19:21 -07:00
mach-ks8695 ARM: PCI: provide a default bus scan implementation 2012-05-13 17:12:17 +01:00
mach-l7200/include/mach
mach-lpc32xx GPIO driver changes for v3.5 merge window 2012-05-24 14:01:46 -07:00
mach-mmp ARM: mmp: remove mach/gpio-pxa.h 2012-07-04 15:58:11 +08:00
mach-msm arm-soc: sweeping late_initcall cleanup 2012-05-26 13:14:01 -07:00
mach-mv78xx0 ARM: Orion: Fix WDT compile for Dove and MV78xx0 2012-07-04 10:37:34 +02:00
mach-mxs ARM: apx4devkit: fix FEC enabling PHY clock 2012-07-05 16:08:01 +08:00
mach-netx
mach-nomadik - More robust parsing especially of xattr data in JFFS2 2012-06-01 16:55:42 -07:00
mach-omap1 - More robust parsing especially of xattr data in JFFS2 2012-06-01 16:55:42 -07:00
mach-omap2 ARM: OMAP4: CPUidle: add synchronization for coupled idle states 2012-07-25 16:06:04 -07:00
mach-orion5x ARM: Orion: Fix Virtual/Physical mixup with watchdog 2012-06-23 16:19:21 -07:00
mach-picoxcell
mach-pnx4008 arm-soc: sweeping late_initcall cleanup 2012-05-26 13:14:01 -07:00
mach-prima2 arm-soc: sweeping late_initcall cleanup 2012-05-26 13:14:01 -07:00
mach-pxa ARM: pxa: hx4700: Fix basic suspend/resume 2012-07-01 14:40:58 +08:00
mach-realview
mach-rpc
mach-s3c24xx ARM: S3C24XX: Correct AC97 clock control bit for S3C2440 2012-07-13 17:48:56 +09:00
mach-s3c64xx fbdev updates for 3.5 2012-06-01 16:57:51 -07:00
mach-s3c2410
mach-s3c2412
mach-s3c2440
mach-s5p64x0 fbdev updates for 3.5 2012-06-01 16:57:51 -07:00
mach-s5pc100 fbdev updates for 3.5 2012-06-01 16:57:51 -07:00
mach-s5pv210 fbdev updates for 3.5 2012-06-01 16:57:51 -07:00
mach-sa1100 Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm 2012-05-29 18:21:44 -07:00
mach-shark ARM: PCI: provide a default bus scan implementation 2012-05-13 17:12:17 +01:00
mach-shmobile ARM: shmobile: fix platsmp.c build when ARCH_SH73A0=n 2012-07-06 22:00:20 +02:00
mach-spear3xx Clk:spear3xx:Fix: Rename clk ids within predefined limit 2012-07-18 10:04:39 +05:30
mach-spear6xx Clk:spear6xx:Fix: Rename clk ids within predefined limit 2012-07-18 10:04:42 +05:30
mach-spear13xx Viresh has moved 2012-06-20 14:39:36 -07:00
mach-tegra ARM: tegra: make tegra_cpu_reset_handler_enable() __init 2012-06-18 16:42:57 -07:00
mach-u300
mach-ux500 ARM: ux500: Over-ride the DT device naming scheme for pinctrl 2012-07-06 21:42:10 +02:00
mach-versatile ARM: fix mach-versatile/pci.c warning 2012-07-04 17:04:57 +01:00
mach-vexpress Merge branch 'late/soc' into devel-late 2012-05-30 16:06:46 -07:00
mach-vt8500
mach-w90x900
mach-zynq
mm Merge branch 'fixes-for-linus' of git://git.linaro.org/people/mszyprowski/linux-dma-mapping 2012-07-17 08:43:12 -07:00
net ARM: 7421/1: bpf_jit: BPF_S_ANC_ALU_XOR_X support 2012-06-14 15:12:13 +01:00
nwfpe
oprofile
plat-iop ARM: PCI: provide a default bus scan implementation 2012-05-13 17:12:17 +01:00
plat-mxc Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media 2012-06-25 14:53:09 -07:00
plat-nomadik ARM: nomadik: enable PINCTRL_NOMADIK where needed 2012-05-15 14:42:57 +02:00
plat-omap Some uncontroversial OMAP clock, hwmod, and compiler warning fixes for 3.5-rc 2012-06-23 16:16:29 -07:00
plat-orion ARM: Orion: Fix Virtual/Physical mixup with watchdog 2012-06-23 16:19:21 -07:00
plat-pxa ARM: MMP: add pxa910-ssp into ssp_id_table 2012-06-11 12:25:50 +08:00
plat-s3c24xx ARM: S3C24XX: move common clock init into common.c 2012-05-12 16:22:18 +09:00
plat-samsung ARM: S3C24XX: Correct CAMIF interrupt definitions 2012-07-13 17:48:56 +09:00
plat-spear Viresh has moved 2012-06-20 14:39:36 -07:00
plat-versatile ARM: 7389/2: plat-versatile: modernize FPGA IRQ controller 2012-05-04 16:53:37 +01:00
tools ARM: Update mach-types 2012-04-26 08:46:02 +01:00
vfp Merge branch 'misc' into for-linus 2012-05-21 15:15:24 +01:00
Kconfig ARM: Orion5x - Restore parts of io.h, with rework 2012-06-23 16:18:17 -07:00
Kconfig-nommu
Kconfig.debug arm-soc: device tree conversions, part 2 2012-05-26 12:57:47 -07:00
Makefile arm-soc: soc specific changes, part 2 2012-05-26 13:05:55 -07:00