PCI: Bulk conversion to generic_handle_domain_irq()
authorMarc Zyngier <maz@kernel.org>
Mon, 2 Aug 2021 16:26:19 +0000 (17:26 +0100)
committerBjorn Helgaas <bhelgaas@google.com>
Mon, 2 Aug 2021 16:53:05 +0000 (11:53 -0500)
Wherever possible, replace constructs that match either
generic_handle_irq(irq_find_mapping()) or
generic_handle_irq(irq_linear_revmap()) to a single call to
generic_handle_domain_irq().

Link: https://lore.kernel.org/r/20210802162630.2219813-4-maz@kernel.org
Signed-off-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
21 files changed:
drivers/pci/controller/dwc/pci-dra7xx.c
drivers/pci/controller/dwc/pci-keystone.c
drivers/pci/controller/dwc/pcie-designware-host.c
drivers/pci/controller/dwc/pcie-uniphier.c
drivers/pci/controller/mobiveil/pcie-mobiveil-host.c
drivers/pci/controller/pci-aardvark.c
drivers/pci/controller/pci-ftpci100.c
drivers/pci/controller/pci-tegra.c
drivers/pci/controller/pci-xgene-msi.c
drivers/pci/controller/pcie-altera-msi.c
drivers/pci/controller/pcie-altera.c
drivers/pci/controller/pcie-brcmstb.c
drivers/pci/controller/pcie-iproc-msi.c
drivers/pci/controller/pcie-mediatek-gen3.c
drivers/pci/controller/pcie-mediatek.c
drivers/pci/controller/pcie-microchip-host.c
drivers/pci/controller/pcie-rcar-host.c
drivers/pci/controller/pcie-rockchip-host.c
drivers/pci/controller/pcie-xilinx-cpm.c
drivers/pci/controller/pcie-xilinx-nwl.c
drivers/pci/controller/pcie-xilinx.c

index 047cfbd..fbbb78f 100644 (file)
@@ -204,7 +204,7 @@ static int dra7xx_pcie_handle_msi(struct pcie_port *pp, int index)
 {
        struct dw_pcie *pci = to_dw_pcie_from_pp(pp);
        unsigned long val;
-       int pos, irq;
+       int pos;
 
        val = dw_pcie_readl_dbi(pci, PCIE_MSI_INTR0_STATUS +
                                   (index * MSI_REG_CTRL_BLOCK_SIZE));
@@ -213,9 +213,8 @@ static int dra7xx_pcie_handle_msi(struct pcie_port *pp, int index)
 
        pos = find_next_bit(&val, MAX_MSI_IRQS_PER_CTRL, 0);
        while (pos != MAX_MSI_IRQS_PER_CTRL) {
-               irq = irq_find_mapping(pp->irq_domain,
-                                      (index * MAX_MSI_IRQS_PER_CTRL) + pos);
-               generic_handle_irq(irq);
+               generic_handle_domain_irq(pp->irq_domain,
+                                         (index * MAX_MSI_IRQS_PER_CTRL) + pos);
                pos++;
                pos = find_next_bit(&val, MAX_MSI_IRQS_PER_CTRL, pos);
        }
@@ -257,7 +256,7 @@ static void dra7xx_pcie_msi_irq_handler(struct irq_desc *desc)
        struct dw_pcie *pci;
        struct pcie_port *pp;
        unsigned long reg;
-       u32 virq, bit;
+       u32 bit;
 
        chained_irq_enter(chip, desc);
 
@@ -276,11 +275,8 @@ static void dra7xx_pcie_msi_irq_handler(struct irq_desc *desc)
        case INTB:
        case INTC:
        case INTD:
-               for_each_set_bit(bit, &reg, PCI_NUM_INTX) {
-                       virq = irq_find_mapping(dra7xx->irq_domain, bit);
-                       if (virq)
-                               generic_handle_irq(virq);
-               }
+               for_each_set_bit(bit, &reg, PCI_NUM_INTX)
+                       generic_handle_domain_irq(dra7xx->irq_domain, bit);
                break;
        }
 
