diff options
Diffstat (limited to 'arch/x86/kvm/irq.c')
| -rw-r--r-- | arch/x86/kvm/irq.c | 7 | 
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/x86/kvm/irq.c b/arch/x86/kvm/irq.c index cf17ed52f6f..96dfbb6ad2a 100644 --- a/arch/x86/kvm/irq.c +++ b/arch/x86/kvm/irq.c @@ -24,6 +24,7 @@  #include "irq.h"  #include "i8254.h" +#include "x86.h"  /*   * check if there are pending timer events @@ -48,6 +49,9 @@ int kvm_cpu_has_interrupt(struct kvm_vcpu *v)  {  	struct kvm_pic *s; +	if (!irqchip_in_kernel(v->kvm)) +		return v->arch.interrupt.pending; +  	if (kvm_apic_has_interrupt(v) == -1) {	/* LAPIC */  		if (kvm_apic_accept_pic_intr(v)) {  			s = pic_irqchip(v->kvm);	/* PIC */ @@ -67,6 +71,9 @@ int kvm_cpu_get_interrupt(struct kvm_vcpu *v)  	struct kvm_pic *s;  	int vector; +	if (!irqchip_in_kernel(v->kvm)) +		return v->arch.interrupt.nr; +  	vector = kvm_get_apic_interrupt(v);	/* APIC */  	if (vector == -1) {  		if (kvm_apic_accept_pic_intr(v)) {  |