From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sheng Yang Subject: [PATCH] KVM: IRQ ACK notifier should be used with in-kernel irqchip Date: Wed, 8 Oct 2008 17:46:30 +0800 Message-ID: <1223459190-2014-1-git-send-email-sheng@linux.intel.com> References: <200810081732.57205.sheng@linux.intel.com> Cc: Amit Shah , kvm@vger.kernel.org, Sheng Yang To: Avi Kivity Return-path: Received: from mga03.intel.com ([143.182.124.21]:43359 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752701AbYJHJvh (ORCPT ); Wed, 8 Oct 2008 05:51:37 -0400 In-Reply-To: <200810081732.57205.sheng@linux.intel.com> Sender: kvm-owner@vger.kernel.org List-ID: Also remove unnecessary parameter of unregister irq ack notifier. Signed-off-by: Sheng Yang --- arch/x86/kvm/irq.c | 8 ++++++-- arch/x86/kvm/irq.h | 3 +-- arch/x86/kvm/x86.c | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/arch/x86/kvm/irq.c b/arch/x86/kvm/irq.c index 8c1b9c5..714bcc1 100644 --- a/arch/x86/kvm/irq.c +++ b/arch/x86/kvm/irq.c @@ -124,11 +124,15 @@ void kvm_notify_acked_irq(struct kvm *kvm, unsigned gsi) void kvm_register_irq_ack_notifier(struct kvm *kvm, struct kvm_irq_ack_notifier *kian) { + /* Must be called with in-kernel IRQ chip, otherwise it's nonsense */ + ASSERT(irqchip_in_kernel(kvm)); + ASSERT(kian); hlist_add_head(&kian->link, &kvm->arch.irq_ack_notifier_list); } -void kvm_unregister_irq_ack_notifier(struct kvm *kvm, - struct kvm_irq_ack_notifier *kian) +void kvm_unregister_irq_ack_notifier(struct kvm_irq_ack_notifier *kian) { + if (!kian) + return; hlist_del(&kian->link); } diff --git a/arch/x86/kvm/irq.h b/arch/x86/kvm/irq.h index 9f157c9..0c47117 100644 --- a/arch/x86/kvm/irq.h +++ b/arch/x86/kvm/irq.h @@ -89,8 +89,7 @@ void kvm_set_irq(struct kvm *kvm, int irq, int level); void kvm_notify_acked_irq(struct kvm *kvm, unsigned gsi); void kvm_register_irq_ack_notifier(struct kvm *kvm, struct kvm_irq_ack_notifier *kian); -void kvm_unregister_irq_ack_notifier(struct kvm *kvm, - struct kvm_irq_ack_notifier *kian); +void kvm_unregister_irq_ack_notifier(struct kvm_irq_ack_notifier *kian); void kvm_timer_intr_post(struct kvm_vcpu *vcpu, int vec); void kvm_inject_pending_timer_irqs(struct kvm_vcpu *vcpu); diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 675fcc1..8a9a029 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -176,7 +176,7 @@ static void kvm_free_assigned_device(struct kvm *kvm, if (irqchip_in_kernel(kvm) && assigned_dev->irq_requested) free_irq(assigned_dev->host_irq, (void *)assigned_dev); - kvm_unregister_irq_ack_notifier(kvm, &assigned_dev->ack_notifier); + kvm_unregister_irq_ack_notifier(&assigned_dev->ack_notifier); if (cancel_work_sync(&assigned_dev->interrupt_work)) /* We had pending work. That means we will have to take -- 1.5.4.5