index bde3b28..865258d 100644 (file)
@@ -259,14 +259,12 @@ static void ks_pcie_handle_legacy_irq(struct keystone_pcie *ks_pcie,
        struct dw_pcie *pci = ks_pcie->pci;
        struct device *dev = pci->dev;
        u32 pending;
-       int virq;
 
        pending = ks_pcie_app_readl(ks_pcie, IRQ_STATUS(offset));
 
        if (BIT(0) & pending) {
-               virq = irq_linear_revmap(ks_pcie->legacy_irq_domain, offset);
-               dev_dbg(dev, ": irq: irq_offset %d, virq %d\n", offset, virq);
-               generic_handle_irq(virq);
+               dev_dbg(dev, ": irq: irq_offset %d", offset);
+               generic_handle_domain_irq(ks_pcie->legacy_irq_domain, offset);
        }
 
        /* EOI the INTx interrupt */
@@ -579,7 +577,7 @@ static void ks_pcie_msi_irq_handler(struct irq_desc *desc)
        struct pcie_port *pp = &pci->pp;
        struct device *dev = pci->dev;
        struct irq_chip *chip = irq_desc_get_chip(desc);
-       u32 vector, virq, reg, pos;
+       u32 vector, reg, pos;
 
        dev_dbg(dev, "%s, irq %d\n", __func__, irq);
 
@@ -600,10 +598,8 @@ static void ks_pcie_msi_irq_handler(struct irq_desc *desc)
                        continue;
 
                vector = offset + (pos << 3);
-               virq = irq_linear_revmap(pp->irq_domain, vector);
-               dev_dbg(dev, "irq: bit %d, vector %d, virq %d\n", pos, vector,
-                       virq);
-               generic_handle_irq(virq);
+               dev_dbg(dev, "irq: bit %d, vector %d\n", pos, vector);
+               generic_handle_domain_irq(pp->irq_domain, vector);
        }
 
        chained_irq_exit(chip, desc);
index a608ae1..d1d9b83 100644 (file)
@@ -55,7 +55,7 @@ static struct msi_domain_info dw_pcie_msi_domain_info = {
 /* MSI int handler */
 irqreturn_t dw_handle_msi_irq(struct pcie_port *pp)
 {
-       int i, pos, irq;
+       int i, pos;
        unsigned long val;
        u32 status, num_ctrls;
        irqreturn_t ret = IRQ_NONE;
@@ -74,10 +74,9 @@ irqreturn_t dw_handle_msi_irq(struct pcie_port *pp)
                pos = 0;
                while ((pos = find_next_bit(&val, MAX_MSI_IRQS_PER_CTRL,
                                            pos)) != MAX_MSI_IRQS_PER_CTRL) {
-                       irq = irq_find_mapping(pp->irq_domain,
-                                              (i * MAX_MSI_IRQS_PER_CTRL) +
-                                              pos);
-                       generic_handle_irq(irq);
+                       generic_handle_domain_irq(pp->irq_domain,
+                                                 (i * MAX_MSI_IRQS_PER_CTRL) +
+                                                 pos);
                        pos++;
                }
        }
index 7e8bad3..d842fd0 100644 (file)
@@ -235,7 +235,7 @@ static void uniphier_pcie_irq_handler(struct irq_desc *desc)
        struct uniphier_pcie_priv *priv = to_uniphier_pcie(pci);
        struct irq_chip *chip = irq_desc_get_chip(desc);
        unsigned long reg;
-       u32 val, bit, virq;
+       u32 val, bit;
 
        /* INT for debug */
        val = readl(priv->base + PCL_RCV_INT);
@@ -257,10 +257,8 @@ static void uniphier_pcie_irq_handler(struct irq_desc *desc)
        val = readl(priv->base + PCL_RCV_INTX);
        reg = FIELD_GET(PCL_RCV_INTX_ALL_STATUS, val);
 
-       for_each_set_bit(bit, &reg, PCI_NUM_INTX) {
-               virq = irq_linear_revmap(priv->legacy_irq_domain, bit);
-               generic_handle_irq(virq);
-       }
+       for_each_set_bit(bit, &reg, PCI_NUM_INTX)
+               generic_handle_domain_irq(priv->legacy_irq_domain, bit);
 
        chained_irq_exit(chip, desc);
 }
index c637de3..f3547aa 100644 (file)
@@ -92,7 +92,7 @@ static void mobiveil_pcie_isr(struct irq_desc *desc)
        u32 msi_data, msi_addr_lo, msi_addr_hi;
        u32 intr_status, msi_status;
        unsigned long shifted_status;
