linux/arch/arm
Lorenzo Pieralisi 0e0779da22 ARM: 8053/1: kernel: sleep: restore HYP mode configuration in cpu_resume
On CPUs with virtualization extensions the kernel installs HYP mode
configuration on both primary and secondary cpus upon cold boot.

On platforms where CPUs are shutdown in idle paths (ie CPU core gating),
when a CPU resumes from low-power states it currently does not execute
code that reinstalls the HYP configuration, which means that the kernel
cannot run eg KVM properly on such machines.

This patch, mirroring cold-boot behaviour, executes position independent
code that reinstalls HYP configuration and drops to SVC mode safely on
warmboot, so that deep idle states can be enabled in kernel running as
hosts on platforms with power management HW.

Cc: Christoffer Dall <christoffer.dall@linaro.org>
Cc: Dave Martin <dave.martin@arm.com>
Cc: Marc Zyngier <marc.zyngier@arm.com>
Cc: Nicolas Pitre <nico@linaro.org>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Acked-by: Marc Zyngier <marc.zyngier@arm.com>
Reviewed-by: Dave Martin <Dave.Martin@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2014-05-25 23:49:27 +01:00
..
boot Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2014-04-10 08:55:08 -07:00
common ARM: 8029/1: mcpm: Rename the power_down_finish() functions to be less confusing 2014-05-25 23:48:12 +01:00
configs MMC highlights for 3.15: 2014-04-09 08:39:39 -07:00
crypto
firmware ARM: trusted_foundations: implement prepare_idle() 2014-02-18 13:46:46 -07:00
include ARM: 8053/1: kernel: sleep: restore HYP mode configuration in cpu_resume 2014-05-25 23:49:27 +01:00
kernel ARM: 8053/1: kernel: sleep: restore HYP mode configuration in cpu_resume 2014-05-25 23:49:27 +01:00
kvm CPU hotplug notifiers registration fixes for 3.15-rc1 2014-04-07 14:55:46 -07:00
lib ARM: 7990/1: asm: rename logical shift macros push pull into lspush lspull 2014-02-25 11:33:57 +00:00
mach-at91 ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-bcm ARM: SoC specific changes 2014-04-05 14:19:54 -07:00
mach-berlin ARM: select HAVE_SMP for V7 multi-platform 2014-02-19 16:43:27 -06:00
mach-clps711x ARM: SoC specific changes 2014-04-05 14:19:54 -07:00
mach-cns3xxx ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-davinci ARM: SoC: driver changes 2014-04-05 15:37:40 -07:00
mach-dove ARM: SoC: driver changes 2014-04-05 15:37:40 -07:00
mach-ebsa110 ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-efm32 ARM: efm32: drop unused file <mach/timex.h> 2014-02-24 10:07:27 +01:00
mach-ep93xx ARM: 8036/1: Enable IRQs before attempting to read user space in __und_usr 2014-04-25 12:06:38 +01:00
mach-exynos ARM: SoC: late cleanups 2014-04-05 15:46:37 -07:00
mach-footbridge ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-gemini ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-highbank ARM: select HAVE_SMP for V7 multi-platform 2014-02-19 16:43:27 -06:00
mach-hisi ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-imx ARM: SoC specific changes 2014-04-05 14:19:54 -07:00
mach-integrator ARM: SoC: late cleanups 2014-04-05 15:46:37 -07:00
mach-iop13xx
mach-iop32x This cleanup series gets rid of <mach/timex.h> for platforms not using 2014-02-24 10:06:56 +01:00
mach-iop33x
mach-ixp4xx ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-keystone ARM: SoC: device tree changes 2014-04-05 15:29:04 -07:00
mach-kirkwood ARM: SoC: driver changes 2014-04-05 15:37:40 -07:00
mach-ks8695 ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-lpc32xx ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-mmp ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-moxart ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-msm ARM: SoC specific changes 2014-04-05 14:19:54 -07:00
mach-mv78xx0 ARM: SoC: driver changes 2014-04-05 15:37:40 -07:00
mach-mvebu ARM: SoC specific changes 2014-04-05 14:19:54 -07:00
mach-mxs ARM: SoC: device tree changes 2014-04-05 15:29:04 -07:00
mach-netx ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-nomadik ARM: centralize common multi-platform kconfig options 2014-02-19 16:38:18 -06:00
mach-nspire ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-omap1 ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-omap2 fbdev changes for 3.15 (OMAP) 2014-04-07 10:47:51 -07:00
mach-orion5x ARM: SoC: driver changes 2014-04-05 15:37:40 -07:00
mach-picoxcell Kconfig: rename HAS_IOPORT to HAS_IOPORT_MAP 2014-04-07 16:36:11 -07:00
mach-prima2 Kconfig: rename HAS_IOPORT to HAS_IOPORT_MAP 2014-04-07 16:36:11 -07:00
mach-pxa pwm: Changes for v3.15-rc1 2014-04-05 18:32:31 -07:00
mach-qcom ARM: qcom: Add SMP support for KPSSv2 2014-02-11 15:00:40 -06:00
mach-realview ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-rockchip i.MX SoC changes for 3.15: 2014-03-09 12:03:18 -07:00
mach-rpc ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-s3c24xx Kconfig: rename HAS_IOPORT to HAS_IOPORT_MAP 2014-04-07 16:36:11 -07:00
mach-s3c64xx ARM: SoC: late cleanups 2014-04-05 15:46:37 -07:00
mach-s5p64x0 ARM: SoC: late cleanups 2014-04-05 15:46:37 -07:00
mach-s5pc100 ARM: SoC: late cleanups 2014-04-05 15:46:37 -07:00
mach-s5pv210 ARM: SoC: late cleanups 2014-04-05 15:46:37 -07:00
mach-sa1100 ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-shmobile Kconfig: rename HAS_IOPORT to HAS_IOPORT_MAP 2014-04-07 16:36:11 -07:00
mach-socfpga The clock framework changes for 3.15 look similar to past pull requests. 2014-04-05 18:39:18 -07:00
mach-spear ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-sti Merge branch 'cleanup/kconfig' into next/drivers 2014-03-18 16:25:47 +01:00
mach-sunxi ARM: SoC specific changes 2014-04-05 14:19:54 -07:00
mach-tegra ARM: SoC specific changes 2014-04-05 14:19:54 -07:00
mach-u300 ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-ux500 ARM: SoC: device tree changes 2014-04-05 15:29:04 -07:00
mach-versatile ARM: SoC: driver changes 2014-04-05 15:37:40 -07:00
mach-vexpress ARM: 8029/1: mcpm: Rename the power_down_finish() functions to be less confusing 2014-05-25 23:48:12 +01:00
mach-vt8500 ARM: vt8500: enable V6K instead of plain V6 2014-02-19 16:47:16 -06:00
mach-w90x900 ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-zynq ARM: SoC: late cleanups 2014-04-05 15:46:37 -07:00
mm ARM: 8043/1: uprobes need icache flush after xol write 2014-05-25 23:48:45 +01:00
net net: filter: add jited flag to indicate jit compiled filters 2014-03-31 00:45:08 -04:00
nwfpe
oprofile
plat-iop ARM: 8000/1: misc: remove deprecated IRQF_DISABLED 2014-03-12 10:32:38 +00:00
plat-omap ARM: SoC: device tree changes 2014-04-05 15:29:04 -07:00
plat-orion ARM: SoC: driver changes 2014-04-05 15:37:40 -07:00
plat-pxa
plat-samsung Kconfig: rename HAS_IOPORT to HAS_IOPORT_MAP 2014-04-07 16:36:11 -07:00
plat-versatile
tools
vfp ARM: 8036/1: Enable IRQs before attempting to read user space in __und_usr 2014-04-25 12:06:38 +01:00
xen xen/grant-table: Refactor gnttab_[un]map_refs to avoid m2p_override 2014-03-18 14:40:19 +00:00
Kconfig ARM: 8011/1: ARM hibernation / suspend-to-disk 2014-04-23 01:24:14 +01:00
Kconfig-nommu
Kconfig.debug ARM: SoC: late cleanups 2014-04-05 15:46:37 -07:00
Makefile ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00