[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 29/31] xen_destroy_irq + xen_allocate_pirq in PV non-priv mode should not make certain Xen-HYPERCALLs.
The privileged domain should make these calls for the guest. The non-privileged domain should make these calls via the pcifront interface (patches that augment these two functions to do so will follow). Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> --- drivers/xen/events.c | 30 ++++++++++++++++-------------- 1 files changed, 16 insertions(+), 14 deletions(-) diff --git a/drivers/xen/events.c b/drivers/xen/events.c index 40bcbde..fd55b5b 100644 --- a/drivers/xen/events.c +++ b/drivers/xen/events.c @@ -606,14 +606,15 @@ int xen_destroy_irq(int irq) if (!desc) goto out; - unmap_irq.pirq = info->u.pirq.nr; - unmap_irq.domid = info->u.pirq.domid; - rc = HYPERVISOR_physdev_op(PHYSDEVOP_unmap_pirq, &unmap_irq); - if (rc) { - printk(KERN_WARNING "unmap irq failed %d\n", rc); - goto out; + if (xen_initial_domain()) { + unmap_irq.pirq = info->u.pirq.nr; + unmap_irq.domid = info->u.pirq.domid; + rc = HYPERVISOR_physdev_op(PHYSDEVOP_unmap_pirq, &unmap_irq); + if (rc) { + printk(KERN_WARNING "unmap irq failed %d\n", rc); + goto out; + } } - irq_info[irq] = mk_unbound_info(); dynamic_irq_cleanup(irq); @@ -701,17 +702,18 @@ int xen_create_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, int type) if (irq == -1) goto out; - rc = HYPERVISOR_physdev_op(PHYSDEVOP_map_pirq, &map_irq); - if (rc) { + if (xen_initial_domain()) { + rc = HYPERVISOR_physdev_op(PHYSDEVOP_map_pirq, &map_irq); + if (rc) { - printk(KERN_WARNING "xen map irq failed %d\n", rc); + printk(KERN_WARNING "xen map irq failed %d\n", rc); - dynamic_irq_cleanup(irq); + dynamic_irq_cleanup(irq); - irq = -1; - goto out; + irq = -1; + goto out; + } } - irq_info[irq] = mk_pirq_info(0, map_irq.pirq, map_irq.index); if (domid) irq_info[irq].u.pirq.domid = domid; -- 1.6.2.5 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |