Merge branch 'x86-boot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[sfrench/cifs-2.6.git] / arch / arm64 / kvm / hyp / switch.c
index 63ac10ead3a89ff380883d83bd769c2f9aba20fd..b0b1478094b4c56907dcc1040aac9985f52187e4 100644 (file)
@@ -313,33 +313,6 @@ static bool __hyp_text __populate_fault_info(struct kvm_vcpu *vcpu)
        return true;
 }
 
-/* Skip an instruction which has been emulated. Returns true if
- * execution can continue or false if we need to exit hyp mode because
- * single-step was in effect.
- */
-static bool __hyp_text __skip_instr(struct kvm_vcpu *vcpu)
-{
-       *vcpu_pc(vcpu) = read_sysreg_el2(elr);
-
-       if (vcpu_mode_is_32bit(vcpu)) {
-               vcpu->arch.ctxt.gp_regs.regs.pstate = read_sysreg_el2(spsr);
-               kvm_skip_instr32(vcpu, kvm_vcpu_trap_il_is32bit(vcpu));
-               write_sysreg_el2(vcpu->arch.ctxt.gp_regs.regs.pstate, spsr);
-       } else {
-               *vcpu_pc(vcpu) += 4;
-       }
-
-       write_sysreg_el2(*vcpu_pc(vcpu), elr);
-
-       if (vcpu->guest_debug & KVM_GUESTDBG_SINGLESTEP) {
-               vcpu->arch.fault.esr_el2 =
-                       (ESR_ELx_EC_SOFTSTP_LOW << ESR_ELx_EC_SHIFT) | 0x22;
-               return false;
-       } else {
-               return true;
-       }
-}
-
 static bool __hyp_text __hyp_switch_fpsimd(struct kvm_vcpu *vcpu)
 {
        struct user_fpsimd_state *host_fpsimd = vcpu->arch.host_fpsimd_state;
@@ -428,20 +401,12 @@ static bool __hyp_text fixup_guest_exit(struct kvm_vcpu *vcpu, u64 *exit_code)
                if (valid) {
                        int ret = __vgic_v2_perform_cpuif_access(vcpu);
 
-                       if (ret ==  1 && __skip_instr(vcpu))
+                       if (ret == 1)
                                return true;
 
-                       if (ret == -1) {
-                               /* Promote an illegal access to an
-                                * SError. If we would be returning
-                                * due to single-step clear the SS
-                                * bit so handle_exit knows what to
-                                * do after dealing with the error.
-                                */
-                               if (!__skip_instr(vcpu))
-                                       *vcpu_cpsr(vcpu) &= ~DBG_SPSR_SS;
+                       /* Promote an illegal access to an SError.*/
+                       if (ret == -1)
                                *exit_code = ARM_EXCEPTION_EL1_SERROR;
-                       }
 
                        goto exit;
                }
@@ -452,7 +417,7 @@ static bool __hyp_text fixup_guest_exit(struct kvm_vcpu *vcpu, u64 *exit_code)
             kvm_vcpu_trap_get_class(vcpu) == ESR_ELx_EC_CP15_32)) {
                int ret = __vgic_v3_perform_cpuif_access(vcpu);
 
-               if (ret == 1 && __skip_instr(vcpu))
+               if (ret == 1)
                        return true;
        }