linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] pci: dwc: Clear MSI interrupt status after it is handled
@ 2017-08-10 11:24 Faiz Abbas
  2017-08-18 11:43 ` Joao Pinto
  2017-08-22 20:51 ` Bjorn Helgaas
  0 siblings, 2 replies; 3+ messages in thread
From: Faiz Abbas @ 2017-08-10 11:24 UTC (permalink / raw)
  To: jingoohan1, Joao.Pinto; +Cc: bhelgaas, linux-pci, linux-kernel, Faiz Abbas

If the interrupt status is cleared before it is handled, it is possible
that another interrupt will trigger while servicing the previous one.
This is causing timeouts in some wireless lan cards which use pcie.
Therefore, clear MSI interrupt status after it gets serviced instead
of before calling generic_handler.

Signed-off-by: Faiz Abbas <faiz_abbas@ti.com>
---
 drivers/pci/dwc/pcie-designware-host.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/pci/dwc/pcie-designware-host.c b/drivers/pci/dwc/pcie-designware-host.c
index 28ed32b..78b2584 100644
--- a/drivers/pci/dwc/pcie-designware-host.c
+++ b/drivers/pci/dwc/pcie-designware-host.c
@@ -71,9 +71,9 @@ irqreturn_t dw_handle_msi_irq(struct pcie_port *pp)
 		while ((pos = find_next_bit((unsigned long *) &val, 32,
 					    pos)) != 32) {
 			irq = irq_find_mapping(pp->irq_domain, i * 32 + pos);
+			generic_handle_irq(irq);
 			dw_pcie_wr_own_conf(pp, PCIE_MSI_INTR0_STATUS + i * 12,
 					    4, 1 << pos);
-			generic_handle_irq(irq);
 			pos++;
 		}
 	}
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] pci: dwc: Clear MSI interrupt status after it is handled
  2017-08-10 11:24 [PATCH] pci: dwc: Clear MSI interrupt status after it is handled Faiz Abbas
@ 2017-08-18 11:43 ` Joao Pinto
  2017-08-22 20:51 ` Bjorn Helgaas
  1 sibling, 0 replies; 3+ messages in thread
From: Joao Pinto @ 2017-08-18 11:43 UTC (permalink / raw)
  To: Faiz Abbas, jingoohan1, Joao.Pinto; +Cc: bhelgaas, linux-pci, linux-kernel

Hello,

Às 12:24 PM de 8/10/2017, Faiz Abbas escreveu:
> If the interrupt status is cleared before it is handled, it is possible
> that another interrupt will trigger while servicing the previous one.
> This is causing timeouts in some wireless lan cards which use pcie.
> Therefore, clear MSI interrupt status after it gets serviced instead
> of before calling generic_handler.
> 
> Signed-off-by: Faiz Abbas <faiz_abbas@ti.com>
> ---
>  drivers/pci/dwc/pcie-designware-host.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/pci/dwc/pcie-designware-host.c b/drivers/pci/dwc/pcie-designware-host.c
> index 28ed32b..78b2584 100644
> --- a/drivers/pci/dwc/pcie-designware-host.c
> +++ b/drivers/pci/dwc/pcie-designware-host.c
> @@ -71,9 +71,9 @@ irqreturn_t dw_handle_msi_irq(struct pcie_port *pp)
>  		while ((pos = find_next_bit((unsigned long *) &val, 32,
>  					    pos)) != 32) {
>  			irq = irq_find_mapping(pp->irq_domain, i * 32 + pos);
> +			generic_handle_irq(irq);
>  			dw_pcie_wr_own_conf(pp, PCIE_MSI_INTR0_STATUS + i * 12,
>  					    4, 1 << pos);
> -			generic_handle_irq(irq);
>  			pos++;
>  		}
>  	}
> 

It makes sense.

Acked-By: Joao Pinto <jpinto@synopsys.com>

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] pci: dwc: Clear MSI interrupt status after it is handled
  2017-08-10 11:24 [PATCH] pci: dwc: Clear MSI interrupt status after it is handled Faiz Abbas
  2017-08-18 11:43 ` Joao Pinto
@ 2017-08-22 20:51 ` Bjorn Helgaas
  1 sibling, 0 replies; 3+ messages in thread
From: Bjorn Helgaas @ 2017-08-22 20:51 UTC (permalink / raw)
  To: Faiz Abbas; +Cc: jingoohan1, Joao.Pinto, bhelgaas, linux-pci, linux-kernel

On Thu, Aug 10, 2017 at 04:54:55PM +0530, Faiz Abbas wrote:
> If the interrupt status is cleared before it is handled, it is possible
> that another interrupt will trigger while servicing the previous one.
> This is causing timeouts in some wireless lan cards which use pcie.
> Therefore, clear MSI interrupt status after it gets serviced instead
> of before calling generic_handler.
> 
> Signed-off-by: Faiz Abbas <faiz_abbas@ti.com>

Applied with Joao's ack to pci/host-designware for v4.14, thanks!

> ---
>  drivers/pci/dwc/pcie-designware-host.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/pci/dwc/pcie-designware-host.c b/drivers/pci/dwc/pcie-designware-host.c
> index 28ed32b..78b2584 100644
> --- a/drivers/pci/dwc/pcie-designware-host.c
> +++ b/drivers/pci/dwc/pcie-designware-host.c
> @@ -71,9 +71,9 @@ irqreturn_t dw_handle_msi_irq(struct pcie_port *pp)
>  		while ((pos = find_next_bit((unsigned long *) &val, 32,
>  					    pos)) != 32) {
>  			irq = irq_find_mapping(pp->irq_domain, i * 32 + pos);
> +			generic_handle_irq(irq);
>  			dw_pcie_wr_own_conf(pp, PCIE_MSI_INTR0_STATUS + i * 12,
>  					    4, 1 << pos);
> -			generic_handle_irq(irq);
>  			pos++;
>  		}
>  	}
> -- 
> 2.7.4
> 

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2017-08-22 20:51 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-08-10 11:24 [PATCH] pci: dwc: Clear MSI interrupt status after it is handled Faiz Abbas
2017-08-18 11:43 ` Joao Pinto
2017-08-22 20:51 ` Bjorn Helgaas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).