ARM: 8053/1: kernel: sleep: restore HYP mode configuration in cpu_resume
authorLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Thu, 8 May 2014 16:31:40 +0000 (17:31 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sun, 25 May 2014 22:49:27 +0000 (23:49 +0100)
commit0e0779da2233f2dfc85e9c3a6ea142476d326811
tree8222330d72936e63a8cec7d45956cb669bed6d14
parent72e6ae285a1dbff553734985bedadf409d99c02d
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>
arch/arm/include/asm/assembler.h
arch/arm/kernel/sleep.S