KVM: x86: use delivery to self in hyperv synic
authorRadim Krčmář <rkrcmar@redhat.com>
Thu, 15 Dec 2016 17:06:45 +0000 (18:06 +0100)
committerRadim Krčmář <rkrcmar@redhat.com>
Mon, 9 Jan 2017 13:46:13 +0000 (14:46 +0100)
Interrupt to self can be sent without knowing the APIC ID.

Reviewed-by: David Hildenbrand <david@redhat.com>
Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/hyperv.c

index 1572c35b4f1a637b2ebb622ae88c5e7e14eafd63..08b27e0c7b7131b1d766d60e9364b8056516a9a0 100644 (file)
@@ -305,13 +305,13 @@ static int synic_set_irq(struct kvm_vcpu_hv_synic *synic, u32 sint)
                return -ENOENT;
 
        memset(&irq, 0, sizeof(irq));
-       irq.dest_id = kvm_apic_id(vcpu->arch.apic);
+       irq.shorthand = APIC_DEST_SELF;
        irq.dest_mode = APIC_DEST_PHYSICAL;
        irq.delivery_mode = APIC_DM_FIXED;
        irq.vector = vector;
        irq.level = 1;
 
-       ret = kvm_irq_delivery_to_apic(vcpu->kvm, NULL, &irq, NULL);
+       ret = kvm_irq_delivery_to_apic(vcpu->kvm, vcpu->arch.apic, &irq, NULL);
        trace_kvm_hv_synic_set_irq(vcpu->vcpu_id, sint, irq.vector, ret);
        return ret;
 }