| .. | .. |
|---|
| 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 */ |
|---|