diff options
-rw-r--r-- | arch/mips/pci/msi-xlp.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/arch/mips/pci/msi-xlp.c b/arch/mips/pci/msi-xlp.c index 6a40f24c91b4..3407495fcbe2 100644 --- a/arch/mips/pci/msi-xlp.c +++ b/arch/mips/pci/msi-xlp.c | |||
@@ -178,13 +178,6 @@ static void xlp_msi_mask_ack(struct irq_data *d) | |||
178 | else | 178 | else |
179 | nlm_write_reg(md->lnkbase, PCIE_MSI_STATUS, 1u << vec); | 179 | nlm_write_reg(md->lnkbase, PCIE_MSI_STATUS, 1u << vec); |
180 | 180 | ||
181 | /* Ack at eirr and PIC */ | ||
182 | ack_c0_eirr(PIC_PCIE_LINK_MSI_IRQ(link)); | ||
183 | if (cpu_is_xlp9xx()) | ||
184 | nlm_pic_ack(md->node->picbase, | ||
185 | PIC_9XX_IRT_PCIE_LINK_INDEX(link)); | ||
186 | else | ||
187 | nlm_pic_ack(md->node->picbase, PIC_IRT_PCIE_LINK_INDEX(link)); | ||
188 | } | 181 | } |
189 | 182 | ||
190 | static struct irq_chip xlp_msi_chip = { | 183 | static struct irq_chip xlp_msi_chip = { |
@@ -230,8 +223,6 @@ static void xlp_msix_mask_ack(struct irq_data *d) | |||
230 | } | 223 | } |
231 | nlm_write_reg(md->lnkbase, status_reg, 1u << bit); | 224 | nlm_write_reg(md->lnkbase, status_reg, 1u << bit); |
232 | 225 | ||
233 | /* Ack at eirr and PIC */ | ||
234 | ack_c0_eirr(PIC_PCIE_MSIX_IRQ(link)); | ||
235 | if (!cpu_is_xlp9xx()) | 226 | if (!cpu_is_xlp9xx()) |
236 | nlm_pic_ack(md->node->picbase, | 227 | nlm_pic_ack(md->node->picbase, |
237 | PIC_IRT_PCIE_MSIX_INDEX(msixvec)); | 228 | PIC_IRT_PCIE_MSIX_INDEX(msixvec)); |
@@ -541,6 +532,14 @@ void nlm_dispatch_msi(int node, int lirq) | |||
541 | do_IRQ(irqbase + i); | 532 | do_IRQ(irqbase + i); |
542 | status &= status - 1; | 533 | status &= status - 1; |
543 | } | 534 | } |
535 | |||
536 | /* Ack at eirr and PIC */ | ||
537 | ack_c0_eirr(PIC_PCIE_LINK_MSI_IRQ(link)); | ||
538 | if (cpu_is_xlp9xx()) | ||
539 | nlm_pic_ack(md->node->picbase, | ||
540 | PIC_9XX_IRT_PCIE_LINK_INDEX(link)); | ||
541 | else | ||
542 | nlm_pic_ack(md->node->picbase, PIC_IRT_PCIE_LINK_INDEX(link)); | ||
544 | } | 543 | } |
545 | 544 | ||
546 | void nlm_dispatch_msix(int node, int lirq) | 545 | void nlm_dispatch_msix(int node, int lirq) |
@@ -567,4 +566,6 @@ void nlm_dispatch_msix(int node, int lirq) | |||
567 | do_IRQ(irqbase + i); | 566 | do_IRQ(irqbase + i); |
568 | status &= status - 1; | 567 | status &= status - 1; |
569 | } | 568 | } |
569 | /* Ack at eirr and PIC */ | ||
570 | ack_c0_eirr(PIC_PCIE_MSIX_IRQ(link)); | ||
570 | } | 571 | } |