linux/drivers/pci
Oza Pawandeep 56abbf8ad7 PCI/DPC: Clear interrupt status in interrupt handler top half
The generic IRQ handling code ensures that an interrupt handler runs with
its interrupt masked or disabled.  If the interrupt is level-triggered, the
interrupt handler must tell its device to stop asserting the interrupt
before returning.  If it doesn't, we will immediately take the interrupt
again when the handler returns and the generic code unmasks the interrupt.

The driver doesn't know whether its interrupt is edge- or level-triggered,
so it must clear its interrupt source directly in its interrupt handler.

Previously we cleared the DPC interrupt status in the bottom half, i.e., in
deferred work, which can cause an interrupt storm if the DPC interrupt
happens to be level-triggered, e.g., if we're using INTx instead of MSI.

Clear the DPC interrupt status bit in the interrupt handler, not in the
deferred work.

Signed-off-by: Oza Pawandeep <poza@codeaurora.org>
[bhelgaas: changelog]
Signed-off-by: Bjorn Helgaas <helgaas@kernel.org>
Reviewed-by: Keith Busch <keith.busch@intel.com>
2018-05-16 15:59:35 -05:00
..
cadence PCI: endpoint: Make epc->ops->clear_bar()/pci_epc_clear_bar() take struct *epf_bar 2018-04-03 12:38:05 +01:00
dwc pci-v4.17-changes 2018-04-06 18:31:06 -07:00
endpoint PCI: endpoint: Make sure that BAR_5 does not have 64-bit flag set when clearing 2018-04-03 12:38:05 +01:00
host Merge branch 'lorenzo/pci/xilinx' 2018-04-04 13:28:57 -05:00
hotplug powerpc updates for 4.17 2018-04-07 12:08:19 -07:00
pcie PCI/DPC: Clear interrupt status in interrupt handler top half 2018-05-16 15:59:35 -05:00
switch vfs: do bulk POLL* -> EPOLL* replacement 2018-02-11 14:34:03 -08:00
access.c Merge branch 'pci/vpd' 2018-04-04 13:28:40 -05:00
ats.c PCI: Tidy comments 2018-03-19 14:20:43 -05:00
bus.c PCI: Tidy comments 2018-03-19 14:20:43 -05:00
ecam.c PCI: Add SPDX GPL-2.0 to replace GPL v2 boilerplate 2018-01-28 15:48:29 -06:00
host-bridge.c PCI: Tidy comments 2018-03-19 14:20:43 -05:00
iov.c Merge branch 'pci/virtualization' 2018-04-04 13:28:26 -05:00
irq.c PCI: Add wrappers for dev_printk() 2018-01-18 12:55:24 -06:00
Kconfig Merge branch 'pci/spdx' into next 2018-02-01 11:40:07 -06:00
Makefile PCI: Tidy Makefiles 2018-03-19 14:20:41 -05:00
mmap.c PCI: Tidy comments 2018-03-19 14:20:43 -05:00
msi.c PCI: Tidy comments 2018-03-19 14:20:43 -05:00
of.c Merge branch 'pci/spdx' into next 2018-02-01 11:40:07 -06:00
pci-acpi.c PCI: Tidy comments 2018-03-19 14:20:43 -05:00
pci-driver.c pci-v4.17-changes 2018-04-06 18:31:06 -07:00
pci-label.c PCI: Tidy comments 2018-03-19 14:20:43 -05:00
pci-mid.c PCI: Add SPDX GPL-2.0 to replace GPL v2 boilerplate 2018-01-28 15:48:29 -06:00
pci-stub.c PCI: Tidy comments 2018-03-19 14:20:43 -05:00
pci-sysfs.c Merge branch 'pci/vpd' 2018-04-04 13:28:40 -05:00
pci.c PCI: Remove messages about reassigning resources 2018-04-11 08:46:50 -05:00
pci.h Merge branch 'pci/vpd' 2018-04-04 13:28:40 -05:00
probe.c pci-v4.17-changes 2018-04-06 18:31:06 -07:00
proc.c PCI: Tidy comments 2018-03-19 14:20:43 -05:00
quirks.c PCI: Mark Broadcom HT1100 and HT2000 Root Port Extended Tags as broken 2018-04-10 14:44:21 -05:00
remove.c PCI: Add SPDX GPL-2.0 when no license was specified 2018-01-26 11:45:16 -06:00
rom.c PCI: Tidy comments 2018-03-19 14:20:43 -05:00
search.c PCI: Tidy comments 2018-03-19 14:20:43 -05:00
setup-bus.c PCI: Tidy comments 2018-03-19 14:20:43 -05:00
setup-irq.c PCI: Tidy comments 2018-03-19 14:20:43 -05:00
setup-res.c PCI: Remove messages about reassigning resources 2018-04-11 08:46:50 -05:00
slot.c Merge branch 'pci/misc' 2018-04-04 13:27:45 -05:00
syscall.c PCI: Tidy comments 2018-03-19 14:20:43 -05:00
vc.c Merge branch 'pci/spdx' into next 2018-02-01 11:40:07 -06:00
vpd.c pci-v4.17-changes 2018-04-06 18:31:06 -07:00
xen-pcifront.c PCI: Tidy comments 2018-03-19 14:20:43 -05:00