summaryrefslogtreecommitdiff
path: root/drivers/pci
diff options
context:
space:
mode:
authorBjorn Helgaas <bhelgaas@google.com>2017-11-14 12:11:20 -0600
committerBjorn Helgaas <bhelgaas@google.com>2017-11-14 12:11:20 -0600
commitf5b4f7ce8697209614ca516ed6ceea50e52f9600 (patch)
tree73105f86d2b58ff6c5cf027c5d012c8d62ec0370 /drivers/pci
parenta9a6bb463353d6d2bc5620ade0fa3efb4ec5efae (diff)
parent86acc790717fb60fb51ea3095084e331d8711c74 (diff)
Merge branch 'pci/aer' into next
* pci/aer: PCI/AER: Report non-fatal errors only to the affected endpoint
Diffstat (limited to 'drivers/pci')
-rw-r--r--drivers/pci/pcie/aer/aerdrv_core.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/pci/pcie/aer/aerdrv_core.c b/drivers/pci/pcie/aer/aerdrv_core.c
index 890efcc574cb..744805232155 100644
--- a/drivers/pci/pcie/aer/aerdrv_core.c
+++ b/drivers/pci/pcie/aer/aerdrv_core.c
@@ -390,7 +390,14 @@ static pci_ers_result_t broadcast_error_message(struct pci_dev *dev,
* If the error is reported by an end point, we think this
* error is related to the upstream link of the end point.
*/
- pci_walk_bus(dev->bus, cb, &result_data);
+ if (state == pci_channel_io_normal)
+ /*
+ * the error is non fatal so the bus is ok, just invoke
+ * the callback for the function that logged the error.
+ */
+ cb(dev, &result_data);
+ else
+ pci_walk_bus(dev->bus, cb, &result_data);
}
return result_data.result;