linux/drivers/pci
Jason Gunthorpe 7ac8a10c8a PCI: mvebu: Handle changes to the bridge windows while enabled
[ Upstream commit d9bf28e265 ]

The PCI core will write to the bridge window config multiple times while
they are enabled.  This can lead to mbus failures like this:

 mvebu_mbus: cannot add window '4:e8', conflicts with another window
 mvebu-pcie mbus:pex@e0000000: Could not create MBus window at [mem 0xe0000000-0xe00fffff]: -22

For me this is happening during a hotplug cycle.  The PCI core is not
changing the values, just writing them twice while active.

The patch addresses the general case of any change to an active window, but
not atomically.  The code is slightly refactored so io and mem can share
more of the window logic.

Signed-off-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Jason Cooper <jason@lakedaemon.net>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2017-11-15 15:53:11 +01:00
..
host PCI: mvebu: Handle changes to the bridge windows while enabled 2017-11-15 15:53:11 +01:00
hotplug PCI: pciehp: Report power fault only once until we clear it 2017-09-27 14:39:24 +02:00
pcie PCI/PME: Restore pcie_pme_driver.remove 2017-02-23 17:44:36 +01:00
access.c PCI: Avoid possible deadlock on pci_lock and p->pi_lock 2017-11-08 10:08:37 +01:00
ats.c PCI: Remove pci_ats_enabled() 2015-08-13 15:59:59 -05:00
bus.c Merge branches 'pci/demodularize-hosts' and 'pci/host-request-windows' into next 2016-08-01 12:23:57 -05:00
ecam.c tree-wide: replace config_enabled() with IS_ENABLED() 2016-08-04 08:50:07 -04:00
host-bridge.c cxl: use pcibios_free_controller_deferred() when removing vPHBs 2016-08-22 11:09:33 +10:00
hotplug-pci.c PCI: Remove unnecessary __ref annotations 2014-04-29 17:36:44 -06:00
htirq.c x86/htirq: Use hierarchical irqdomain to manage Hypertransport interrupts 2015-04-24 15:36:50 +02:00
iov.c PCI: Do any VF BAR updates before enabling the BARs 2017-03-22 12:43:37 +01:00
irq.c PCI: Fix whitespace, capitalization, and spelling errors 2013-11-14 11:28:18 -07:00
Kconfig PCI/MSI: Enable PCI_MSI_IRQ_DOMAIN support for ARC 2016-09-06 10:53:32 -05:00
Makefile x86/platform/intel-mid: Add Power Management Unit driver 2016-06-15 10:10:49 +02:00
msi.c PCI/MSI: Return failure when msix_setup_entries() fails 2017-11-08 10:08:34 +01:00
of.c PCI/MSI: Use of_msi_get_domain instead of open-coded "msi-parent" parsing 2015-10-16 13:07:14 +01:00
pci-acpi.c PCI: Query platform firmware for device power state 2016-09-28 11:46:51 -05:00
pci-driver.c PCI/PM: Restore the status of PCI devices across hibernation 2017-07-27 15:08:00 -07:00
pci-label.c PCI: Fix broken URL for Dell biosdevname 2016-02-29 12:03:19 -06:00
pci-mid.c x86/platform/intel-mid: Retrofit pci_platform_pm_ops ->get_state hook 2016-11-07 13:06:59 +01:00
pci-stub.c PCI: Whitespace cleanup 2014-06-10 20:20:19 -06:00
pci-sysfs.c PCI: Fix race condition with driver_override 2017-10-05 09:44:03 +02:00
pci.c PCI/PM: Add needs_resume flag to avoid suspend complete optimization 2017-06-17 06:41:48 +02:00
pci.h PCI: Remove pci_resource_bar() and pci_iov_resource_bar() 2017-03-22 12:43:36 +01:00
probe.c PCI: Decouple IORESOURCE_ROM_ENABLE and PCI_ROM_ADDRESS_ENABLE 2017-03-22 12:43:36 +01:00
proc.c PCI: Only allow WC mmap on prefetchable resources 2017-05-25 15:44:47 +02:00
quirks.c PCI: Add ACS quirk for Qualcomm QDF2400 and QDF2432 2017-04-12 12:41:22 +02:00
remove.c PCI: Fix bridge_d3 update on device removal 2016-09-13 16:00:18 -05:00
rom.c PCI: Add comments about ROM BAR updating 2017-03-22 12:43:36 +01:00
search.c PCI: Add support for multiple DMA aliases 2016-04-11 14:34:32 -05:00
setup-bus.c x86/ioapic: Ignore root bridges without a companion ACPI device 2016-09-10 20:30:31 +02:00
setup-irq.c PCI: Export symbols required for loadable host driver modules 2015-04-08 14:17:10 -05:00
setup-res.c PCI: Ignore BAR updates on virtual functions 2017-03-22 12:43:37 +01:00
slot.c PCI: Hold pci_slot_mutex while searching bus->slots list 2015-07-30 16:19:53 -05:00
syscall.c PCI: Whitespace cleanup 2014-06-10 20:20:19 -06:00
vc.c PCI: Fix unaligned accesses in VC code 2016-06-20 13:24:20 -05:00
vpd.c pci: Fix files needing export.h for EXPORT_SYMBOL/THIS_MODULE 2011-10-31 19:31:22 -04:00
xen-pcifront.c treewide: replace obsolete _refok by __ref 2016-08-02 17:31:41 -04:00