summaryrefslogtreecommitdiff
path: root/drivers/pci/pcie
diff options
context:
space:
mode:
authorBjorn Helgaas <bhelgaas@google.com>2017-04-28 18:33:55 +0300
committerBjorn Helgaas <bhelgaas@google.com>2017-04-28 18:33:55 +0300
commitf503ee4cbef9c5459d9e176542e4d0e0ed3915f6 (patch)
tree0d2c86dd676b14ff8b39b4ded4bb741e99b8e8a2 /drivers/pci/pcie
parentd060c6fcef972e6a8d0898c55f1b7b6da89a6744 (diff)
parent9b70ae4951746146838b474c3a90722666edf4c1 (diff)
downloadlinux-f503ee4cbef9c5459d9e176542e4d0e0ed3915f6.tar.xz
Merge branch 'pci/enumeration' into next
* pci/enumeration: PCI: Include PCI-to-PCIe bridges as "Downstream Ports" PCI: Improve __pci_read_base() robustness PCI: Short-circuit pci_device_is_present() for disconnected devices PCI/MSI: Skip disabling disconnected devices PCI: Don't attempt config access to disconnected devices PCI: Add device disconnected state PCI: Export PCI device config accessors
Diffstat (limited to 'drivers/pci/pcie')
-rw-r--r--drivers/pci/pcie/pcie-dpc.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/pci/pcie/pcie-dpc.c b/drivers/pci/pcie/pcie-dpc.c
index d4d70ef4a2d7..77d2ca99d2ec 100644
--- a/drivers/pci/pcie/pcie-dpc.c
+++ b/drivers/pci/pcie/pcie-dpc.c
@@ -14,6 +14,7 @@
#include <linux/init.h>
#include <linux/pci.h>
#include <linux/pcieport_if.h>
+#include "../pci.h"
struct dpc_dev {
struct pcie_device *dev;
@@ -66,6 +67,10 @@ static void interrupt_event_handler(struct work_struct *work)
list_for_each_entry_safe_reverse(dev, temp, &parent->devices,
bus_list) {
pci_dev_get(dev);
+ pci_dev_set_disconnected(dev, NULL);
+ if (pci_has_subordinate(dev))
+ pci_walk_bus(dev->subordinate,
+ pci_dev_set_disconnected, NULL);
pci_stop_and_remove_bus_device(dev);
pci_dev_put(dev);
}