diff options
author | Avi Kivity <avi@qumranet.com> | 2008-09-01 08:57:51 -0400 |
---|---|---|
committer | Avi Kivity <avi@qumranet.com> | 2008-10-15 04:15:25 -0400 |
commit | fa89a81766e33343fa8f0fe0e371819bf94a17a1 (patch) | |
tree | f6b1b9a1419313ebca9bbd608b6fd2c06168906b | |
parent | d40a1ee4859c673677c9811ae84475c4051baca5 (diff) |
KVM: Add statistics for guest irq injections
These can help show whether a guest is making progress or not.
Signed-off-by: Avi Kivity <avi@qumranet.com>
-rw-r--r-- | arch/x86/kvm/svm.c | 1 | ||||
-rw-r--r-- | arch/x86/kvm/vmx.c | 1 | ||||
-rw-r--r-- | arch/x86/kvm/x86.c | 1 | ||||
-rw-r--r-- | include/asm-x86/kvm_host.h | 1 |
4 files changed, 4 insertions, 0 deletions
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 60228888d1b5..9b54550fa4d2 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c | |||
@@ -1519,6 +1519,7 @@ static inline void svm_inject_irq(struct vcpu_svm *svm, int irq) | |||
1519 | 1519 | ||
1520 | KVMTRACE_1D(INJ_VIRQ, &svm->vcpu, (u32)irq, handler); | 1520 | KVMTRACE_1D(INJ_VIRQ, &svm->vcpu, (u32)irq, handler); |
1521 | 1521 | ||
1522 | ++svm->vcpu.stat.irq_injections; | ||
1522 | control = &svm->vmcb->control; | 1523 | control = &svm->vmcb->control; |
1523 | control->int_vector = irq; | 1524 | control->int_vector = irq; |
1524 | control->int_ctl &= ~V_INTR_PRIO_MASK; | 1525 | control->int_ctl &= ~V_INTR_PRIO_MASK; |
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c index 71e57ae1cab7..e7e8c86f1b7d 100644 --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c | |||
@@ -2341,6 +2341,7 @@ static void vmx_inject_irq(struct kvm_vcpu *vcpu, int irq) | |||
2341 | 2341 | ||
2342 | KVMTRACE_1D(INJ_VIRQ, vcpu, (u32)irq, handler); | 2342 | KVMTRACE_1D(INJ_VIRQ, vcpu, (u32)irq, handler); |
2343 | 2343 | ||
2344 | ++vcpu->stat.irq_injections; | ||
2344 | if (vcpu->arch.rmode.active) { | 2345 | if (vcpu->arch.rmode.active) { |
2345 | vmx->rmode.irq.pending = true; | 2346 | vmx->rmode.irq.pending = true; |
2346 | vmx->rmode.irq.vector = irq; | 2347 | vmx->rmode.irq.vector = irq; |
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index e3b89662cf6d..3f3cb7107c03 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c | |||
@@ -92,6 +92,7 @@ struct kvm_stats_debugfs_item debugfs_entries[] = { | |||
92 | { "fpu_reload", VCPU_STAT(fpu_reload) }, | 92 | { "fpu_reload", VCPU_STAT(fpu_reload) }, |
93 | { "insn_emulation", VCPU_STAT(insn_emulation) }, | 93 | { "insn_emulation", VCPU_STAT(insn_emulation) }, |
94 | { "insn_emulation_fail", VCPU_STAT(insn_emulation_fail) }, | 94 | { "insn_emulation_fail", VCPU_STAT(insn_emulation_fail) }, |
95 | { "irq_injections", VCPU_STAT(irq_injections) }, | ||
95 | { "mmu_shadow_zapped", VM_STAT(mmu_shadow_zapped) }, | 96 | { "mmu_shadow_zapped", VM_STAT(mmu_shadow_zapped) }, |
96 | { "mmu_pte_write", VM_STAT(mmu_pte_write) }, | 97 | { "mmu_pte_write", VM_STAT(mmu_pte_write) }, |
97 | { "mmu_pte_updated", VM_STAT(mmu_pte_updated) }, | 98 | { "mmu_pte_updated", VM_STAT(mmu_pte_updated) }, |
diff --git a/include/asm-x86/kvm_host.h b/include/asm-x86/kvm_host.h index b6d26b80b75b..68a3ac13afce 100644 --- a/include/asm-x86/kvm_host.h +++ b/include/asm-x86/kvm_host.h | |||
@@ -413,6 +413,7 @@ struct kvm_vcpu_stat { | |||
413 | u32 insn_emulation; | 413 | u32 insn_emulation; |
414 | u32 insn_emulation_fail; | 414 | u32 insn_emulation_fail; |
415 | u32 hypercalls; | 415 | u32 hypercalls; |
416 | u32 irq_injections; | ||
416 | }; | 417 | }; |
417 | 418 | ||
418 | struct descriptor_table { | 419 | struct descriptor_table { |