-       u32 bit, virq, val, mask;
+       u32 bit, val, mask;
 
        /*
         * The core provides a single interrupt for both INTx/MSI messages.
@@ -114,11 +114,10 @@ static void mobiveil_pcie_isr(struct irq_desc *desc)
                shifted_status >>= PAB_INTX_START;
                do {
                        for_each_set_bit(bit, &shifted_status, PCI_NUM_INTX) {
-                               virq = irq_find_mapping(rp->intx_domain,
-                                                       bit + 1);
-                               if (virq)
-                                       generic_handle_irq(virq);
-                               else
+                               int ret;
+                               ret = generic_handle_domain_irq(rp->intx_domain,
+                                                               bit + 1);
+                               if (ret)
                                        dev_err_ratelimited(dev, "unexpected IRQ, INT%d\n",
                                                            bit);
 
@@ -155,9 +154,7 @@ static void mobiveil_pcie_isr(struct irq_desc *desc)
                dev_dbg(dev, "MSI registers, data: %08x, addr: %08x:%08x\n",
                        msi_data, msi_addr_hi, msi_addr_lo);
 
-               virq = irq_find_mapping(msi->dev_domain, msi_data);
-               if (virq)
-                       generic_handle_irq(virq);
+               generic_handle_domain_irq(msi->dev_domain, msi_data);
 
                msi_status = readl_relaxed(pcie->apb_csr_base +
                                           MSI_STATUS_OFFSET);
index c95ebe8..d3515e2 100644 (file)
@@ -1049,7 +1049,7 @@ static void advk_pcie_handle_int(struct advk_pcie *pcie)
 {
        u32 isr0_val, isr0_mask, isr0_status;
        u32 isr1_val, isr1_mask, isr1_status;
-       int i, virq;
+       int i;
 
        isr0_val = advk_readl(pcie, PCIE_ISR0_REG);
        isr0_mask = advk_readl(pcie, PCIE_ISR0_MASK_REG);
@@ -1077,8 +1077,7 @@ static void advk_pcie_handle_int(struct advk_pcie *pcie)
                advk_writel(pcie, PCIE_ISR1_INTX_ASSERT(i),
                            PCIE_ISR1_REG);
 
-               virq = irq_find_mapping(pcie->irq_domain, i);
-               generic_handle_irq(virq);
+               generic_handle_domain_irq(pcie->irq_domain, i);
        }
 }
 
index aefef19..88980a4 100644 (file)
@@ -314,7 +314,7 @@ static void faraday_pci_irq_handler(struct irq_desc *desc)
        for (i = 0; i < 4; i++) {
                if ((irq_stat & BIT(i)) == 0)
                        continue;
-               generic_handle_irq(irq_find_mapping(p->irqdomain, i));
+               generic_handle_domain_irq(p->irqdomain, i);
        }
 
        chained_irq_exit(irqchip, desc);
index c979229..36f8986 100644 (file)
@@ -1553,12 +1553,10 @@ static void tegra_pcie_msi_irq(struct irq_desc *desc)
                while (reg) {
                        unsigned int offset = find_first_bit(&reg, 32);
                        unsigned int index = i * 32 + offset;
-                       unsigned int irq;
+                       int ret;
 
-                       irq = irq_find_mapping(msi->domain->parent, index);
-                       if (irq) {
-                               generic_handle_irq(irq);
-                       } else {
+                       ret = generic_handle_domain_irq(msi->domain->parent, index);
+                       if (ret) {
                                /*
                                 * that's weird who triggered this?
                                 * just clear it
index 1c34c89..f1624bb 100644 (file)
@@ -291,8 +291,7 @@ static void xgene_msi_isr(struct irq_desc *desc)
        struct irq_chip *chip = irq_desc_get_chip(desc);
        struct xgene_msi_group *msi_groups;
        struct xgene_msi *xgene_msi;
-       unsigned int virq;
-       int msir_index, msir_val, hw_irq;
+       int msir_index, msir_val, hw_irq, ret;
        u32 intr_index, grp_select, msi_grp;
 
        chained_irq_enter(chip, desc);
@@ -330,10 +329,8 @@ static void xgene_msi_isr(struct irq_desc *desc)
                         * CPU0
                         */
                        hw_irq = hwirq_to_canonical_hwirq(hw_irq);
