|
@@ -373,6 +373,12 @@ static int __apic_accept_irq(struct kvm_lapic *apic, int delivery_mode,
|
|
|
if (unlikely(!apic_enabled(apic)))
|
|
|
break;
|
|
|
|
|
|
+ if (trig_mode) {
|
|
|
+ apic_debug("level trig mode for vector %d", vector);
|
|
|
+ apic_set_vector(vector, apic->regs + APIC_TMR);
|
|
|
+ } else
|
|
|
+ apic_clear_vector(vector, apic->regs + APIC_TMR);
|
|
|
+
|
|
|
result = !apic_test_and_set_irr(vector, apic);
|
|
|
trace_kvm_apic_accept_irq(vcpu->vcpu_id, delivery_mode,
|
|
|
trig_mode, vector, !result);
|
|
@@ -383,11 +389,6 @@ static int __apic_accept_irq(struct kvm_lapic *apic, int delivery_mode,
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- if (trig_mode) {
|
|
|
- apic_debug("level trig mode for vector %d", vector);
|
|
|
- apic_set_vector(vector, apic->regs + APIC_TMR);
|
|
|
- } else
|
|
|
- apic_clear_vector(vector, apic->regs + APIC_TMR);
|
|
|
kvm_vcpu_kick(vcpu);
|
|
|
break;
|
|
|
|