From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sheng Yang Subject: [PATCH 1/1] KVM: IRQ ACK notifier should be used with in-kernel irqchip Date: Wed, 8 Oct 2008 17:28:09 +0800 Message-ID: <1223458089-1529-1-git-send-email-sheng@linux.intel.com> References: <200810081704.06325.sheng@linux.intel.com> Cc: Amit Shah , kvm@vger.kernel.org, Sheng Yang To: Avi Kivity Return-path: Received: from mga01.intel.com ([192.55.52.88]:10879 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753163AbYJHJ3l (ORCPT ); Wed, 8 Oct 2008 05:29:41 -0400 In-Reply-To: <200810081704.06325.sheng@linux.intel.com> Sender: kvm-owner@vger.kernel.org List-ID: Signed-off-by: Sheng Yang --- arch/x86/kvm/irq.c | 4 ++++ arch/x86/kvm/x86.c | 4 +++- 2 files changed, 7 insertions(+), 1 deletions(-) diff --git a/arch/x86/kvm/irq.c b/arch/x86/kvm/irq.c index 8c1b9c5..24e2667 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)); 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) { + /* Must be called with in-kernel IRQ chip, otherwise it's nonsense */ + ASSERT(irqchip_in_kernel(kvm)); hlist_del(&kian->link); } diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 675fcc1..c5763d7 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -176,7 +176,9 @@ 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); + if (irqchip_in_kernel(kvm)) + kvm_unregister_irq_ack_notifier(kvm, + &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