Message ID | 20210625090319.10220-3-pali@kernel.org |
---|---|
State | New |
Headers | show |
Series | [1/7] PCI: aardvark: Do not touch status bits of masked interrupts in interrupt handler | expand |
On 2021-06-25 10:03, Pali Rohár wrote: > It is possible that we receive spurious INTx interrupt. So add needed > check > before calling generic_handle_irq() function. > > Signed-off-by: Pali Rohár <pali@kernel.org> > Reviewed-by: Marek Behún <kabel@kernel.org> > Cc: stable@vger.kernel.org > --- > drivers/pci/controller/pci-aardvark.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/pci/controller/pci-aardvark.c > b/drivers/pci/controller/pci-aardvark.c > index 36fcc077ec72..59f91fad2481 100644 > --- a/drivers/pci/controller/pci-aardvark.c > +++ b/drivers/pci/controller/pci-aardvark.c > @@ -1226,7 +1226,11 @@ static void advk_pcie_handle_int(struct > advk_pcie *pcie) > PCIE_ISR1_REG); > > virq = irq_find_mapping(pcie->irq_domain, i); > - generic_handle_irq(virq); > + if (virq) > + generic_handle_irq(virq); > + else > + dev_err_ratelimited(&pcie->pdev->dev, "unexpected INT%c IRQ\n", > + (char)i+'A'); > } > } Please use generic_handle_domain_irq() instead of irq_find_mapping() and generic_handle_irq(). Thanks, M.
On Friday 06 August 2021 09:29:02 Marc Zyngier wrote: > On 2021-06-25 10:03, Pali Rohár wrote: > > It is possible that we receive spurious INTx interrupt. So add needed > > check > > before calling generic_handle_irq() function. > > > > Signed-off-by: Pali Rohár <pali@kernel.org> > > Reviewed-by: Marek Behún <kabel@kernel.org> > > Cc: stable@vger.kernel.org > > --- > > drivers/pci/controller/pci-aardvark.c | 6 +++++- > > 1 file changed, 5 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/pci/controller/pci-aardvark.c > > b/drivers/pci/controller/pci-aardvark.c > > index 36fcc077ec72..59f91fad2481 100644 > > --- a/drivers/pci/controller/pci-aardvark.c > > +++ b/drivers/pci/controller/pci-aardvark.c > > @@ -1226,7 +1226,11 @@ static void advk_pcie_handle_int(struct advk_pcie > > *pcie) > > PCIE_ISR1_REG); > > > > virq = irq_find_mapping(pcie->irq_domain, i); > > - generic_handle_irq(virq); > > + if (virq) > > + generic_handle_irq(virq); > > + else > > + dev_err_ratelimited(&pcie->pdev->dev, "unexpected INT%c IRQ\n", > > + (char)i+'A'); > > } > > } > > Please use generic_handle_domain_irq() instead of irq_find_mapping() > and generic_handle_irq(). Ok! At the time when I was sending these patches there was no function generic_handle_domain_irq(). As all these interrupt related patches are targeting also stable tress where is no generic_handle_domain_irq() function too, it would be easier for backporting to use irq_find_mapping() + generic_handle_irq(). And later after applying all interrupt related patches, include a patch which converts all usage to generic_handle_domain_irq(). > Thanks, > > M. > -- > Jazz is not dead. It just smells funny...
On Mon, 23 Aug 2021 17:33:05 +0100, Pali Rohár <pali@kernel.org> wrote: > > On Friday 06 August 2021 09:29:02 Marc Zyngier wrote: > > On 2021-06-25 10:03, Pali Rohár wrote: > > > It is possible that we receive spurious INTx interrupt. So add needed > > > check > > > before calling generic_handle_irq() function. > > > > > > Signed-off-by: Pali Rohár <pali@kernel.org> > > > Reviewed-by: Marek Behún <kabel@kernel.org> > > > Cc: stable@vger.kernel.org > > > --- > > > drivers/pci/controller/pci-aardvark.c | 6 +++++- > > > 1 file changed, 5 insertions(+), 1 deletion(-) > > > > > > diff --git a/drivers/pci/controller/pci-aardvark.c > > > b/drivers/pci/controller/pci-aardvark.c > > > index 36fcc077ec72..59f91fad2481 100644 > > > --- a/drivers/pci/controller/pci-aardvark.c > > > +++ b/drivers/pci/controller/pci-aardvark.c > > > @@ -1226,7 +1226,11 @@ static void advk_pcie_handle_int(struct advk_pcie > > > *pcie) > > > PCIE_ISR1_REG); > > > > > > virq = irq_find_mapping(pcie->irq_domain, i); > > > - generic_handle_irq(virq); > > > + if (virq) > > > + generic_handle_irq(virq); > > > + else > > > + dev_err_ratelimited(&pcie->pdev->dev, "unexpected INT%c IRQ\n", > > > + (char)i+'A'); > > > } > > > } > > > > Please use generic_handle_domain_irq() instead of irq_find_mapping() > > and generic_handle_irq(). > > Ok! At the time when I was sending these patches there was no function > generic_handle_domain_irq(). > > As all these interrupt related patches are targeting also stable tress > where is no generic_handle_domain_irq() function too, it would be easier > for backporting to use irq_find_mapping() + generic_handle_irq(). And > later after applying all interrupt related patches, include a patch > which converts all usage to generic_handle_domain_irq(). That's not how it works, and I have already done the work converting all the existing users to the new API, already queued in -next. Please send a patch that makes sense for upstream, and a different patch that applies to previous version. M.
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c index 36fcc077ec72..59f91fad2481 100644 --- a/drivers/pci/controller/pci-aardvark.c +++ b/drivers/pci/controller/pci-aardvark.c @@ -1226,7 +1226,11 @@ static void advk_pcie_handle_int(struct advk_pcie *pcie) PCIE_ISR1_REG); virq = irq_find_mapping(pcie->irq_domain, i); - generic_handle_irq(virq); + if (virq) + generic_handle_irq(virq); + else + dev_err_ratelimited(&pcie->pdev->dev, "unexpected INT%c IRQ\n", + (char)i+'A'); } }