• James Hogan's avatar
    KVM: MIPS: Make ERET handle ERL before EXL · 77b0cff5
    James Hogan authored
    commit ede5f3e7 upstream.
    
    The ERET instruction to return from exception is used for returning from
    exception level (Status.EXL) and error level (Status.ERL). If both bits
    are set however we should be returning from ERL first, as ERL can
    interrupt EXL, for example when an NMI is taken. KVM however checks EXL
    first.
    
    Fix the order of the checks to match the pseudocode in the instruction
    set manual.
    
    Fixes: e685c689 ("KVM/MIPS32: Privileged instruction/target branch emulation.")
    Signed-off-by: default avatarJames Hogan <james.hogan@imgtec.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: "Radim Krčmář <rkrcmar@redhat.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Cc: kvm@vger.kernel.org
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
    77b0cff5
kvm_mips_emul.c 63.1 KB