]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
PCI/AER: Log which device prevents error recovery
authorYicong Yang <yangyicong@hisilicon.com>
Fri, 13 Dec 2019 11:44:34 +0000 (19:44 +0800)
committerBjorn Helgaas <bhelgaas@google.com>
Thu, 23 Jan 2020 22:39:02 +0000 (16:39 -0600)
PCI error recovery will fail if any device under the Root Port doesn't have
an error_detected callback.  Currently only the failure result is printed,
which is not enough to identify the driver that lacks the callback.

Log a message to identify the device with no error_detected callback.

[bhelgaas: tweak log message]
Link: https://lore.kernel.org/r/1576237474-32021-1-git-send-email-yangyicong@hisilicon.com
Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
drivers/pci/pcie/err.c

index b0e6048a9208d1eef95134a83b35ae17b8f78cf0..98acf944a27fbf4a2453564f590a94f6ccdd2123 100644 (file)
@@ -61,10 +61,12 @@ static int report_error_detected(struct pci_dev *dev,
                 * error callbacks of "any" device in the subtree, and will
                 * exit in the disconnected error state.
                 */
-               if (dev->hdr_type != PCI_HEADER_TYPE_BRIDGE)
+               if (dev->hdr_type != PCI_HEADER_TYPE_BRIDGE) {
                        vote = PCI_ERS_RESULT_NO_AER_DRIVER;
-               else
+                       pci_info(dev, "AER: Can't recover (no error_detected callback)\n");
+               } else {
                        vote = PCI_ERS_RESULT_NONE;
+               }
        } else {
                err_handler = dev->driver->err_handler;
                vote = err_handler->error_detected(dev, state);