@@ -4036,6 +4036,9 @@ int emulate_instruction(struct kvm_vcpu *vcpu,
}
++vcpu->stat.insn_emulation;
+ if (r == X86EMUL_UNHANDLEABLE)
+ return handle_emulation_failure(vcpu);
+
if (r) {
if (reexecute_instruction(vcpu, cr2))
return EMULATE_DONE;
@@ -4057,6 +4060,9 @@ int emulate_instruction(struct kvm_vcpu *vcpu,
restart:
r = x86_emulate_insn(&vcpu->arch.emulate_ctxt);
+ if (r == X86EMUL_UNHANDLEABLE)
+ return handle_emulation_failure(vcpu);
+
if (r) { /* emulation failed */
if (reexecute_instruction(vcpu, cr2))
return EMULATE_DONE;