summaryrefslogtreecommitdiffstats
path: root/arch/arm64/kvm
diff options
context:
space:
mode:
authorJames Morse <james.morse@arm.com>2019-06-18 16:18:08 +0100
committerMarc Zyngier <marc.zyngier@arm.com>2019-07-05 13:03:34 +0100
commitdad6321ffacadbd1235faaf84897b63050b81a5f (patch)
tree6bf8a4feb46790a57d72b7ad50b57fc584468fd6 /arch/arm64/kvm
parent3276cc2489641f7f37e9558f5fe9d6ae17a25528 (diff)
downloadlinux-dad6321ffacadbd1235faaf84897b63050b81a5f.tar.gz
linux-dad6321ffacadbd1235faaf84897b63050b81a5f.tar.bz2
linux-dad6321ffacadbd1235faaf84897b63050b81a5f.zip
KVM: arm64: Re-mask SError after the one instruction window
KVM consumes any SError that were pending during guest exit with a dsb/isb and unmasking SError. It currently leaves SError unmasked for the rest of world-switch. This means any SError that occurs during this part of world-switch will cause a hyp-panic. We'd much prefer it to remain pending until we return to the host. Signed-off-by: James Morse <james.morse@arm.com> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Diffstat (limited to 'arch/arm64/kvm')
-rw-r--r--arch/arm64/kvm/hyp/entry.S2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/arm64/kvm/hyp/entry.S b/arch/arm64/kvm/hyp/entry.S
index ebc8eb247bc9..5e25cc0e6aab 100644
--- a/arch/arm64/kvm/hyp/entry.S
+++ b/arch/arm64/kvm/hyp/entry.S
@@ -175,6 +175,8 @@ abort_guest_exit_start:
.global abort_guest_exit_end
abort_guest_exit_end:
+ msr daifset, #4 // Mask aborts
+
// If the exception took place, restore the EL1 exception
// context so that we can report some information.
// Merge the exception code with the SError pending bit.