From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [PATCH] KVM: Fix assigned device with no irq Date: Thu, 07 May 2009 15:24:15 +0300 Message-ID: <4A02D2EF.2010402@redhat.com> References: <200903031747.53086.sheng@linux.intel.com> <1236076755-14328-1-git-send-email-sheng@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Marcelo Tosatti , kvm@vger.kernel.org To: Sheng Yang Return-path: Received: from mx2.redhat.com ([66.187.237.31]:35003 "EHLO mx2.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753471AbZEGMYS (ORCPT ); Thu, 7 May 2009 08:24:18 -0400 In-Reply-To: <1236076755-14328-1-git-send-email-sheng@linux.intel.com> Sender: kvm-owner@vger.kernel.org List-ID: Sheng Yang wrote: > Some device like VF of SRIOV only support MSI-X. > > With this patch, SRIOV can be enabled with KVM assigned device(all kernel space > patches are ready). > > Just noticed I missed this patch. Is it still needed or is it obsolete? > diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c > index 4d2be16..ce80f3a 100644 > --- a/virt/kvm/kvm_main.c > +++ b/virt/kvm/kvm_main.c > @@ -217,8 +217,11 @@ static void kvm_free_assigned_irq(struct kvm *kvm, > kvm_free_irq_source_id(kvm, assigned_dev->irq_source_id); > assigned_dev->irq_source_id = -1; > > - if (!assigned_dev->irq_requested_type) > + if (!assigned_dev->irq_requested_type) { > + if (assigned_dev->dev->msi_enabled) > + pci_disable_msi(assigned_dev->dev); > return; > + } > > /* > * In kvm_free_device_irq, cancel_work_sync return true if: > @@ -308,6 +311,10 @@ static int assigned_device_update_intx(struct kvm *kvm, > if (adev->irq_requested_type & KVM_ASSIGNED_DEV_HOST_INTX) > return 0; > > + /* IRQ 0 means uninitialized here */ > + if (airq->host_irq == 0) > + return 0; > + > if (irqchip_in_kernel(kvm)) { > if (!msi2intx && > (adev->irq_requested_type & KVM_ASSIGNED_DEV_HOST_MSI)) { > @@ -529,9 +536,8 @@ static int kvm_vm_ioctl_assign_irq(struct kvm *kvm, > r = 0; > } else { > printk(KERN_WARNING > - "kvm: failed to enable MSI device!\n"); > - r = -ENOTTY; > - goto out_release; > + "kvm: device didn't support INTx or MSI!\n"); > + r = 0; > } > } else { > /* Non-sharing INTx mode */ > -- error compiling committee.c: too many arguments to function