Move the stat.mmio_exits update into x86_emulate_instruction(). This is
both a bug fix, e.g. the current update flows will incorrectly increment
mmio_exits on emulation failure, and a preparatory change to set the
stage for eliminating EMULATE_DONE and company.
Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
case EMULATE_DONE:
return 1;
case EMULATE_USER_EXIT:
case EMULATE_DONE:
return 1;
case EMULATE_USER_EXIT:
- ++vcpu->stat.mmio_exits;
- /* fall through */
case EMULATE_FAIL:
return 0;
default:
case EMULATE_FAIL:
return 0;
default:
err = kvm_emulate_instruction(vcpu, 0);
if (err == EMULATE_USER_EXIT) {
err = kvm_emulate_instruction(vcpu, 0);
if (err == EMULATE_USER_EXIT) {
- ++vcpu->stat.mmio_exits;
}
r = EMULATE_USER_EXIT;
} else if (vcpu->mmio_needed) {
}
r = EMULATE_USER_EXIT;
} else if (vcpu->mmio_needed) {
+ ++vcpu->stat.mmio_exits;
+
if (!vcpu->mmio_is_write)
writeback = false;
r = EMULATE_USER_EXIT;
if (!vcpu->mmio_is_write)
writeback = false;
r = EMULATE_USER_EXIT;