From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sheng Yang Subject: [PATCH 3/8] KVM: Add support to disable MSI for assigned device Date: Tue, 23 Dec 2008 16:00:26 +0800 Message-ID: <1230019231-16543-4-git-send-email-sheng@linux.intel.com> References: <1230019231-16543-1-git-send-email-sheng@linux.intel.com> Cc: kvm@vger.kernel.org, Sheng Yang To: Avi Kivity Return-path: Received: from mga11.intel.com ([192.55.52.93]:21484 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752744AbYLWIAd (ORCPT ); Tue, 23 Dec 2008 03:00:33 -0500 In-Reply-To: <1230019231-16543-1-git-send-email-sheng@linux.intel.com> Sender: kvm-owner@vger.kernel.org List-ID: In msi2intx mode, MSI is always enabled. But for non-msi2intx mode, we have to disable MSI if guest require to do so. Signed-off-by: Sheng Yang --- virt/kvm/kvm_main.c | 11 ++++++++++- 1 files changed, 10 insertions(+), 1 deletions(-) diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index cd84b3e..10cf7e1 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -328,6 +328,15 @@ static int assigned_device_update_msi(struct kvm *kvm, adev->irq_requested_type &= ~KVM_ASSIGNED_DEV_GUEST_MSI; adev->guest_irq = airq->guest_irq; adev->ack_notifier.gsi = airq->guest_irq; + } else { + /* + * Guest require to disable device MSI, we disable MSI and + * re-enable INTx by default again. Notice it's only for + * non-msi2intx. + */ + kvm_free_assigned_irq(kvm, adev); + assigned_device_update_intx(kvm, adev, airq); + return 0; } if (adev->irq_requested_type & KVM_ASSIGNED_DEV_HOST_MSI) @@ -400,7 +409,7 @@ static int kvm_vm_ioctl_assign_irq(struct kvm *kvm, } if ((!msi2intx && - (assigned_irq->flags & KVM_DEV_IRQ_ASSIGN_ENABLE_MSI)) || + (assigned_irq->flags & KVM_DEV_IRQ_ASSIGN_MSI_ACTION)) || (msi2intx && match->dev->msi_enabled)) { #ifdef CONFIG_X86 r = assigned_device_update_msi(kvm, match, assigned_irq); -- 1.5.4.5