PCI: aardvark: Check return value of generic_handle_domain_irq() when processing...
authorPali Rohár <pali@kernel.org>
Wed, 4 May 2022 16:57:39 +0000 (18:57 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 12 May 2022 10:30:30 +0000 (12:30 +0200)
commit 51f96e287c6f003d3bb29672811c757c5fbf0028 upstream.

It is possible that we receive spurious INTx interrupt. Check for the
return value of generic_handle_domain_irq() when processing INTx IRQ.

Link: https://lore.kernel.org/r/20220110015018.26359-6-kabel@kernel.org
Signed-off-by: Pali Rohár <pali@kernel.org>
Signed-off-by: Marek Behún <kabel@kernel.org>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Signed-off-by: Marek Behún <kabel@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/pci/controller/pci-aardvark.c

index 5d6ed7a..00fe1e6 100644 (file)
@@ -1429,7 +1429,9 @@ static void advk_pcie_handle_int(struct advk_pcie *pcie)
                advk_writel(pcie, PCIE_ISR1_INTX_ASSERT(i),
                            PCIE_ISR1_REG);
 
-               generic_handle_domain_irq(pcie->irq_domain, i);
+               if (generic_handle_domain_irq(pcie->irq_domain, i) == -EINVAL)
+                       dev_err_ratelimited(&pcie->pdev->dev, "unexpected INT%c IRQ\n",
+                                           (char)i + 'A');
        }
 }