From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: Biweekly KVM Test report, kernel 94252... qemu 5cc3c... Date: Mon, 05 Oct 2009 12:59:41 +0200 Message-ID: <4AC9D19D.7020505@redhat.com> References: <0463F45F3606F4428ED35AC8C709F92E089B6598F7@pdsmsx502.ccr.corp.intel.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------020508030902000706060406" Cc: "'kvm-devel'" To: "Xu, Jiajun" Return-path: Received: from mx1.redhat.com ([209.132.183.28]:43733 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932657AbZJELAK (ORCPT ); Mon, 5 Oct 2009 07:00:10 -0400 In-Reply-To: <0463F45F3606F4428ED35AC8C709F92E089B6598F7@pdsmsx502.ccr.corp.intel.com> Sender: kvm-owner@vger.kernel.org List-ID: This is a multi-part message in MIME format. --------------020508030902000706060406 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 09/29/2009 05:34 AM, Xu, Jiajun wrote: > Hi All, > > This Weekly KVM Testing Report against lastest kvm.git > 94252a58662dc4ca6191eac479efb40e0716865c and qemu-kvm.git > 5cc3cfb6c2254483ae324da407a13307fe7355f3. > > Qemu-kvm tree build issue is fixed by qemu commit 781774b38c90797add71d029b7fbee43200c66d4. > There is no other new bug found in this two weeks. There are 7 old bugs open in bug tracking. > > > Seven Old Issues: > ================================================ > 1. Guest hang with exhausted IRQ sources error if 8 VFs assigned > https://sourceforge.net/tracker/?func=detail&aid=2847560&group_id=180599&atid=893831 > Does the attached patch fix this issue? -- error compiling committee.c: too many arguments to function --------------020508030902000706060406 Content-Type: text/x-patch; name="allow-more-assigned-msis.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="allow-more-assigned-msis.patch" diff --git a/virt/kvm/assigned-dev.c b/virt/kvm/assigned-dev.c index fd9c097..91b3d99 100644 --- a/virt/kvm/assigned-dev.c +++ b/virt/kvm/assigned-dev.c @@ -142,7 +142,8 @@ static void deassign_guest_irq(struct kvm *kvm, kvm_unregister_irq_ack_notifier(kvm, &assigned_dev->ack_notifier); assigned_dev->ack_notifier.gsi = -1; - if (assigned_dev->irq_source_id != -1) + if (assigned_dev->irq_source_id != -1 + && assigned_dev->irq_source_id != KVM_USERSPACE_IRQ_SOURCE_ID) kvm_free_irq_source_id(kvm, assigned_dev->irq_source_id); assigned_dev->irq_source_id = -1; assigned_dev->irq_requested_type &= ~(KVM_DEV_IRQ_GUEST_MASK); @@ -396,20 +397,17 @@ static int assign_guest_irq(struct kvm *kvm, struct kvm_assigned_irq *irq, unsigned long guest_irq_type) { - int id; + int id = KVM_USERSPACE_IRQ_SOURCE_ID; int r = -EEXIST; if (dev->irq_requested_type & KVM_DEV_IRQ_GUEST_MASK) return r; - id = kvm_request_irq_source_id(kvm); - if (id < 0) - return id; - - dev->irq_source_id = id; - switch (guest_irq_type) { case KVM_DEV_IRQ_GUEST_INTX: + id = kvm_request_irq_source_id(kvm); + if (id < 0) + return id; r = assigned_device_enable_guest_intx(kvm, dev, irq); break; #ifdef __KVM_HAVE_MSI @@ -426,11 +424,15 @@ static int assign_guest_irq(struct kvm *kvm, r = -EINVAL; } + dev->irq_source_id = id; + if (!r) { dev->irq_requested_type |= guest_irq_type; kvm_register_irq_ack_notifier(kvm, &dev->ack_notifier); - } else - kvm_free_irq_source_id(kvm, dev->irq_source_id); + } else { + if (dev->irq_source_id != KVM_USERSPACE_IRQ_SOURCE_ID) + kvm_free_irq_source_id(kvm, dev->irq_source_id); + } return r; } --------------020508030902000706060406--