From: Faiz Abbas Date: Thu, 10 Aug 2017 11:24:55 +0000 (+0530) Subject: PCI: dwc: Clear MSI interrupt status after it is handled, not before X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=8c934095fa2f336d92b722f49f78ca7abf47e051;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git PCI: dwc: Clear MSI interrupt status after it is handled, not before 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. Clear MSI interrupt status after it gets serviced instead of before calling generic_handler. Signed-off-by: Faiz Abbas Signed-off-by: Bjorn Helgaas Acked-By: Joao Pinto --- diff --git a/drivers/pci/dwc/pcie-designware-host.c b/drivers/pci/dwc/pcie-designware-host.c index 157621175147..99cb70b5de79 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++; } }