-                       virq = irq_find_mapping(xgene_msi->inner_domain, hw_irq);
-                       WARN_ON(!virq);
-                       if (virq != 0)
-                               generic_handle_irq(virq);
+                       ret = generic_handle_domain_irq(xgene_msi->inner_domain, hw_irq);
+                       WARN_ON_ONCE(ret);
                        msir_val &= ~(1 << intr_index);
                }
                grp_select &= ~(1 << msir_index);
index 98aa1dc..7b1d3eb 100644 (file)
@@ -55,7 +55,7 @@ static void altera_msi_isr(struct irq_desc *desc)
        struct altera_msi *msi;
        unsigned long status;
        u32 bit;
-       u32 virq;
+       int ret;
 
        chained_irq_enter(chip, desc);
        msi = irq_desc_get_handler_data(desc);
@@ -65,11 +65,9 @@ static void altera_msi_isr(struct irq_desc *desc)
                        /* Dummy read from vector to clear the interrupt */
                        readl_relaxed(msi->vector_base + (bit * sizeof(u32)));
 
-                       virq = irq_find_mapping(msi->inner_domain, bit);
-                       if (virq)
-                               generic_handle_irq(virq);
-                       else
-                               dev_err(&msi->pdev->dev, "unexpected MSI\n");
+                       ret = generic_handle_domain_irq(msi->inner_domain, bit);
+                       if (ret)
+                               dev_err_ratelimited(&msi->pdev->dev, "unexpected MSI\n");
                }
        }
 
index 523bd92..2513e93 100644 (file)
@@ -646,7 +646,7 @@ static void altera_pcie_isr(struct irq_desc *desc)
        struct device *dev;
        unsigned long status;
        u32 bit;
-       u32 virq;
+       int ret;
 
        chained_irq_enter(chip, desc);
        pcie = irq_desc_get_handler_data(desc);
@@ -658,11 +658,9 @@ static void altera_pcie_isr(struct irq_desc *desc)
                        /* clear interrupts */
                        cra_writel(pcie, 1 << bit, P2A_INT_STATUS);
 
-                       virq = irq_find_mapping(pcie->irq_domain, bit);
-                       if (virq)
-                               generic_handle_irq(virq);
-                       else
-                               dev_err(dev, "unexpected IRQ, INT%d\n", bit);
+                       ret = generic_handle_domain_irq(pcie->irq_domain, bit);
+                       if (ret)
+                               dev_err_ratelimited(dev, "unexpected IRQ, INT%d\n", bit);
                }
        }
 
