Commit f2b5756b authored by Avi Kivity's avatar Avi Kivity

KVM: Add instruction emulation statistics

parent f096ed85
...@@ -249,6 +249,8 @@ struct kvm_stat { ...@@ -249,6 +249,8 @@ struct kvm_stat {
u32 host_state_reload; u32 host_state_reload;
u32 efer_reload; u32 efer_reload;
u32 fpu_reload; u32 fpu_reload;
u32 insn_emulation;
u32 insn_emulation_fail;
}; };
struct kvm_io_device { struct kvm_io_device {
......
...@@ -63,6 +63,8 @@ struct kvm_stats_debugfs_item debugfs_entries[] = { ...@@ -63,6 +63,8 @@ struct kvm_stats_debugfs_item debugfs_entries[] = {
{ "host_state_reload", STAT_OFFSET(host_state_reload) }, { "host_state_reload", STAT_OFFSET(host_state_reload) },
{ "efer_reload", STAT_OFFSET(efer_reload) }, { "efer_reload", STAT_OFFSET(efer_reload) },
{ "fpu_reload", STAT_OFFSET(fpu_reload) }, { "fpu_reload", STAT_OFFSET(fpu_reload) },
{ "insn_emulation", STAT_OFFSET(insn_emulation) },
{ "insn_emulation_fail", STAT_OFFSET(insn_emulation_fail) },
{ NULL } { NULL }
}; };
...@@ -1381,7 +1383,9 @@ int emulate_instruction(struct kvm_vcpu *vcpu, ...@@ -1381,7 +1383,9 @@ int emulate_instruction(struct kvm_vcpu *vcpu,
get_segment_base(vcpu, VCPU_SREG_FS); get_segment_base(vcpu, VCPU_SREG_FS);
r = x86_decode_insn(&vcpu->emulate_ctxt, &emulate_ops); r = x86_decode_insn(&vcpu->emulate_ctxt, &emulate_ops);
++vcpu->stat.insn_emulation;
if (r) { if (r) {
++vcpu->stat.insn_emulation_fail;
if (kvm_mmu_unprotect_page_virt(vcpu, cr2)) if (kvm_mmu_unprotect_page_virt(vcpu, cr2))
return EMULATE_DONE; return EMULATE_DONE;
return EMULATE_FAIL; return EMULATE_FAIL;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment