Re: Biweekly KVM Test report, kernel 94252... qemu 5cc3c...

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

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;
 }

[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux