diff options
| -rw-r--r-- | arch/powerpc/platforms/pasemi/msi.c | 5 | ||||
| -rw-r--r-- | arch/powerpc/platforms/powernv/pci.c | 5 | ||||
| -rw-r--r-- | arch/powerpc/sysdev/fsl_msi.c | 5 | ||||
| -rw-r--r-- | arch/powerpc/sysdev/mpic_u3msi.c | 5 | ||||
| -rw-r--r-- | arch/powerpc/sysdev/ppc4xx_msi.c | 5 |
5 files changed, 15 insertions, 10 deletions
diff --git a/arch/powerpc/platforms/pasemi/msi.c b/arch/powerpc/platforms/pasemi/msi.c index e66ef1943338..b304a9fe55cc 100644 --- a/arch/powerpc/platforms/pasemi/msi.c +++ b/arch/powerpc/platforms/pasemi/msi.c | |||
| @@ -63,6 +63,7 @@ static struct irq_chip mpic_pasemi_msi_chip = { | |||
| 63 | static void pasemi_msi_teardown_msi_irqs(struct pci_dev *pdev) | 63 | static void pasemi_msi_teardown_msi_irqs(struct pci_dev *pdev) |
| 64 | { | 64 | { |
| 65 | struct msi_desc *entry; | 65 | struct msi_desc *entry; |
| 66 | irq_hw_number_t hwirq; | ||
| 66 | 67 | ||
| 67 | pr_debug("pasemi_msi_teardown_msi_irqs, pdev %p\n", pdev); | 68 | pr_debug("pasemi_msi_teardown_msi_irqs, pdev %p\n", pdev); |
| 68 | 69 | ||
| @@ -70,10 +71,10 @@ static void pasemi_msi_teardown_msi_irqs(struct pci_dev *pdev) | |||
| 70 | if (entry->irq == NO_IRQ) | 71 | if (entry->irq == NO_IRQ) |
| 71 | continue; | 72 | continue; |
| 72 | 73 | ||
| 74 | hwirq = virq_to_hw(entry->irq); | ||
| 73 | irq_set_msi_desc(entry->irq, NULL); | 75 | irq_set_msi_desc(entry->irq, NULL); |
| 74 | msi_bitmap_free_hwirqs(&msi_mpic->msi_bitmap, | ||
| 75 | virq_to_hw(entry->irq), ALLOC_CHUNK); | ||
| 76 | irq_dispose_mapping(entry->irq); | 76 | irq_dispose_mapping(entry->irq); |
| 77 | msi_bitmap_free_hwirqs(&msi_mpic->msi_bitmap, hwirq, ALLOC_CHUNK); | ||
| 77 | } | 78 | } |
| 78 | 79 | ||
| 79 | return; | 80 | return; |
diff --git a/arch/powerpc/platforms/powernv/pci.c b/arch/powerpc/platforms/powernv/pci.c index 9b2480b265c0..f2dd77234240 100644 --- a/arch/powerpc/platforms/powernv/pci.c +++ b/arch/powerpc/platforms/powernv/pci.c | |||
| @@ -99,6 +99,7 @@ void pnv_teardown_msi_irqs(struct pci_dev *pdev) | |||
| 99 | struct pci_controller *hose = pci_bus_to_host(pdev->bus); | 99 | struct pci_controller *hose = pci_bus_to_host(pdev->bus); |
| 100 | struct pnv_phb *phb = hose->private_data; | 100 | struct pnv_phb *phb = hose->private_data; |
| 101 | struct msi_desc *entry; | 101 | struct msi_desc *entry; |
| 102 | irq_hw_number_t hwirq; | ||
| 102 | 103 | ||
| 103 | if (WARN_ON(!phb)) | 104 | if (WARN_ON(!phb)) |
| 104 | return; | 105 | return; |
| @@ -106,10 +107,10 @@ void pnv_teardown_msi_irqs(struct pci_dev *pdev) | |||
| 106 | for_each_pci_msi_entry(entry, pdev) { | 107 | for_each_pci_msi_entry(entry, pdev) { |
| 107 | if (entry->irq == NO_IRQ) | 108 | if (entry->irq == NO_IRQ) |
| 108 | continue; | 109 | continue; |
| 110 | hwirq = virq_to_hw(entry->irq); | ||
| 109 | irq_set_msi_desc(entry->irq, NULL); | 111 | irq_set_msi_desc(entry->irq, NULL); |
| 110 | msi_bitmap_free_hwirqs(&phb->msi_bmp, | ||
| 111 | virq_to_hw(entry->irq) - phb->msi_base, 1); | ||
| 112 | irq_dispose_mapping(entry->irq); | 112 | irq_dispose_mapping(entry->irq); |
| 113 | msi_bitmap_free_hwirqs(&phb->msi_bmp, hwirq - phb->msi_base, 1); | ||
| 113 | } | 114 | } |
| 114 | } | 115 | } |
| 115 | #endif /* CONFIG_PCI_MSI */ | 116 | #endif /* CONFIG_PCI_MSI */ |
diff --git a/arch/powerpc/sysdev/fsl_msi.c b/arch/powerpc/sysdev/fsl_msi.c index 5916da1856a7..48a576aa47b9 100644 --- a/arch/powerpc/sysdev/fsl_msi.c +++ b/arch/powerpc/sysdev/fsl_msi.c | |||
| @@ -128,15 +128,16 @@ static void fsl_teardown_msi_irqs(struct pci_dev *pdev) | |||
| 128 | { | 128 | { |
| 129 | struct msi_desc *entry; | 129 | struct msi_desc *entry; |
| 130 | struct fsl_msi *msi_data; | 130 | struct fsl_msi *msi_data; |
| 131 | irq_hw_number_t hwirq; | ||
| 131 | 132 | ||
| 132 | for_each_pci_msi_entry(entry, pdev) { | 133 | for_each_pci_msi_entry(entry, pdev) { |
| 133 | if (entry->irq == NO_IRQ) | 134 | if (entry->irq == NO_IRQ) |
| 134 | continue; | 135 | continue; |
| 136 | hwirq = virq_to_hw(entry->irq); | ||
| 135 | msi_data = irq_get_chip_data(entry->irq); | 137 | msi_data = irq_get_chip_data(entry->irq); |
| 136 | irq_set_msi_desc(entry->irq, NULL); | 138 | irq_set_msi_desc(entry->irq, NULL); |
| 137 | msi_bitmap_free_hwirqs(&msi_data->bitmap, | ||
| 138 | virq_to_hw(entry->irq), 1); | ||
| 139 | irq_dispose_mapping(entry->irq); | 139 | irq_dispose_mapping(entry->irq); |
| 140 | msi_bitmap_free_hwirqs(&msi_data->bitmap, hwirq, 1); | ||
| 140 | } | 141 | } |
| 141 | 142 | ||
| 142 | return; | 143 | return; |
diff --git a/arch/powerpc/sysdev/mpic_u3msi.c b/arch/powerpc/sysdev/mpic_u3msi.c index 70fbd5694a8b..2cbc7e29b85f 100644 --- a/arch/powerpc/sysdev/mpic_u3msi.c +++ b/arch/powerpc/sysdev/mpic_u3msi.c | |||
| @@ -107,15 +107,16 @@ static u64 find_u4_magic_addr(struct pci_dev *pdev, unsigned int hwirq) | |||
| 107 | static void u3msi_teardown_msi_irqs(struct pci_dev *pdev) | 107 | static void u3msi_teardown_msi_irqs(struct pci_dev *pdev) |
| 108 | { | 108 | { |
| 109 | struct msi_desc *entry; | 109 | struct msi_desc *entry; |
| 110 | irq_hw_number_t hwirq; | ||
| 110 | 111 | ||
| 111 | for_each_pci_msi_entry(entry, pdev) { | 112 | for_each_pci_msi_entry(entry, pdev) { |
| 112 | if (entry->irq == NO_IRQ) | 113 | if (entry->irq == NO_IRQ) |
| 113 | continue; | 114 | continue; |
| 114 | 115 | ||
| 116 | hwirq = virq_to_hw(entry->irq); | ||
| 115 | irq_set_msi_desc(entry->irq, NULL); | 117 | irq_set_msi_desc(entry->irq, NULL); |
| 116 | msi_bitmap_free_hwirqs(&msi_mpic->msi_bitmap, | ||
| 117 | virq_to_hw(entry->irq), 1); | ||
| 118 | irq_dispose_mapping(entry->irq); | 118 | irq_dispose_mapping(entry->irq); |
| 119 | msi_bitmap_free_hwirqs(&msi_mpic->msi_bitmap, hwirq, 1); | ||
| 119 | } | 120 | } |
| 120 | 121 | ||
| 121 | return; | 122 | return; |
diff --git a/arch/powerpc/sysdev/ppc4xx_msi.c b/arch/powerpc/sysdev/ppc4xx_msi.c index 24d0470c1698..8fb806135043 100644 --- a/arch/powerpc/sysdev/ppc4xx_msi.c +++ b/arch/powerpc/sysdev/ppc4xx_msi.c | |||
| @@ -124,16 +124,17 @@ void ppc4xx_teardown_msi_irqs(struct pci_dev *dev) | |||
| 124 | { | 124 | { |
| 125 | struct msi_desc *entry; | 125 | struct msi_desc *entry; |
| 126 | struct ppc4xx_msi *msi_data = &ppc4xx_msi; | 126 | struct ppc4xx_msi *msi_data = &ppc4xx_msi; |
| 127 | irq_hw_number_t hwirq; | ||
| 127 | 128 | ||
| 128 | dev_dbg(&dev->dev, "PCIE-MSI: tearing down msi irqs\n"); | 129 | dev_dbg(&dev->dev, "PCIE-MSI: tearing down msi irqs\n"); |
| 129 | 130 | ||
| 130 | for_each_pci_msi_entry(entry, dev) { | 131 | for_each_pci_msi_entry(entry, dev) { |
| 131 | if (entry->irq == NO_IRQ) | 132 | if (entry->irq == NO_IRQ) |
| 132 | continue; | 133 | continue; |
| 134 | hwirq = virq_to_hw(entry->irq); | ||
| 133 | irq_set_msi_desc(entry->irq, NULL); | 135 | irq_set_msi_desc(entry->irq, NULL); |
| 134 | msi_bitmap_free_hwirqs(&msi_data->bitmap, | ||
| 135 | virq_to_hw(entry->irq), 1); | ||
| 136 | irq_dispose_mapping(entry->irq); | 136 | irq_dispose_mapping(entry->irq); |
| 137 | msi_bitmap_free_hwirqs(&msi_data->bitmap, hwirq, 1); | ||
| 137 | } | 138 | } |
| 138 | } | 139 | } |
| 139 | 140 | ||
