kernel_optimize_test/drivers/pci
Mika Westerberg 0f4bd8014d PCI: hotplug: Drop checking of PCI_BRIDGE_CONTROL in *_unconfigure_device()
When removing a bridge, pciehp_unconfigure_device() reads the
PCI_BRIDGE_CONTROL byte.  If this is a surprise hot-unplug, the device is
already gone and the read returns ~0, which pciehp_unconfigure_device()
interprets as having PCI_BRIDGE_CTL_VGA set.  This results in failure of
the remove operation:

  pciehp 0000:00:1c.0:pcie004: Slot(0): Link Down
  pciehp 0000:00:1c.0:pcie004: Slot(0): Card present
  pciehp 0000:00:1c.0:pcie004: Cannot remove display device 0000:01:00.0

Because of this the hierarchy is left untouched preventing further hotplug
operations.

Now, it is not clear why the check is there in the first place and why we
would like to prevent removing a bridge if it has PCI_BRIDGE_CTL_VGA set.
In case of PCIe surprise hot-unplug, it would not even be possible to
prevent the removal.

Given this and the issue described above, I think it makes sense to drop
the whole PCI_BRIDGE_CONTROL check from pciehp_unconfigure_device().  While
there do the same for shpchp_configure_device() based on the same reasoning
and the fact that the same bug might trigger in standard PCI hotplug as
well.

Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
[bhelgaas: changelog]
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
2017-12-18 23:05:18 -06:00
..
dwc pci-v4.15-changes 2017-11-15 15:01:28 -08:00
endpoint PCI: endpoint: make config_item_type const 2017-10-19 16:15:25 +02:00
host PCI: rcar: Fix use-after-free in probe error path 2017-12-12 11:01:47 -06:00
hotplug PCI: hotplug: Drop checking of PCI_BRIDGE_CONTROL in *_unconfigure_device() 2017-12-18 23:05:18 -06:00
pcie pci-v4.15-changes 2017-11-15 15:01:28 -08:00
switch Support for the switchtec ntb and related changes. Also, a couple of 2017-11-19 20:41:53 -10:00
access.c PCI: Provide Kconfig option for lockless config space accessors 2017-06-28 22:32:56 +02:00
ats.c PCI: Restore PRI and PASID state after Function-Level Reset 2017-05-30 15:40:50 -05:00
bus.c
ecam.c PCI: ECAM: Map config region with pci_remap_cfgspace() 2017-04-24 13:53:14 -05:00
host-bridge.c
iov.c PCI: Restore ARI Capable Hierarchy before setting numVFs 2017-10-10 19:15:29 -05:00
irq.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Kconfig Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2017-11-26 14:11:54 -08:00
Makefile Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2017-11-26 14:11:54 -08:00
mmap.c PCI: Add I/O BAR support to generic pci_mmap_resource_range() 2017-04-20 08:47:47 -05:00
msi.c PCI/MSI: Set MSI_FLAG_MUST_REACTIVATE in core code 2017-10-18 15:38:31 +02:00
of.c
pci-acpi.c ACPI / PCI: Bail early in acpi_pci_add_bus() if there is no ACPI handle 2017-10-05 15:48:54 -05:00
pci-driver.c PM / sleep: Avoid excess pm_runtime_enable() calls in device_resume() 2017-12-11 14:32:56 +01:00
pci-label.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
pci-mid.c PCI / PM: Simplify device wakeup settings code 2017-06-28 01:52:45 +02:00
pci-stub.c
pci-sysfs.c pci-v4.15-changes 2017-11-15 15:01:28 -08:00
pci.c pci-v4.15-changes 2017-11-15 15:01:28 -08:00
pci.h pci-v4.15-changes 2017-11-15 15:01:28 -08:00
probe.c PCI: Distribute available buses to hotplug-capable bridges 2017-11-06 18:48:59 -06:00
proc.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
quirks.c pci-v4.15-changes 2017-11-15 15:01:28 -08:00
remove.c PCI: Detach driver before procfs & sysfs teardown on device remove 2017-10-25 08:47:10 -05:00
rom.c PCI: Fail pci_map_rom() if the option ROM is invalid 2017-11-08 14:47:07 -06:00
search.c PCI: Add device flag PCI_DEV_FLAGS_BRIDGE_XLATE_ROOT 2017-04-13 18:49:50 -05:00
setup-bus.c Merge branch 'pci/resource' into next 2017-11-14 12:11:25 -06:00
setup-irq.c PCI: Inline and remove pcibios_update_irq() 2017-08-10 12:49:57 -05:00
setup-res.c pci-v4.15-changes 2017-11-15 15:01:28 -08:00
slot.c
syscall.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
vc.c
vpd.c
xen-pcifront.c