summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjorn Helgaas <bhelgaas@google.com>2017-11-14 21:11:20 +0300
committerBjorn Helgaas <bhelgaas@google.com>2017-11-14 21:11:20 +0300
commitf5b4f7ce8697209614ca516ed6ceea50e52f9600 (patch)
tree73105f86d2b58ff6c5cf027c5d012c8d62ec0370
parenta9a6bb463353d6d2bc5620ade0fa3efb4ec5efae (diff)
parent86acc790717fb60fb51ea3095084e331d8711c74 (diff)
downloadlinux-f5b4f7ce8697209614ca516ed6ceea50e52f9600.tar.xz
Merge branch 'pci/aer' into next
* pci/aer: PCI/AER: Report non-fatal errors only to the affected endpoint
-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;