aboutsummaryrefslogtreecommitdiffstats
path: root/virt/kvm/ioapic.c
diff options
context:
space:
mode:
Diffstat (limited to 'virt/kvm/ioapic.c')
-rw-r--r--virt/kvm/ioapic.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/virt/kvm/ioapic.c b/virt/kvm/ioapic.c
index 5ba005c00e2f..914cbe027d06 100644
--- a/virt/kvm/ioapic.c
+++ b/virt/kvm/ioapic.c
@@ -124,7 +124,6 @@ void kvm_ioapic_calculate_eoi_exitmap(struct kvm_vcpu *vcpu,
124{ 124{
125 struct kvm_ioapic *ioapic = vcpu->kvm->arch.vioapic; 125 struct kvm_ioapic *ioapic = vcpu->kvm->arch.vioapic;
126 union kvm_ioapic_redirect_entry *e; 126 union kvm_ioapic_redirect_entry *e;
127 struct kvm_lapic_irq irqe;
128 int index; 127 int index;
129 128
130 spin_lock(&ioapic->lock); 129 spin_lock(&ioapic->lock);
@@ -135,11 +134,9 @@ void kvm_ioapic_calculate_eoi_exitmap(struct kvm_vcpu *vcpu,
135 (e->fields.trig_mode == IOAPIC_LEVEL_TRIG || 134 (e->fields.trig_mode == IOAPIC_LEVEL_TRIG ||
136 kvm_irq_has_notifier(ioapic->kvm, KVM_IRQCHIP_IOAPIC, 135 kvm_irq_has_notifier(ioapic->kvm, KVM_IRQCHIP_IOAPIC,
137 index))) { 136 index))) {
138 irqe.dest_id = e->fields.dest_id; 137 if (kvm_apic_match_dest(vcpu, NULL, 0,
139 irqe.vector = e->fields.vector; 138 e->fields.dest_id, e->fields.dest_mode))
140 irqe.dest_mode = e->fields.dest_mode; 139 __set_bit(e->fields.vector, (unsigned long *)eoi_exit_bitmap);
141 irqe.delivery_mode = e->fields.delivery_mode << 8;
142 kvm_calculate_eoi_exitmap(vcpu, &irqe, eoi_exit_bitmap);
143 } 140 }
144 } 141 }
145 spin_unlock(&ioapic->lock); 142 spin_unlock(&ioapic->lock);