linux/drivers/pci
Vignesh Raghavendra 9a5595ab21 PCI: dwc: pci-dra7xx: Fix MSI IRQ handling
Due to an issue with PCIe wrapper logic built for the DWC PCIe IP on
dra7xx, the driver needs to ensure that there are no pending MSI IRQ
vector set (i.e PCIE_MSI_INTR0_STATUS reads 0 at least once) before
exiting IRQ handler otherwise the dra7xx PCIe wrapper will not register
new MSI IRQs even though PCIE_MSI_INTR0_STATUS reports IRQs are pending.

Therefore it's no longer possible to use default IRQ handler provided by
DWC library.

Add an irqchip implementation inside pci-dra7xx.c and install new MSI
IRQ handler to handle the above errata.

This fixes a bug, where PCIe wifi cards with 4 DMA queues like Intel
8260 used to throw following error and stall during ping/iperf3 tests.

[   97.776310] iwlwifi 0000:01:00.0: Queue 9 stuck for 2500 ms.

Tested-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Acked-by: Kishon Vijay Abraham I <kishon@ti.com>
2020-03-27 14:40:23 +00:00
..
controller PCI: dwc: pci-dra7xx: Fix MSI IRQ handling 2020-03-27 14:40:23 +00:00
endpoint Merge branch 'remotes/lorenzo/pci/endpoint' 2019-11-28 08:54:42 -06:00
hotplug pci/hotplug/pnv-php: Wrap warnings in macro 2020-01-23 21:31:17 +11:00
pcie PCI/AER: Initialize aer_fifo 2020-01-23 16:40:03 -06:00
switch PCI/switchtec: Add Gen4 device IDs 2020-01-15 11:00:40 -06:00
access.c PCI/AER: Save AER Capability for suspend/resume 2019-10-18 17:05:42 -05:00
ats.c pci-v5.6-fixes-1 2020-02-06 14:17:38 +00:00
bus.c PCI: Unexport pci_bus_get() and pci_bus_put() 2019-07-23 18:32:49 -05:00
ecam.c
host-bridge.c
iov.c PCI/IOV: Fix memory leak in pci_iov_add_virtfn() 2019-12-09 15:51:32 -06:00
irq.c
Kconfig Merge branch 'pci/trivial' 2019-11-28 08:54:55 -06:00
Makefile PCI: Allow building PCIe things without PCIEPORTBUS 2019-11-21 07:52:33 -06:00
mmap.c PCI: Fix typos and whitespace errors 2019-07-09 07:24:53 -05:00
msi.c remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
of.c PCI: Make devm_of_pci_get_host_bridge_resources() static 2019-11-20 17:00:14 +00:00
p2pdma.c PCI/P2PDMA: Add Intel SkyLake-E to the whitelist 2019-12-10 15:15:51 -06:00
pci-acpi.c Merge branch 'pci/enumeration' 2019-09-23 16:10:08 -05:00
pci-bridge-emul.c PCI: pci-bridge-emul: Fix big-endian support 2019-10-17 12:42:48 +01:00
pci-bridge-emul.h PCI: pci-bridge-emul: Fix big-endian support 2019-10-17 12:42:48 +01:00
pci-driver.c PCI/PM: Add missing link delays required by the PCIe spec 2019-11-20 17:37:24 -06:00
pci-label.c
pci-mid.c
pci-pf-stub.c PCI: Fix typos and whitespace errors 2019-07-09 07:24:53 -05:00
pci-stub.c
pci-sysfs.c Merge branch 'pci/resource' 2019-11-28 08:54:36 -06:00
pci.c IOMMU Updates for Linux v5.6 2020-02-05 17:49:54 +00:00
pci.h PCI: Fix pci_add_dma_alias() bitmask size 2019-12-18 12:21:16 -06:00
probe.c Merge branch 'pci/trivial' 2019-11-28 08:54:55 -06:00
proc.c proc: convert everything to "struct proc_ops" 2020-02-04 03:05:26 +00:00
quirks.c pci-v5.6-changes 2020-01-31 14:48:54 -08:00
remove.c
rom.c
search.c Merge branch 'pci/host-vmd' 2020-01-29 17:00:02 -06:00
setup-bus.c PCI: Allow adjust_bridge_window() to shrink resource if necessary 2020-01-29 16:57:28 -06:00
setup-irq.c
setup-res.c
slot.c
syscall.c PCI: Lock down BAR access when the kernel is locked down 2019-08-19 21:54:15 -07:00
vc.c Merge branch 'pci/trivial' 2019-09-23 16:10:31 -05:00
vpd.c PCI/VPD: Prevent VPD access for Amazon's Annapurna Labs Root Port 2019-09-16 14:10:09 +01:00
xen-pcifront.c