[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xen: reuse the same pirq allocated when driver load first time
> > Hi Stefano, > > > > do you work out a patch for me to test? > > I'll be traveling/busy for a few weeks, maybe it's best if someone else > picks up this work item. This little test-case below should have worked: #include <linux/module.h> #include <linux/kthread.h> #include <linux/pagemap.h> #include <linux/init.h> #include <xen/xen.h> #include <xen/page.h> #include <asm/xen/hypervisor.h> #include <xen/features.h> #include <xen/events.h> MODULE_AUTHOR("Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>"); MODULE_DESCRIPTION("alloc_and_unmap"); MODULE_LICENSE("GPL"); MODULE_VERSION("0.1"); static int do_it(void) { struct physdev_get_free_pirq op_get_free_pirq; struct physdev_unmap_pirq unmap_irq; int rc, pirq; op_get_free_pirq.type = MAP_PIRQ_TYPE_MSI; rc = HYPERVISOR_physdev_op(PHYSDEVOP_get_free_pirq, &op_get_free_pirq); if (rc) { printk(KERN_WARNING "%s:%d rc:%d\n", __func__, __LINE__, rc); return rc; } pirq = op_get_free_pirq.pirq; unmap_irq.pirq = pirq; unmap_irq.domid = DOMID_SELF; rc = HYPERVISOR_physdev_op(PHYSDEVOP_unmap_pirq, &unmap_irq); if (rc) { printk(KERN_WARNING "unmap irq failed %d\n", rc); return rc; } printk("PIRQ: %d\n", pirq); return 0; } static int __init alloc_and_unmap_init(void) { int i; for (i = 0; i < 10; i++) if (do_it()) break; return 0; } static void __exit alloc_and_unmap_exit(void) { } module_init(alloc_and_unmap_init); module_exit(alloc_and_unmap_exit); But I get: # insmod /alloc_and_unmap.ko [ 34.899277] PIRQ: 55 [ 34.901846] PIRQ: 54 [ 34.904351] PIRQ: 53 [ 34.906921] PIRQ: 52 [ 34.909451] PIRQ: 51 [ 34.912038] PIRQ: 50 [ 34.914650] PIRQ: 49 [ 34.917205] PIRQ: 48 [ 34.919776] PIRQ: 47 [ 34.922339] PIRQ: 46 Which means there is some bug in the hypervisor as well (This is with Xen 4.3 and traditional QEMU - not that it matters as I am just doing these hypercalls). At this point I think that upstream option is to save the PIRQ value and re-use it. Will post a patch for it. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |