linux/arch/arm
Dave Martin 33cb667a00 ARM: vexpress/TC2: Implement MCPM power_down_finish()
This patch implements the power_down_finish() method for TC2, to
enable the kernel to confirm when CPUs are safely powered down.

The information required for determining when a CPU is parked
cannot be obtained from any single place, so a few sources of
information must be combined:

  * mcpm_cpu_power_down() must be pending for the CPU, so that we
    don't get confused by false STANDBYWFI positives arising from
    CPUidle.  This is detected by waiting for the tc2_pm use count
    for the target CPU to reach 0.

  * Either the SPC must report that the CPU has asserted
    STANDBYWFI, or the TC2 tile's reset control logic must be
    holding the CPU in reset.

    Just checking for STANDBYWFI is not sufficient, because this
    signal is not latched when the the cluster is clamped off and
    powered down: the relevant status bits just drop to zero.  This
    means that STANDBYWFI status cannot be used for reliable
    detection of the last CPU in a cluster reaching WFI.

This patch is required in order for kexec to work with MCPM on TC2.

MCPM code was changed in commit 0de0d64675 ('ARM: 7848/1: mcpm:
Implement cpu_kill() to synchronise on powerdown'), and since then it
will hit a WARN_ON_ONCE() due to power_down_finish not being implemented
on the TC2 platform.

Signed-off-by: Dave Martin <Dave.Martin@arm.com>
Acked-by: Pawel Moll <pawel.moll@arm.com>
Reviewed-by: Nicolas Pitre <nico@linaro.org>
Signed-off-by: Olof Johansson <olof@lixom.net>
2013-11-25 14:12:14 -08:00
..
boot Merge tag 'omap-for-v3.13/more-fixes-for-merge-window-take2' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into fixes 2013-11-25 13:34:49 -08:00
common Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma 2013-11-20 13:20:24 -08:00
configs watchdog: sirf: add watchdog driver of CSR SiRFprimaII and SiRFatlasVI 2013-11-17 19:37:23 +01:00
crypto ARM: add .gitignore entry for aesbs-core.S 2013-10-07 15:43:53 +01:00
include Merge branch 'fixes' of git://git.linaro.org/people/rmk/linux-arm 2013-11-22 09:56:51 -08:00
kernel ARM: 7892/1: Fix warning for V7M builds 2013-11-19 00:41:03 +00:00
kvm Fix percpu vmalloc allocations 2013-11-19 10:43:05 +02:00
lib ARM: 7893/1: bitops: only emit .arch_extension mp if CONFIG_SMP 2013-11-20 23:05:53 +00:00
mach-at91 Merge branch 'i2c/for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2013-11-18 15:50:07 -08: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 Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2013-11-12 10:02:59 +09:00
mach-clps711x ARM: clps711x: Use linux/sched_clock.h 2013-10-11 14:50:10 -07:00
mach-cns3xxx
mach-davinci Merge branch 'i2c/for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2013-11-18 15:50:07 -08: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 ACPI and power management updates for 3.13-rc1 2013-11-14 13:41:48 +09:00
mach-footbridge ARM: footbridge: fix build warnings for netwinder 2013-10-31 10:54:03 +00:00
mach-gemini GPIO bulk changes for the v3.13 development cycle 2013-11-12 15:50:46 +09:00
mach-highbank ARM: SoC fixes for 3.13 merge window 2013-11-16 12:45:55 -08:00
mach-imx Merge branch 'i2c/for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2013-11-18 15:50:07 -08:00
mach-integrator Few clock fixes, a runtime PM fix, and pinctrl-single fix along 2013-11-15 15:17:59 -08:00
mach-iop13xx dmaengine: remove DMA unmap from drivers 2013-11-14 11:04:38 -08:00
mach-iop32x ARM: plat-iop: pass physical base for GPIO 2013-09-20 23:05:19 +02:00
mach-iop33x ARM: plat-iop: pass physical base for GPIO 2013-09-20 23:05:19 +02:00
mach-ixp4xx Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm 2013-11-14 08:51:29 +09:00
mach-keystone DeviceTree updates for 3.13. This is a bit larger pull request than 2013-11-12 16:52:17 +09:00
mach-kirkwood Merge branch 'i2c/for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2013-11-18 15:50:07 -08:00
mach-ks8695
mach-lpc32xx
mach-mmp fbdev changes for 3.13 2013-11-14 14:44:20 +09:00
mach-msm Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2013-11-12 10:36:00 +09:00
mach-mv78xx0
mach-mvebu ARM: mvebu: support running big-endian 2013-10-19 20:46:34 +01:00
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 Merge branch 'i2c/for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2013-11-18 15:50:07 -08:00
mach-omap2 Merge tag 'omap-for-v3.13/more-fixes-for-merge-window-take2' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into fixes 2013-11-25 13:34:49 -08:00
mach-orion5x
mach-picoxcell
mach-prima2 ARM: prima2: remove custom .init_time hook 2013-09-29 21:09:38 +02:00
mach-pxa Merge branch 'i2c/for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2013-11-18 15:50:07 -08:00
mach-realview
mach-rockchip ARM: SoC board updates for 3.13 2013-11-11 16:57:16 +09:00
mach-rpc
mach-s3c24xx Merge branch 'i2c/for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2013-11-18 15:50:07 -08:00
mach-s3c64xx pwm: Changes for v3.13-rc1 2013-11-16 12:21:40 -08:00
mach-s5p64x0 ARM: SAMSUNG: Initialize PWM backlight enable_gpio field 2013-10-16 09:05:57 +02:00
mach-s5pc100 ARM: SAMSUNG: Initialize PWM backlight enable_gpio field 2013-10-16 09:05:57 +02:00
mach-s5pv210 pwm: Changes for v3.13-rc1 2013-11-16 12:21:40 -08:00
mach-sa1100 ACPI and power management updates for 3.13-rc1 2013-11-14 13:41:48 +09:00
mach-shmobile pwm: Changes for v3.13-rc1 2013-11-16 12:21:40 -08: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: SoC fixes for 3.13 merge window 2013-11-16 12:45:55 -08:00
mach-sunxi ARM: sunxi: remove .init_time hooks 2013-10-28 10:19:45 -07:00
mach-tegra ARM: SoC fixes for 3.13 merge window 2013-11-16 12:45:55 -08:00
mach-u300 DeviceTree updates for 3.13. This is a bit larger pull request than 2013-11-12 16:52:17 +09:00
mach-ux500 ACPI and power management updates for 3.13-rc1 2013-11-14 13:41:48 +09:00
mach-versatile
mach-vexpress ARM: vexpress/TC2: Implement MCPM power_down_finish() 2013-11-25 14:12:14 -08: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 ARM: w90x900: delete <mach/gpio.h> 2013-10-01 10:33:02 +02:00
mach-zynq ACPI and power management updates for 3.13-rc1 2013-11-14 13:41:48 +09:00
mm Merge branch 'fixes' of git://git.linaro.org/people/rmk/linux-arm 2013-11-22 09:56:51 -08:00
net Merge branch 'devel-stable' into for-next 2013-11-12 10:58:59 +00:00
nwfpe
oprofile
plat-iop ARM: plat-iop: move the GPIO driver to drivers/gpio 2013-09-20 23:03:36 +02:00
plat-omap ARM: OMAP: remove deprecated IRQF_DISABLED 2013-10-03 13:24:36 -07:00
plat-orion
plat-pxa
plat-samsung pwm: Changes for v3.13-rc1 2013-11-16 12:21:40 -08:00
plat-versatile ARM: vexpress: add big endian support 2013-10-19 20:46:34 +01:00
tools
vfp ARM: 7873/1: vfp: clear vfp_current_hw_state for dying cpu 2013-10-30 22:10:10 +00:00
xen Merge remote-tracking branch 'stefano/swiotlb-xen-9.1' into stable/for-linus-3.13 2013-11-08 16:10:48 -05:00
Kconfig Merge branch 'fixes' of git://git.linaro.org/people/rmk/linux-arm 2013-11-22 09:56:51 -08:00
Kconfig-nommu
Kconfig.debug Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm 2013-11-14 08:51:29 +09:00
Makefile Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm 2013-11-14 08:51:29 +09:00