KVM: arm64: Re-mask SError after the one instruction window
authorJames Morse <james.morse@arm.com>
Tue, 18 Jun 2019 15:18:08 +0000 (16:18 +0100)
committerMarc Zyngier <marc.zyngier@arm.com>
Fri, 5 Jul 2019 12:03:34 +0000 (13:03 +0100)
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>
arch/arm64/kvm/hyp/entry.S

index ebc8eb247bc9824500dc7b9b649c3424037ab131..5e25cc0e6aab6cfd4d9283d8037cd6547ef46b16 100644 (file)
@@ -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.