From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sheng Yang Subject: Re: [PATCH] KVM: Fix assigned device with no irq Date: Thu, 7 May 2009 20:32:47 +0800 Message-ID: <200905072032.47595.sheng@linux.intel.com> References: <200903031747.53086.sheng@linux.intel.com> <4A02D2EF.2010402@redhat.com> <20090507122812.GA25202@amt.cnet> Mime-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Cc: Avi Kivity , kvm@vger.kernel.org To: Marcelo Tosatti Return-path: Received: from mga06.intel.com ([134.134.136.21]:55968 "EHLO orsmga101.jf.intel.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1762298AbZEGMcS (ORCPT ); Thu, 7 May 2009 08:32:18 -0400 In-Reply-To: <20090507122812.GA25202@amt.cnet> Content-Disposition: inline Sender: kvm-owner@vger.kernel.org List-ID: On Thursday 07 May 2009 20:28:12 Marcelo Tosatti wrote: > On Thu, May 07, 2009 at 03:24:15PM +0300, Avi Kivity wrote: > > 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? > > I think its obsolete. Yeah, it have been fixed from another direct in userspace: Interrupt pin =0 means it haven't been initialized. -- regards Yang, Sheng > > >> 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