]> nv-tegra.nvidia Code Review - linux-3.10.git/commitdiff
KVM: SVM: correctly trace irq injection
authorGleb Natapov <gleb@redhat.com>
Sun, 23 May 2010 11:28:26 +0000 (14:28 +0300)
committerAvi Kivity <avi@redhat.com>
Sun, 1 Aug 2010 07:35:51 +0000 (10:35 +0300)
On SVM interrupts are injected by svm_set_irq() not svm_inject_irq().
The later is used only to wait for irq window.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
arch/x86/kvm/svm.c

index 134260c36ce2911c241544feeba464fb3159f33b..f5c2b432078ad7dea05971ccc8df40ffc365c8af 100644 (file)
@@ -2917,9 +2917,6 @@ static inline void svm_inject_irq(struct vcpu_svm *svm, int irq)
 {
        struct vmcb_control_area *control;
 
-       trace_kvm_inj_virq(irq);
-
-       ++svm->vcpu.stat.irq_injections;
        control = &svm->vmcb->control;
        control->int_vector = irq;
        control->int_ctl &= ~V_INTR_PRIO_MASK;
@@ -2933,6 +2930,9 @@ static void svm_set_irq(struct kvm_vcpu *vcpu)
 
        BUG_ON(!(gif_set(svm)));
 
+       trace_kvm_inj_virq(vcpu->arch.interrupt.nr);
+       ++vcpu->stat.irq_injections;
+
        svm->vmcb->control.event_inj = vcpu->arch.interrupt.nr |
                SVM_EVTINJ_VALID | SVM_EVTINJ_TYPE_INTR;
 }