KVM: x86/xen: Add event channel interrupt vector upcall
[linux-2.6-microblaze.git] / arch / x86 / kvm / irq.c
index a035cca..172b053 100644 (file)
@@ -14,6 +14,7 @@
 #include "irq.h"
 #include "i8254.h"
 #include "x86.h"
+#include "xen.h"
 
 /*
  * check if there are pending timer events
@@ -56,6 +57,9 @@ int kvm_cpu_has_extint(struct kvm_vcpu *v)
        if (!lapic_in_kernel(v))
                return v->arch.interrupt.injected;
 
+       if (kvm_xen_has_interrupt(v))
+               return 1;
+
        if (!kvm_apic_accept_pic_intr(v))
                return 0;
 
@@ -110,6 +114,9 @@ static int kvm_cpu_get_extint(struct kvm_vcpu *v)
        if (!lapic_in_kernel(v))
                return v->arch.interrupt.nr;
 
+       if (kvm_xen_has_interrupt(v))
+               return v->kvm->arch.xen.upcall_vector;
+
        if (irqchip_split(v->kvm)) {
                int vector = v->arch.pending_external_vector;