Loading arch/x86/pci/xen.c +6 −6 Original line number Diff line number Diff line Loading @@ -100,8 +100,8 @@ static int xen_hvm_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) pirq = MSI_ADDR_EXT_DEST_ID(msg.address_hi) | ((msg.address_lo >> MSI_ADDR_DEST_ID_SHIFT) & 0xff); if (xen_irq_from_pirq(pirq) >= 0 && msg.data == XEN_PIRQ_MSI_DATA) { xen_allocate_pirq_msi((type == PCI_CAP_ID_MSIX) ? "msi-x" : "msi", &irq, &pirq, 0); irq = xen_allocate_pirq_msi((type == PCI_CAP_ID_MSIX) ? "msi-x" : "msi", &pirq, 0); if (irq < 0) goto error; ret = set_irq_msi(irq, msidesc); Loading @@ -111,8 +111,8 @@ static int xen_hvm_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) " pirq=%d\n", irq, pirq); return 0; } xen_allocate_pirq_msi((type == PCI_CAP_ID_MSIX) ? "msi-x" : "msi", &irq, &pirq, 1); irq = xen_allocate_pirq_msi((type == PCI_CAP_ID_MSIX) ? "msi-x" : "msi", &pirq, 1); if (irq < 0 || pirq < 0) goto error; printk(KERN_DEBUG "xen: msi --> irq=%d, pirq=%d\n", irq, pirq); Loading Loading @@ -157,10 +157,10 @@ static int xen_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) goto error; i = 0; list_for_each_entry(msidesc, &dev->msi_list, list) { xen_allocate_pirq_msi( irq = xen_allocate_pirq_msi( (type == PCI_CAP_ID_MSIX) ? "pcifront-msi-x" : "pcifront-msi", &irq, &v[i], 0); &v[i], 0); if (irq < 0) { ret = -1; goto free; Loading drivers/xen/events.c +11 −8 Original line number Diff line number Diff line Loading @@ -664,31 +664,34 @@ static int find_unbound_pirq(int type) return -1; } void xen_allocate_pirq_msi(char *name, int *irq, int *pirq, int alloc_pirq) int xen_allocate_pirq_msi(char *name, int *pirq, int alloc_pirq) { int irq; spin_lock(&irq_mapping_update_lock); *irq = xen_allocate_irq_dynamic(); if (*irq == -1) irq = xen_allocate_irq_dynamic(); if (irq == -1) goto out; if (alloc_pirq) { *pirq = find_unbound_pirq(MAP_PIRQ_TYPE_MSI); if (*pirq == -1) { xen_free_irq(*irq); *irq = -1; xen_free_irq(irq); irq = -1; goto out; } } set_irq_chip_and_handler_name(*irq, &xen_pirq_chip, set_irq_chip_and_handler_name(irq, &xen_pirq_chip, handle_level_irq, name); irq_info[*irq] = mk_pirq_info(0, *pirq, 0, 0); pirq_to_irq[*pirq] = *irq; irq_info[irq] = mk_pirq_info(0, *pirq, 0, 0); pirq_to_irq[*pirq] = irq; out: spin_unlock(&irq_mapping_update_lock); return irq; } int xen_create_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, int type) Loading include/xen/events.h +1 −1 Original line number Diff line number Diff line Loading @@ -75,7 +75,7 @@ int xen_allocate_pirq(unsigned gsi, int shareable, char *name); int xen_map_pirq_gsi(unsigned pirq, unsigned gsi, int shareable, char *name); #ifdef CONFIG_PCI_MSI void xen_allocate_pirq_msi(char *name, int *irq, int *pirq, int alloc_pirq); int xen_allocate_pirq_msi(char *name, int *pirq, int alloc_pirq); int xen_create_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, int type); #endif Loading Loading
arch/x86/pci/xen.c +6 −6 Original line number Diff line number Diff line Loading @@ -100,8 +100,8 @@ static int xen_hvm_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) pirq = MSI_ADDR_EXT_DEST_ID(msg.address_hi) | ((msg.address_lo >> MSI_ADDR_DEST_ID_SHIFT) & 0xff); if (xen_irq_from_pirq(pirq) >= 0 && msg.data == XEN_PIRQ_MSI_DATA) { xen_allocate_pirq_msi((type == PCI_CAP_ID_MSIX) ? "msi-x" : "msi", &irq, &pirq, 0); irq = xen_allocate_pirq_msi((type == PCI_CAP_ID_MSIX) ? "msi-x" : "msi", &pirq, 0); if (irq < 0) goto error; ret = set_irq_msi(irq, msidesc); Loading @@ -111,8 +111,8 @@ static int xen_hvm_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) " pirq=%d\n", irq, pirq); return 0; } xen_allocate_pirq_msi((type == PCI_CAP_ID_MSIX) ? "msi-x" : "msi", &irq, &pirq, 1); irq = xen_allocate_pirq_msi((type == PCI_CAP_ID_MSIX) ? "msi-x" : "msi", &pirq, 1); if (irq < 0 || pirq < 0) goto error; printk(KERN_DEBUG "xen: msi --> irq=%d, pirq=%d\n", irq, pirq); Loading Loading @@ -157,10 +157,10 @@ static int xen_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) goto error; i = 0; list_for_each_entry(msidesc, &dev->msi_list, list) { xen_allocate_pirq_msi( irq = xen_allocate_pirq_msi( (type == PCI_CAP_ID_MSIX) ? "pcifront-msi-x" : "pcifront-msi", &irq, &v[i], 0); &v[i], 0); if (irq < 0) { ret = -1; goto free; Loading
drivers/xen/events.c +11 −8 Original line number Diff line number Diff line Loading @@ -664,31 +664,34 @@ static int find_unbound_pirq(int type) return -1; } void xen_allocate_pirq_msi(char *name, int *irq, int *pirq, int alloc_pirq) int xen_allocate_pirq_msi(char *name, int *pirq, int alloc_pirq) { int irq; spin_lock(&irq_mapping_update_lock); *irq = xen_allocate_irq_dynamic(); if (*irq == -1) irq = xen_allocate_irq_dynamic(); if (irq == -1) goto out; if (alloc_pirq) { *pirq = find_unbound_pirq(MAP_PIRQ_TYPE_MSI); if (*pirq == -1) { xen_free_irq(*irq); *irq = -1; xen_free_irq(irq); irq = -1; goto out; } } set_irq_chip_and_handler_name(*irq, &xen_pirq_chip, set_irq_chip_and_handler_name(irq, &xen_pirq_chip, handle_level_irq, name); irq_info[*irq] = mk_pirq_info(0, *pirq, 0, 0); pirq_to_irq[*pirq] = *irq; irq_info[irq] = mk_pirq_info(0, *pirq, 0, 0); pirq_to_irq[*pirq] = irq; out: spin_unlock(&irq_mapping_update_lock); return irq; } int xen_create_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, int type) Loading
include/xen/events.h +1 −1 Original line number Diff line number Diff line Loading @@ -75,7 +75,7 @@ int xen_allocate_pirq(unsigned gsi, int shareable, char *name); int xen_map_pirq_gsi(unsigned pirq, unsigned gsi, int shareable, char *name); #ifdef CONFIG_PCI_MSI void xen_allocate_pirq_msi(char *name, int *irq, int *pirq, int alloc_pirq); int xen_allocate_pirq_msi(char *name, int *pirq, int alloc_pirq); int xen_create_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, int type); #endif Loading