linux/drivers/pci
Bjorn Helgaas fa02bc48bb PCI: Disable IO/MEM decoding for devices with non-compliant BARs
commit b84106b4e2 upstream.

The PCI config header (first 64 bytes of each device's config space) is
defined by the PCI spec so generic software can identify the device and
manage its usage of I/O, memory, and IRQ resources.

Some non-spec-compliant devices put registers other than BARs where the
BARs should be.  When the PCI core sizes these "BARs", the reads and writes
it does may have unwanted side effects, and the "BAR" may appear to
describe non-sensical address space.

Add a flag bit to mark non-compliant devices so we don't touch their BARs.
Turn off IO/MEM decoding to prevent the devices from consuming address
space, since we can't read the BARs to find out what that address space
would be.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Tested-by: Andi Kleen <ak@linux.intel.com>
[bwh: Backported to 3.16: adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
History 2016-05-01 00:05:50 +02:00
..
host PCI: imx6: Move link up check into imx6_pcie_wait_for_link() 2016-05-01 00:05:44 +02:00
hotplug ACPI / PCI / hotplug: unlock in error path in acpiphp_enable_slot() 2016-02-16 19:50:02 +00:00
pcie PCI/AER: Flush workqueue on device remove to avoid use-after-free 2016-02-25 00:18:35 +00:00
access.c PCI: Use function 0 VPD for identical functions, regular VPD for others 2015-10-19 10:54:35 +01:00
ats.c PCI: Removed unused parts of Page Request Interface support 2014-01-10 14:00:47 -07:00
bus.c PCI: Fix minimum allocation address overwrite 2016-02-02 19:09:18 +00:00
host-bridge.c PCI: Remove unnecessary includes of <linux/init.h> 2014-04-14 16:12:37 -06:00
hotplug-pci.c PCI: Remove unnecessary __ref annotations 2014-04-29 17:36:44 -06:00
htirq.c PCI changes for the v3.16 merge window (part 2): 2014-06-12 13:20:24 -07:00
ioapic.c ACPI and power management updates for 3.14-rc1 2014-01-24 15:51:02 -08:00
iov.c PCI: Make pci_bus_add_device() void 2014-05-30 09:34:27 -06:00
irq.c PCI: Fix whitespace, capitalization, and spelling errors 2013-11-14 11:28:18 -07:00
Kconfig PCI: Convert ioapic to be builtin only, not modular 2014-01-03 14:31:38 -07:00
Makefile Merge branch 'x86-nuke-platforms-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2014-04-02 13:15:58 -07:00
msi.c PCI/MSI: Add device flag indicating that 64-bit MSIs don't work 2014-12-10 17:15:17 +00:00
of.c PCI: OF: Don't crash when bridge parent is NULL. 2011-08-19 08:51:37 -07:00
pci-acpi.c PCI: Use pci_is_bridge() to simplify code 2014-05-27 14:53:41 -06:00
pci-driver.c PCI: Generate uppercase hex for modalias var in uevent 2015-02-24 10:01:02 +00:00
pci-label.c ACPI / PCI: Fix sysfs acpi_index and label errors 2014-09-05 16:36:34 -07:00
pci-stub.c PCI: Whitespace cleanup 2014-06-10 20:20:19 -06:00
pci-sysfs.c PCI: Don't read past the end of sysfs "driver_override" buffer 2015-03-23 15:15:56 +00:00
pci.c PCI: Add flag for devices where we can't use bus reset 2015-02-04 10:57:26 +00:00
pci.h PCI: Add pci_bus_clip_resource() to clip to fit upstream window 2015-02-04 10:57:28 +00:00
probe.c PCI: Disable IO/MEM decoding for devices with non-compliant BARs 2016-05-01 00:05:50 +02:00
proc.c PCI: Whitespace cleanup 2014-06-10 20:20:19 -06:00
quirks.c PCI: Use function 0 VPD for identical functions, regular VPD for others 2015-10-19 10:54:35 +01:00
remove.c Revert "PCI: Remove from bus_list and release resources in pci_release_dev()" 2014-02-01 10:24:31 -08:00
rom.c PCI: Fix infinite loop with ROM image of size 0 2015-02-24 10:01:09 +00:00
search.c PCI: Whitespace cleanup 2014-06-10 20:20:19 -06:00
setup-bus.c PCI: Add pci_claim_bridge_resource() to clip window if necessary 2015-02-04 10:57:29 +00:00
setup-irq.c PCI: Whitespace cleanup 2014-06-10 20:20:19 -06:00
setup-res.c PCI: Keep original resource if we fail to expand it 2014-09-05 16:36:34 -07:00
slot.c VERIFY_OCTAL_PERMISSIONS: stricter checking for sysfs perms. 2014-03-24 12:21:00 +10:30
syscall.c PCI: Whitespace cleanup 2014-06-10 20:20:19 -06:00
vc.c PCI: Rename PCI_VC_PORT_REG1/2 to PCI_VC_PORT_CAP1/2 2013-12-17 17:49:39 -07: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 xen/pcifront: Fix mysterious crashes when NUMA locality information was extracted. 2016-03-08 12:15:21 +00:00