diff options
author | Chris Zankel <chris@zankel.net> | 2015-04-14 03:51:35 +0000 |
---|---|---|
committer | Chris Zankel <chris@zankel.net> | 2015-04-14 03:51:35 +0000 |
commit | 7ead5b7e4a3cf4a16579a8f164022345b93fe972 (patch) | |
tree | 0a9b9497f53d1593c9e2ac197b2e686ea74a9975 /arch/x86/kvm/ioapic.c | |
parent | 834a316eeebcb75316c0a7d9088fa638c52dc584 (diff) | |
parent | 39a8804455fb23f09157341d3ba7db6d7ae6ee76 (diff) |
Merge tag 'v4.0' into for_next
Linux 4.0
Diffstat (limited to 'arch/x86/kvm/ioapic.c')
-rw-r--r-- | arch/x86/kvm/ioapic.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/x86/kvm/ioapic.c b/arch/x86/kvm/ioapic.c index b1947e0f3e10..46d4449772bc 100644 --- a/arch/x86/kvm/ioapic.c +++ b/arch/x86/kvm/ioapic.c @@ -422,6 +422,7 @@ static void __kvm_ioapic_update_eoi(struct kvm_vcpu *vcpu, struct kvm_ioapic *ioapic, int vector, int trigger_mode) { int i; + struct kvm_lapic *apic = vcpu->arch.apic; for (i = 0; i < IOAPIC_NUM_PINS; i++) { union kvm_ioapic_redirect_entry *ent = &ioapic->redirtbl[i]; @@ -443,7 +444,8 @@ static void __kvm_ioapic_update_eoi(struct kvm_vcpu *vcpu, kvm_notify_acked_irq(ioapic->kvm, KVM_IRQCHIP_IOAPIC, i); spin_lock(&ioapic->lock); - if (trigger_mode != IOAPIC_LEVEL_TRIG) + if (trigger_mode != IOAPIC_LEVEL_TRIG || + kvm_apic_get_reg(apic, APIC_SPIV) & APIC_SPIV_DIRECTED_EOI) continue; ASSERT(ent->fields.trig_mode == IOAPIC_LEVEL_TRIG); |