aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kvm/powerpc.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/kvm/powerpc.c')
-rw-r--r--arch/powerpc/kvm/powerpc.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
index 3f8677e9d8f9..0bb6a7e826d1 100644
--- a/arch/powerpc/kvm/powerpc.c
+++ b/arch/powerpc/kvm/powerpc.c
@@ -149,6 +149,7 @@ int kvm_dev_ioctl_check_extension(long ext)
149 switch (ext) { 149 switch (ext) {
150 case KVM_CAP_PPC_SEGSTATE: 150 case KVM_CAP_PPC_SEGSTATE:
151 case KVM_CAP_PPC_PAIRED_SINGLES: 151 case KVM_CAP_PPC_PAIRED_SINGLES:
152 case KVM_CAP_PPC_UNSET_IRQ:
152 r = 1; 153 r = 1;
153 break; 154 break;
154 case KVM_CAP_COALESCED_MMIO: 155 case KVM_CAP_COALESCED_MMIO:
@@ -451,7 +452,10 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *run)
451 452
452int kvm_vcpu_ioctl_interrupt(struct kvm_vcpu *vcpu, struct kvm_interrupt *irq) 453int kvm_vcpu_ioctl_interrupt(struct kvm_vcpu *vcpu, struct kvm_interrupt *irq)
453{ 454{
454 kvmppc_core_queue_external(vcpu, irq); 455 if (irq->irq == KVM_INTERRUPT_UNSET)
456 kvmppc_core_dequeue_external(vcpu, irq);
457 else
458 kvmppc_core_queue_external(vcpu, irq);
455 459
456 if (waitqueue_active(&vcpu->wq)) { 460 if (waitqueue_active(&vcpu->wq)) {
457 wake_up_interruptible(&vcpu->wq); 461 wake_up_interruptible(&vcpu->wq);