projects
/
linux-2.6-microblaze.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
KVM: x86/xen: Add event channel interrupt vector upcall
[linux-2.6-microblaze.git]
/
arch
/
x86
/
kvm
/
irq.c
diff --git
a/arch/x86/kvm/irq.c
b/arch/x86/kvm/irq.c
index
a035cca
..
172b053
100644
(file)
--- a/
arch/x86/kvm/irq.c
+++ b/
arch/x86/kvm/irq.c
@@
-14,6
+14,7
@@
#include "irq.h"
#include "i8254.h"
#include "x86.h"
#include "irq.h"
#include "i8254.h"
#include "x86.h"
+#include "xen.h"
/*
* check if there are pending timer events
/*
* 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 (!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;
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 (!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;
if (irqchip_split(v->kvm)) {
int vector = v->arch.pending_external_vector;