On Fri, Nov 11, 2011 at 09:02:50AM +0200, Pasi Kärkkäinen wrote: > > > > >> > > > > >> So the Ubuntu backport from xen-unstable to Xen 4.1.1 is here: > > > > >> https://launchpadlibrarian.net/81948978/xen-pirq-resubmit-irq.patch > > > > >> > > > > >> It seems to be shipping in Ubuntu 11.10 xen 4.1.1-2ubuntu4.1 packages. > > > > >> > > > > >> Does that patch look suitable to be applied to xen-4.1-testing.hg ? > > > > >> This bug should be fixed for Xen 4.1.3. > > > > > > > > > > Any comments? > > > > > > > > This looks like a backport of Stefano's xen-unstable c/s 24007. I would like > > > > him to submit/ack the backport, as it is not a trivial backport of the > > > > xen-unstable patch. > > > > > > I would rather use the following backport. Compared to the other one it > > > returns EINVAL in PHYSDEVOP_irq_status_query when the arguments are not > > > correct. > > > > > > > Thanks! Mayoung added this patch in xen-4.1.2-1.1.fc14.src.rpm, > > and binary rpms are built for Fedora 16 here: > > http://koji.fedoraproject.org/koji/taskinfo?taskID=3495905 > > > > So people should test this patch (or the rpms above) and confirm > > that it fixes the emulated realtek/ne2k issues. > > > > Konrad confirmed the patch works with Xen 4.1.2 and realtek emulated nics. > > So please commit the patch to xen-4.1-testing.hg. > I also tested Fedora 16 xen-4.1.2-1.2.fc16 rpms, which includes stefano's bugfix patch, and it seems to fix the emulated realtek nic problems. So please go ahead and commit the fix to xen-4.1-testing.hg. -- Pasi > > > > > --- > > > > > > diff -r 8c2d76193eaf xen/arch/x86/physdev.c > > > --- a/xen/arch/x86/physdev.c Wed Nov 02 15:02:18 2011 +0000 > > > +++ b/xen/arch/x86/physdev.c Mon Nov 07 11:58:28 2011 +0000 > > > @@ -261,6 +261,7 @@ ret_t do_physdev_op(int cmd, XEN_GUEST_H > > > ret = -EINVAL; > > > if ( eoi.irq >= v->domain->nr_pirqs ) > > > break; > > > + spin_lock(&v->domain->event_lock); > > > if ( v->domain->arch.pirq_eoi_map ) > > > evtchn_unmask(v->domain->pirq_to_evtchn[eoi.irq]); > > > if ( !is_hvm_domain(v->domain) || > > > @@ -268,6 +269,19 @@ ret_t do_physdev_op(int cmd, XEN_GUEST_H > > > ret = pirq_guest_eoi(v->domain, eoi.irq); > > > else > > > ret = 0; > > > + if ( is_hvm_domain(v->domain) && > > > + domain_pirq_to_emuirq(v->domain, eoi.irq) > 0 ) > > > + { > > > + struct hvm_irq *hvm_irq = &v->domain->arch.hvm_domain.irq; > > > + int gsi = domain_pirq_to_emuirq(v->domain, eoi.irq); > > > + > > > + /* if this is a level irq and count > 0, send another > > > + * notification */ > > > + if ( gsi >= NR_ISAIRQS /* ISA irqs are edge triggered */ > > > + && hvm_irq->gsi_assert_count[gsi] ) > > > + send_guest_pirq(v->domain, eoi.irq); > > > + } > > > + spin_unlock(&v->domain->event_lock); > > > break; > > > } > > > > > > @@ -323,9 +337,10 @@ ret_t do_physdev_op(int cmd, XEN_GUEST_H > > > break; > > > irq_status_query.flags = 0; > > > if ( is_hvm_domain(v->domain) && > > > - domain_pirq_to_irq(v->domain, irq) <= 0 ) > > > + domain_pirq_to_irq(v->domain, irq) <= 0 && > > > + domain_pirq_to_emuirq(v->domain, irq) == IRQ_UNBOUND ) > > > { > > > - ret = copy_to_guest(arg, &irq_status_query, 1) ? -EFAULT : 0; > > > + ret = -EINVAL; > > > break; > > > } > > > > > > > _______________________________________________ > > Xen-devel mailing list > > Xen-devel@xxxxxxxxxxxxxxxxxxx > > http://lists.xensource.com/xen-devel > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxxxxxxxx > http://lists.xensource.com/xen-devel -- xen mailing list xen@xxxxxxxxxxxxxxxxxxxxxxx https://admin.fedoraproject.org/mailman/listinfo/xen