Loading arch/x86/pci/xen.c +2 −2 Original line number Original line Diff line number Diff line Loading @@ -106,7 +106,7 @@ static int xen_hvm_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) dev_dbg(&dev->dev, dev_dbg(&dev->dev, "xen: msi already bound to pirq=%d\n", pirq); "xen: msi already bound to pirq=%d\n", pirq); } } irq = xen_bind_pirq_msi_to_irq(dev, msidesc, pirq, irq = xen_bind_pirq_msi_to_irq(dev, msidesc, pirq, 0, (type == PCI_CAP_ID_MSIX) ? (type == PCI_CAP_ID_MSIX) ? "msi-x" : "msi"); "msi-x" : "msi"); if (irq < 0) if (irq < 0) Loading Loading @@ -145,7 +145,7 @@ static int xen_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) goto error; goto error; i = 0; i = 0; list_for_each_entry(msidesc, &dev->msi_list, list) { list_for_each_entry(msidesc, &dev->msi_list, list) { irq = xen_bind_pirq_msi_to_irq(dev, msidesc, v[i], irq = xen_bind_pirq_msi_to_irq(dev, msidesc, v[i], 0, (type == PCI_CAP_ID_MSIX) ? (type == PCI_CAP_ID_MSIX) ? "pcifront-msi-x" : "pcifront-msi-x" : "pcifront-msi"); "pcifront-msi"); Loading drivers/xen/events.c +7 −29 Original line number Original line Diff line number Diff line Loading @@ -662,7 +662,7 @@ int xen_allocate_pirq_msi(struct pci_dev *dev, struct msi_desc *msidesc) } } int xen_bind_pirq_msi_to_irq(struct pci_dev *dev, struct msi_desc *msidesc, int xen_bind_pirq_msi_to_irq(struct pci_dev *dev, struct msi_desc *msidesc, int pirq, const char *name) int pirq, int vector, const char *name) { { int irq, ret; int irq, ret; Loading @@ -675,7 +675,7 @@ int xen_bind_pirq_msi_to_irq(struct pci_dev *dev, struct msi_desc *msidesc, set_irq_chip_and_handler_name(irq, &xen_pirq_chip, set_irq_chip_and_handler_name(irq, &xen_pirq_chip, handle_level_irq, name); handle_level_irq, name); irq_info[irq] = mk_pirq_info(0, pirq, 0, 0); irq_info[irq] = mk_pirq_info(0, pirq, 0, vector); pirq_to_irq[pirq] = irq; pirq_to_irq[pirq] = irq; ret = set_irq_msi(irq, msidesc); ret = set_irq_msi(irq, msidesc); if (ret < 0) if (ret < 0) Loading @@ -691,7 +691,6 @@ int xen_bind_pirq_msi_to_irq(struct pci_dev *dev, struct msi_desc *msidesc, int xen_create_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, int type) int xen_create_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, int type) { { int ret, irq = -1; struct physdev_map_pirq map_irq; struct physdev_map_pirq map_irq; int rc; int rc; int pos; int pos; Loading Loading @@ -719,34 +718,13 @@ int xen_create_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, int type) rc = HYPERVISOR_physdev_op(PHYSDEVOP_map_pirq, &map_irq); rc = HYPERVISOR_physdev_op(PHYSDEVOP_map_pirq, &map_irq); if (rc) { if (rc) { dev_warn(&dev->dev, "xen map irq failed %d\n", rc); dev_warn(&dev->dev, "xen map irq failed %d\n", rc); goto out; return -1; } } spin_lock(&irq_mapping_update_lock); return xen_bind_pirq_msi_to_irq(dev, msidesc, map_irq.pirq, map_irq.index, irq = xen_allocate_irq_dynamic(); (type == PCI_CAP_ID_MSIX) ? "msi-x" : "msi"); if (irq == -1) goto out; irq_info[irq] = mk_pirq_info(0, map_irq.pirq, 0, map_irq.index); pirq_to_irq[map_irq.pirq] = irq; set_irq_chip_and_handler_name(irq, &xen_pirq_chip, handle_level_irq, (type == PCI_CAP_ID_MSIX) ? "msi-x":"msi"); ret = set_irq_msi(irq, msidesc); if (ret) goto out_irq; out: spin_unlock(&irq_mapping_update_lock); return irq; out_irq: spin_unlock(&irq_mapping_update_lock); xen_free_irq(irq); return -1; } } #endif #endif Loading include/xen/events.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -77,7 +77,7 @@ int xen_map_pirq_gsi(unsigned pirq, unsigned gsi, int shareable, char *name); #ifdef CONFIG_PCI_MSI #ifdef CONFIG_PCI_MSI int xen_allocate_pirq_msi(struct pci_dev *dev, struct msi_desc *msidesc); int xen_allocate_pirq_msi(struct pci_dev *dev, struct msi_desc *msidesc); int xen_bind_pirq_msi_to_irq(struct pci_dev *dev, struct msi_desc *msidesc, int xen_bind_pirq_msi_to_irq(struct pci_dev *dev, struct msi_desc *msidesc, int pirq, const char *name); int pirq, int vector, const char *name); int xen_create_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, int type); int xen_create_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, int type); #endif #endif Loading Loading
arch/x86/pci/xen.c +2 −2 Original line number Original line Diff line number Diff line Loading @@ -106,7 +106,7 @@ static int xen_hvm_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) dev_dbg(&dev->dev, dev_dbg(&dev->dev, "xen: msi already bound to pirq=%d\n", pirq); "xen: msi already bound to pirq=%d\n", pirq); } } irq = xen_bind_pirq_msi_to_irq(dev, msidesc, pirq, irq = xen_bind_pirq_msi_to_irq(dev, msidesc, pirq, 0, (type == PCI_CAP_ID_MSIX) ? (type == PCI_CAP_ID_MSIX) ? "msi-x" : "msi"); "msi-x" : "msi"); if (irq < 0) if (irq < 0) Loading Loading @@ -145,7 +145,7 @@ static int xen_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) goto error; goto error; i = 0; i = 0; list_for_each_entry(msidesc, &dev->msi_list, list) { list_for_each_entry(msidesc, &dev->msi_list, list) { irq = xen_bind_pirq_msi_to_irq(dev, msidesc, v[i], irq = xen_bind_pirq_msi_to_irq(dev, msidesc, v[i], 0, (type == PCI_CAP_ID_MSIX) ? (type == PCI_CAP_ID_MSIX) ? "pcifront-msi-x" : "pcifront-msi-x" : "pcifront-msi"); "pcifront-msi"); Loading
drivers/xen/events.c +7 −29 Original line number Original line Diff line number Diff line Loading @@ -662,7 +662,7 @@ int xen_allocate_pirq_msi(struct pci_dev *dev, struct msi_desc *msidesc) } } int xen_bind_pirq_msi_to_irq(struct pci_dev *dev, struct msi_desc *msidesc, int xen_bind_pirq_msi_to_irq(struct pci_dev *dev, struct msi_desc *msidesc, int pirq, const char *name) int pirq, int vector, const char *name) { { int irq, ret; int irq, ret; Loading @@ -675,7 +675,7 @@ int xen_bind_pirq_msi_to_irq(struct pci_dev *dev, struct msi_desc *msidesc, set_irq_chip_and_handler_name(irq, &xen_pirq_chip, set_irq_chip_and_handler_name(irq, &xen_pirq_chip, handle_level_irq, name); handle_level_irq, name); irq_info[irq] = mk_pirq_info(0, pirq, 0, 0); irq_info[irq] = mk_pirq_info(0, pirq, 0, vector); pirq_to_irq[pirq] = irq; pirq_to_irq[pirq] = irq; ret = set_irq_msi(irq, msidesc); ret = set_irq_msi(irq, msidesc); if (ret < 0) if (ret < 0) Loading @@ -691,7 +691,6 @@ int xen_bind_pirq_msi_to_irq(struct pci_dev *dev, struct msi_desc *msidesc, int xen_create_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, int type) int xen_create_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, int type) { { int ret, irq = -1; struct physdev_map_pirq map_irq; struct physdev_map_pirq map_irq; int rc; int rc; int pos; int pos; Loading Loading @@ -719,34 +718,13 @@ int xen_create_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, int type) rc = HYPERVISOR_physdev_op(PHYSDEVOP_map_pirq, &map_irq); rc = HYPERVISOR_physdev_op(PHYSDEVOP_map_pirq, &map_irq); if (rc) { if (rc) { dev_warn(&dev->dev, "xen map irq failed %d\n", rc); dev_warn(&dev->dev, "xen map irq failed %d\n", rc); goto out; return -1; } } spin_lock(&irq_mapping_update_lock); return xen_bind_pirq_msi_to_irq(dev, msidesc, map_irq.pirq, map_irq.index, irq = xen_allocate_irq_dynamic(); (type == PCI_CAP_ID_MSIX) ? "msi-x" : "msi"); if (irq == -1) goto out; irq_info[irq] = mk_pirq_info(0, map_irq.pirq, 0, map_irq.index); pirq_to_irq[map_irq.pirq] = irq; set_irq_chip_and_handler_name(irq, &xen_pirq_chip, handle_level_irq, (type == PCI_CAP_ID_MSIX) ? "msi-x":"msi"); ret = set_irq_msi(irq, msidesc); if (ret) goto out_irq; out: spin_unlock(&irq_mapping_update_lock); return irq; out_irq: spin_unlock(&irq_mapping_update_lock); xen_free_irq(irq); return -1; } } #endif #endif Loading
include/xen/events.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -77,7 +77,7 @@ int xen_map_pirq_gsi(unsigned pirq, unsigned gsi, int shareable, char *name); #ifdef CONFIG_PCI_MSI #ifdef CONFIG_PCI_MSI int xen_allocate_pirq_msi(struct pci_dev *dev, struct msi_desc *msidesc); int xen_allocate_pirq_msi(struct pci_dev *dev, struct msi_desc *msidesc); int xen_bind_pirq_msi_to_irq(struct pci_dev *dev, struct msi_desc *msidesc, int xen_bind_pirq_msi_to_irq(struct pci_dev *dev, struct msi_desc *msidesc, int pirq, const char *name); int pirq, int vector, const char *name); int xen_create_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, int type); int xen_create_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, int type); #endif #endif Loading