diff options
Diffstat (limited to 'arch/powerpc/kvm/powerpc.c')
-rw-r--r-- | arch/powerpc/kvm/powerpc.c | 6 |
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 | ||
452 | int kvm_vcpu_ioctl_interrupt(struct kvm_vcpu *vcpu, struct kvm_interrupt *irq) | 453 | int 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); |