linux/arch/arm64/kvm
Christoffer Dall 05e0127f9e arm/arm64: KVM: Complete WFI/WFE instructions
The architecture specifies that when the processor wakes up from a WFE
or WFI instruction, the instruction is considered complete, however we
currrently return to EL1 (or EL0) at the WFI/WFE instruction itself.

While most guests may not be affected by this because their local
exception handler performs an exception returning setting the event bit
or with an interrupt pending, some guests like UEFI will get wedged due
this little mishap.

Simply skip the instruction when we have completed the emulation.

Cc: <stable@vger.kernel.org>
Acked-by: Marc Zyngier <marc.zyngier@arm.com>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
2014-08-29 11:53:53 +02:00
..
emulate.c arm64: KVM: 32bit conditional execution emulation 2013-06-12 16:42:15 +01:00
guest.c arm64: KVM: allow export and import of generic timer regs 2014-07-11 04:46:55 -07:00
handle_exit.c arm/arm64: KVM: Complete WFI/WFE instructions 2014-08-29 11:53:53 +02:00
hyp-init.S ARM/ARM64: KVM: Nuke Hyp-mode tlbs before enabling MMU 2014-08-29 11:53:26 +02:00
hyp.S arm64: KVM: enable trapping of all debug registers 2014-07-11 04:57:46 -07:00
inject_fault.c arm64: KVM: 32bit guest fault injection 2013-06-12 16:42:18 +01:00
Kconfig arm64: KVM: Add Kconfig option for max VCPUs per-Guest 2013-12-28 10:28:50 +00:00
Makefile arm64: KVM: vgic: enable GICv2 emulation on top on GICv3 hardware 2014-07-11 04:57:37 -07:00
regmap.c arm64: KVM: 32bit GP register access 2013-06-12 16:42:14 +01:00
reset.c arm64: KVM: enable initialization of a 32bit vcpu 2013-06-12 16:42:18 +01:00
sys_regs_generic_v8.c arm64: KVM: Enable minimalistic support for Cortex-A53 2014-05-25 20:05:30 +02:00
sys_regs.c arm64: KVM: fix 64bit CP15 VM access for 32bit guests 2014-08-01 14:05:06 +02:00
sys_regs.h arm64: KVM: allows discrimination of AArch32 sysreg access 2014-03-03 01:15:21 +00:00
vgic-v2-switch.S arm64: KVM: split GICv2 world switch from hyp code 2014-07-11 04:57:36 -07:00
vgic-v3-switch.S arm64: KVM: GICv3: move system register access to msr_s/mrs_s 2014-07-31 15:52:14 +02:00