return IRQ_HANDLED;
}
---- /* Clear interrupt FIFO register 1 */
---- pcie_write(port, XILINX_PCIE_RPIFR1_ALL_MASK,
---- XILINX_PCIE_REG_RPIFR1);
-
- /* Handle INTx Interrupt */
- val = ((val & XILINX_PCIE_RPIFR1_INTR_MASK) >>
- XILINX_PCIE_RPIFR1_INTR_SHIFT) + 1;
- generic_handle_irq(irq_find_mapping(port->irq_domain, val));
++++ if (!(val & XILINX_PCIE_RPIFR1_MSI_INTR)) {
++++ /* Clear interrupt FIFO register 1 */
++++ pcie_write(port, XILINX_PCIE_RPIFR1_ALL_MASK,
++++ XILINX_PCIE_REG_RPIFR1);
+
-- - /* Handle INTx Interrupt */
-- - val = ((val & XILINX_PCIE_RPIFR1_INTR_MASK) >>
-- - XILINX_PCIE_RPIFR1_INTR_SHIFT) + 1;
-- - generic_handle_irq(irq_find_mapping(port->irq_domain, val));
++++ /* Handle INTx Interrupt */
++++ val = ((val & XILINX_PCIE_RPIFR1_INTR_MASK) >>
++++ XILINX_PCIE_RPIFR1_INTR_SHIFT) + 1;
++++ generic_handle_irq(irq_find_mapping(port->irq_domain,
++++ val));
++++ }
}
if (status & XILINX_PCIE_INTR_MSI) {