index 08bc788..cc30215 100644 (file)
@@ -476,7 +476,7 @@ static struct msi_domain_info brcm_msi_domain_info = {
 static void brcm_pcie_msi_isr(struct irq_desc *desc)
 {
        struct irq_chip *chip = irq_desc_get_chip(desc);
-       unsigned long status, virq;
+       unsigned long status;
        struct brcm_msi *msi;
        struct device *dev;
        u32 bit;
@@ -489,10 +489,9 @@ static void brcm_pcie_msi_isr(struct irq_desc *desc)
        status >>= msi->legacy_shift;
 
        for_each_set_bit(bit, &status, msi->nr) {
-               virq = irq_find_mapping(msi->inner_domain, bit);
-               if (virq)
-                       generic_handle_irq(virq);
-               else
+               int ret;
+               ret = generic_handle_domain_irq(msi->inner_domain, bit);
+               if (ret)
                        dev_dbg(dev, "unexpected MSI\n");
        }
 
index 35a8212..757b7fb 100644 (file)
@@ -326,7 +326,6 @@ static void iproc_msi_handler(struct irq_desc *desc)
        struct iproc_msi *msi;
        u32 eq, head, tail, nr_events;
        unsigned long hwirq;
-       int virq;
 
        chained_irq_enter(chip, desc);
 
@@ -362,8 +361,7 @@ static void iproc_msi_handler(struct irq_desc *desc)
                /* process all outstanding events */
                while (nr_events--) {
                        hwirq = decode_msi_hwirq(msi, eq, head);
-                       virq = irq_find_mapping(msi->inner_domain, hwirq);
-                       generic_handle_irq(virq);
+                       generic_handle_domain_irq(msi->inner_domain, hwirq);
 
                        head++;
                        head %= EQ_LEN;
index f3aeb8d..17c59b0 100644 (file)
@@ -645,7 +645,6 @@ static void mtk_pcie_msi_handler(struct mtk_pcie_port *port, int set_idx)
 {
        struct mtk_msi_set *msi_set = &port->msi_sets[set_idx];
        unsigned long msi_enable, msi_status;
-       unsigned int virq;
        irq_hw_number_t bit, hwirq;
 
        msi_enable = readl_relaxed(msi_set->base + PCIE_MSI_SET_ENABLE_OFFSET);
@@ -659,8 +658,7 @@ static void mtk_pcie_msi_handler(struct mtk_pcie_port *port, int set_idx)
 
                for_each_set_bit(bit, &msi_status, PCIE_MSI_IRQS_PER_SET) {
                        hwirq = bit + set_idx * PCIE_MSI_IRQS_PER_SET;
-                       virq = irq_find_mapping(port->msi_bottom_domain, hwirq);
-                       generic_handle_irq(virq);
+                       generic_handle_domain_irq(port->msi_bottom_domain, hwirq);
                }
        } while (true);
 }
@@ -670,18 +668,15 @@ static void mtk_pcie_irq_handler(struct irq_desc *desc)
        struct mtk_pcie_port *port = irq_desc_get_handler_data(desc);
        struct irq_chip *irqchip = irq_desc_get_chip(desc);
        unsigned long status;
-       unsigned int virq;
        irq_hw_number_t irq_bit = PCIE_INTX_SHIFT;
 
        chained_irq_enter(irqchip, desc);
 
        status = readl_relaxed(port->base + PCIE_INT_STATUS_REG);
        for_each_set_bit_from(irq_bit, &status, PCI_NUM_INTX +
-                             PCIE_INTX_SHIFT) {
-               virq = irq_find_mapping(port->intx_domain,
-                                       irq_bit - PCIE_INTX_SHIFT);
-               generic_handle_irq(virq);
-       }
+                             PCIE_INTX_SHIFT)
+               generic_handle_domain_irq(port->intx_domain,
+                                         irq_bit - PCIE_INTX_SHIFT);
 
        irq_bit = PCIE_MSI_SHIFT;
        for_each_set_bit_from(irq_bit, &status, PCIE_MSI_SET_NUM +
index 25bee69..4cb5ea8 100644 (file)
@@ -602,7 +602,6 @@ static void mtk_pcie_intr_handler(struct irq_desc *desc)
        struct mtk_pcie_port *port = irq_desc_get_handler_data(desc);
        struct irq_chip *irqchip = irq_desc_get_chip(desc);
        unsigned long status;
-       u32 virq;
        u32 bit = INTX_SHIFT;
 
        chained_irq_enter(irqchip, desc);
@@ -612,9 +611,8 @@ static void mtk_pcie_intr_handler(struct irq_desc *desc)
                for_each_set_bit_from(bit, &status, PCI_NUM_INTX + INTX_SHIFT) {
                        /* Clear the INTx */
                        writel(1 << bit, port->base + PCIE_INT_STATUS);
-                       virq = irq_find_mapping(port->irq_domain,
-                                               bit - INTX_SHIFT);
-                       generic_handle_irq(virq);
+                       generic_handle_domain_irq(port->irq_domain,
+                                                 bit - INTX_SHIFT);
                }
        }
 
@@ -623,10 +621,8 @@ static void mtk_pcie_intr_handler(struct irq_desc *desc)
                        unsigned long imsi_status;
 
                        while ((imsi_status = readl(port->base + PCIE_IMSI_STATUS))) {
-                               for_each_set_bit(bit, &imsi_status, MTK_MSI_IRQS_NUM) {
-                                       virq = irq_find_mapping(port->inner_domain, bit);
-                                       generic_handle_irq(virq);
-                               }
+                               for_each_set_bit(bit, &imsi_status, MTK_MSI_IRQS_NUM)
+                                       generic_handle_domain_irq(port->inner_domain, bit);
                        }
                        /* Clear MSI interrupt status */
                        writel(MSI_STATUS, port->base + PCIE_INT_STATUS);
index fdab820..329f930 100644 (file)
@@ -412,16 +412,14 @@ static void mc_handle_msi(struct irq_desc *desc)
                port->axi_base_addr + MC_PCIE_BRIDGE_ADDR;
        unsigned long status;
        u32 bit;
-       u32 virq;
+       int ret;
 
        status = readl_relaxed(bridge_base_addr + ISTATUS_LOCAL);
        if (status & PM_MSI_INT_MSI_MASK) {
                status = readl_relaxed(bridge_base_addr + ISTATUS_MSI);
                for_each_set_bit(bit, &status, msi->num_vectors) {
-                       virq = irq_find_mapping(msi->dev_domain, bit);
-                       if (virq)
-                               generic_handle_irq(virq);
-                       else
+                       ret = generic_handle_domain_irq(msi->dev_domain, bit);
+                       if (ret)
                                dev_err_ratelimited(dev, "bad MSI IRQ %d\n",
                                                    bit);
                }
@@ -570,17 +568,15 @@ static void mc_handle_intx(struct irq_desc *desc)
                port->axi_base_addr + MC_PCIE_BRIDGE_ADDR;
        unsigned long status;
        u32 bit;
-       u32 virq;
+       int ret;
 
        status = readl_relaxed(bridge_base_addr + ISTATUS_LOCAL);
        if (status & PM_MSI_INT_INTX_MASK) {
                status &= PM_MSI_INT_INTX_MASK;
                status >>= PM_MSI_INT_INTX_SHIFT;
                for_each_set_bit(bit, &status, PCI_NUM_INTX) {
-                       virq = irq_find_mapping(port->intx_domain, bit);
-                       if (virq)
-                               generic_handle_irq(virq);
-                       else
+                       ret = generic_handle_domain_irq(port->intx_domain, bit);
+                       if (ret)
                                dev_err_ratelimited(dev, "bad INTx IRQ %d\n",
                                                    bit);
                }
@@ -745,7 +741,7 @@ static void mc_handle_event(struct irq_desc *desc)
        events = get_events(port);
 
        for_each_set_bit(bit, &events, NUM_EVENTS)
-               generic_handle_irq(irq_find_mapping(port->event_domain, bit));
+               generic_handle_domain_irq(port->event_domain, bit);
 
        chained_irq_exit(chip, desc);
 }
index 765cf2b..00a8267 100644 (file)
@@ -486,12 +486,10 @@ static irqreturn_t rcar_pcie_msi_irq(int irq, void *data)
 
        while (reg) {
                unsigned int index = find_first_bit(&reg, 32);
-               unsigned int msi_irq;
+               int ret;
 
-               msi_irq = irq_find_mapping(msi->domain->parent, index);
-               if (msi_irq) {
-                       generic_handle_irq(msi_irq);
-               } else {
+               ret = generic_handle_domain_irq(msi->domain->parent, index);
+               if (ret) {
                        /* Unknown MSI, just clear it */
                        dev_dbg(dev, "unexpected MSI\n");
                        rcar_pci_write_reg(pcie, BIT(index), PCIEMSIFR);
index 78d04ac..c52316d 100644 (file)
@@ -517,7 +517,7 @@ static void rockchip_pcie_legacy_int_handler(struct irq_desc *desc)
        struct device *dev = rockchip->dev;
        u32 reg;
        u32 hwirq;
-       u32 virq;
+       int ret;
 
        chained_irq_enter(chip, desc);
 
@@ -528,10 +528,8 @@ static void rockchip_pcie_legacy_int_handler(struct irq_desc *desc)
                hwirq = ffs(reg) - 1;
                reg &= ~BIT(hwirq);
 
-               virq = irq_find_mapping(rockchip->irq_domain, hwirq);
-               if (virq)
-                       generic_handle_irq(virq);
-               else
+               ret = generic_handle_domain_irq(rockchip->irq_domain, hwirq);
+               if (ret)
                        dev_err(dev, "unexpected IRQ, INT%d\n", hwirq);
        }
 
index 67937fa..95426df 100644 (file)
@@ -222,7 +222,7 @@ static void xilinx_cpm_pcie_intx_flow(struct irq_desc *desc)
                        pcie_read(port, XILINX_CPM_PCIE_REG_IDRN));
 
        for_each_set_bit(i, &val, PCI_NUM_INTX)
-               generic_handle_irq(irq_find_mapping(port->intx_domain, i));
+               generic_handle_domain_irq(port->intx_domain, i);
 
        chained_irq_exit(chip, desc);
 }
@@ -282,7 +282,7 @@ static void xilinx_cpm_pcie_event_flow(struct irq_desc *desc)
        val =  pcie_read(port, XILINX_CPM_PCIE_REG_IDR);
        val &= pcie_read(port, XILINX_CPM_PCIE_REG_IMR);
        for_each_set_bit(i, &val, 32)
-               generic_handle_irq(irq_find_mapping(port->cpm_domain, i));
+               generic_handle_domain_irq(port->cpm_domain, i);
        pcie_write(port, val, XILINX_CPM_PCIE_REG_IDR);
 
        /*
index 8689311..3d178d5 100644 (file)
@@ -318,18 +318,14 @@ static void nwl_pcie_leg_handler(struct irq_desc *desc)
        struct nwl_pcie *pcie;
        unsigned long status;
        u32 bit;
-       u32 virq;
 
        chained_irq_enter(chip, desc);
        pcie = irq_desc_get_handler_data(desc);
 
        while ((status = nwl_bridge_readl(pcie, MSGF_LEG_STATUS) &
                                MSGF_LEG_SR_MASKALL) != 0) {
-               for_each_set_bit(bit, &status, PCI_NUM_INTX) {
-                       virq = irq_find_mapping(pcie->legacy_irq_domain, bit);
-                       if (virq)
-                               generic_handle_irq(virq);
-               }
+               for_each_set_bit(bit, &status, PCI_NUM_INTX)
+                       generic_handle_domain_irq(pcie->legacy_irq_domain, bit);
        }
 
        chained_irq_exit(chip, desc);
@@ -340,16 +336,13 @@ static void nwl_pcie_handle_msi_irq(struct nwl_pcie *pcie, u32 status_reg)
        struct nwl_msi *msi;
        unsigned long status;
        u32 bit;
-       u32 virq;
 
        msi = &pcie->msi;
 
        while ((status = nwl_bridge_readl(pcie, status_reg)) != 0) {
                for_each_set_bit(bit, &status, 32) {
                        nwl_bridge_writel(pcie, 1 << bit, status_reg);
-                       virq = irq_find_mapping(msi->dev_domain, bit);
-                       if (virq)
-                               generic_handle_irq(virq);
+                       generic_handle_domain_irq(msi->dev_domain, bit);
                }
        }
 }
index 14001fe..aa9bdce 100644 (file)
@@ -385,7 +385,7 @@ static irqreturn_t xilinx_pcie_intr_handler(int irq, void *data)
        }
 
        if (status & (XILINX_PCIE_INTR_INTX | XILINX_PCIE_INTR_MSI)) {
-               unsigned int irq;
+               struct irq_domain *domain;
 
                val = pcie_read(port, XILINX_PCIE_REG_RPIFR1);
 
@@ -399,19 +399,18 @@ static irqreturn_t xilinx_pcie_intr_handler(int irq, void *data)
                if (val & XILINX_PCIE_RPIFR1_MSI_INTR) {
                        val = pcie_read(port, XILINX_PCIE_REG_RPIFR2) &
                                XILINX_PCIE_RPIFR2_MSG_DATA;
-                       irq = irq_find_mapping(port->msi_domain->parent, val);
+                       domain = port->msi_domain->parent;
                } else {
                        val = (val & XILINX_PCIE_RPIFR1_INTR_MASK) >>
                                XILINX_PCIE_RPIFR1_INTR_SHIFT;
-                       irq = irq_find_mapping(port->leg_domain, val);
+                       domain = port->leg_domain;
                }
 
                /* Clear interrupt FIFO register 1 */
                pcie_write(port, XILINX_PCIE_RPIFR1_ALL_MASK,
                           XILINX_PCIE_REG_RPIFR1);
 
-               if (irq)
-                       generic_handle_irq(irq);
+               generic_handle_domain_irq(domain, val);
        }
 
        if (status & XILINX_PCIE_INTR_SLV_UNSUPP)