.. | .. |
---|
84 | 84 | static int mbi_irq_domain_alloc(struct irq_domain *domain, unsigned int virq, |
---|
85 | 85 | unsigned int nr_irqs, void *args) |
---|
86 | 86 | { |
---|
| 87 | + msi_alloc_info_t *info = args; |
---|
87 | 88 | struct mbi_range *mbi = NULL; |
---|
88 | 89 | int hwirq, offset, i, err = 0; |
---|
89 | 90 | |
---|
.. | .. |
---|
103 | 104 | return -ENOSPC; |
---|
104 | 105 | |
---|
105 | 106 | hwirq = mbi->spi_start + offset; |
---|
| 107 | + |
---|
| 108 | + err = iommu_dma_prepare_msi(info->desc, |
---|
| 109 | + mbi_phys_base + GICD_SETSPI_NSR); |
---|
| 110 | + if (err) |
---|
| 111 | + return err; |
---|
106 | 112 | |
---|
107 | 113 | for (i = 0; i < nr_irqs; i++) { |
---|
108 | 114 | err = mbi_irq_gic_domain_alloc(domain, virq + i, hwirq + i); |
---|
.. | .. |
---|
142 | 148 | msg[0].address_lo = lower_32_bits(mbi_phys_base + GICD_SETSPI_NSR); |
---|
143 | 149 | msg[0].data = data->parent_data->hwirq; |
---|
144 | 150 | |
---|
145 | | - iommu_dma_map_msi_msg(data->irq, msg); |
---|
| 151 | + iommu_dma_compose_msi_msg(irq_data_get_msi_desc(data), msg); |
---|
146 | 152 | } |
---|
147 | 153 | |
---|
148 | 154 | #ifdef CONFIG_PCI_MSI |
---|
.. | .. |
---|
202 | 208 | msg[1].address_lo = lower_32_bits(mbi_phys_base + GICD_CLRSPI_NSR); |
---|
203 | 209 | msg[1].data = data->parent_data->hwirq; |
---|
204 | 210 | |
---|
205 | | - iommu_dma_map_msi_msg(data->irq, &msg[1]); |
---|
| 211 | + iommu_dma_compose_msi_msg(irq_data_get_msi_desc(data), &msg[1]); |
---|
206 | 212 | } |
---|
207 | 213 | |
---|
208 | 214 | /* Platform-MSI specific irqchip */ |
---|