|
@@ -178,13 +178,6 @@ static void xlp_msi_mask_ack(struct irq_data *d)
|
|
|
else
|
|
|
nlm_write_reg(md->lnkbase, PCIE_MSI_STATUS, 1u << vec);
|
|
|
|
|
|
- /* Ack at eirr and PIC */
|
|
|
- ack_c0_eirr(PIC_PCIE_LINK_MSI_IRQ(link));
|
|
|
- if (cpu_is_xlp9xx())
|
|
|
- nlm_pic_ack(md->node->picbase,
|
|
|
- PIC_9XX_IRT_PCIE_LINK_INDEX(link));
|
|
|
- else
|
|
|
- nlm_pic_ack(md->node->picbase, PIC_IRT_PCIE_LINK_INDEX(link));
|
|
|
}
|
|
|
|
|
|
static struct irq_chip xlp_msi_chip = {
|
|
@@ -230,8 +223,6 @@ static void xlp_msix_mask_ack(struct irq_data *d)
|
|
|
}
|
|
|
nlm_write_reg(md->lnkbase, status_reg, 1u << bit);
|
|
|
|
|
|
- /* Ack at eirr and PIC */
|
|
|
- ack_c0_eirr(PIC_PCIE_MSIX_IRQ(link));
|
|
|
if (!cpu_is_xlp9xx())
|
|
|
nlm_pic_ack(md->node->picbase,
|
|
|
PIC_IRT_PCIE_MSIX_INDEX(msixvec));
|
|
@@ -541,6 +532,14 @@ void nlm_dispatch_msi(int node, int lirq)
|
|
|
do_IRQ(irqbase + i);
|
|
|
status &= status - 1;
|
|
|
}
|
|
|
+
|
|
|
+ /* Ack at eirr and PIC */
|
|
|
+ ack_c0_eirr(PIC_PCIE_LINK_MSI_IRQ(link));
|
|
|
+ if (cpu_is_xlp9xx())
|
|
|
+ nlm_pic_ack(md->node->picbase,
|
|
|
+ PIC_9XX_IRT_PCIE_LINK_INDEX(link));
|
|
|
+ else
|
|
|
+ nlm_pic_ack(md->node->picbase, PIC_IRT_PCIE_LINK_INDEX(link));
|
|
|
}
|
|
|
|
|
|
void nlm_dispatch_msix(int node, int lirq)
|
|
@@ -567,4 +566,6 @@ void nlm_dispatch_msix(int node, int lirq)
|
|
|
do_IRQ(irqbase + i);
|
|
|
status &= status - 1;
|
|
|
}
|
|
|
+ /* Ack at eirr and PIC */
|
|
|
+ ack_c0_eirr(PIC_PCIE_MSIX_IRQ(link));
|
|
|
}
|