Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1708458 > unrolled thread

[PATCH] pci: dwc: Clear MSI interrupt status after it is handled

Started byFaiz Abbas <faiz_abbas@ti.com>
First post2017-08-10 13:30 +0200
Last post2017-08-10 13:30 +0200
Articles 1 — 1 participant

Back to article view | Back to linux.kernel


Contents

  [PATCH] pci: dwc: Clear MSI interrupt status after it is handled Faiz Abbas <faiz_abbas@ti.com> - 2017-08-10 13:30 +0200

#1708458 — [PATCH] pci: dwc: Clear MSI interrupt status after it is handled

FromFaiz Abbas <faiz_abbas@ti.com>
Date2017-08-10 13:30 +0200
Subject[PATCH] pci: dwc: Clear MSI interrupt status after it is handled
Message-ID<ucTP3-4V8-3@gated-at.bofh.it>
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

[toc] | [standalone]


Back to top | Article view | linux.kernel


csiph-web