diff options
Diffstat (limited to 'arch/x86/kvm/lapic.c')
| -rw-r--r-- | arch/x86/kvm/lapic.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c index 3063a0c4858b..ba8c045da782 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c | |||
| @@ -373,6 +373,12 @@ static int __apic_accept_irq(struct kvm_lapic *apic, int delivery_mode, | |||
| 373 | if (unlikely(!apic_enabled(apic))) | 373 | if (unlikely(!apic_enabled(apic))) |
| 374 | break; | 374 | break; |
| 375 | 375 | ||
| 376 | if (trig_mode) { | ||
| 377 | apic_debug("level trig mode for vector %d", vector); | ||
| 378 | apic_set_vector(vector, apic->regs + APIC_TMR); | ||
| 379 | } else | ||
| 380 | apic_clear_vector(vector, apic->regs + APIC_TMR); | ||
| 381 | |||
| 376 | result = !apic_test_and_set_irr(vector, apic); | 382 | result = !apic_test_and_set_irr(vector, apic); |
| 377 | trace_kvm_apic_accept_irq(vcpu->vcpu_id, delivery_mode, | 383 | trace_kvm_apic_accept_irq(vcpu->vcpu_id, delivery_mode, |
| 378 | trig_mode, vector, !result); | 384 | trig_mode, vector, !result); |
| @@ -383,11 +389,6 @@ static int __apic_accept_irq(struct kvm_lapic *apic, int delivery_mode, | |||
| 383 | break; | 389 | break; |
| 384 | } | 390 | } |
| 385 | 391 | ||
| 386 | if (trig_mode) { | ||
| 387 | apic_debug("level trig mode for vector %d", vector); | ||
| 388 | apic_set_vector(vector, apic->regs + APIC_TMR); | ||
| 389 | } else | ||
| 390 | apic_clear_vector(vector, apic->regs + APIC_TMR); | ||
| 391 | kvm_vcpu_kick(vcpu); | 392 | kvm_vcpu_kick(vcpu); |
| 392 | break; | 393 | break; |
| 393 | 394 | ||
