PCI/AER: Reset link for devices below Root Port or Downstream Port
authorBetty Dall <betty.dall@hp.com>
Thu, 6 Jun 2013 18:10:51 +0000 (12:10 -0600)
committerBjorn Helgaas <bhelgaas@google.com>
Thu, 6 Jun 2013 21:00:04 +0000 (15:00 -0600)
When a PCIe device reports a fatal error, we reset the link leading
to it.  Previously we only did this for devices below Downstream Ports,
not for devices directly below Root Ports.

This patch changes that so we reset the link leading to devices below
Root Ports just like we do for those below Downstream Ports.

[bhelgaas: changelog, keep dev_printk(KERN_DEBUG)]
Signed-off-by: Betty Dall <betty.dall@hp.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
drivers/pci/pcie/aer/aerdrv_core.c

index 8ec8b4f485604e384de9bf7eddfe2c97c4cae5d5..d9e776e69fe862a4538fa60b0ebc16903d0232e6 100644 (file)
@@ -400,16 +400,16 @@ void aer_do_secondary_bus_reset(struct pci_dev *dev)
 }
 
 /**
- * default_downstream_reset_link - default reset function for Downstream Port
- * @dev: pointer to downstream port's pci_dev data structure
+ * default_reset_link - default reset function
+ * @dev: pointer to pci_dev data structure
  *
- * Invoked when performing link reset at Downstream Port w/ no aer driver.
+ * Invoked when performing link reset on a Downstream Port or a
+ * Root Port with no aer driver.
  */
-static pci_ers_result_t default_downstream_reset_link(struct pci_dev *dev)
+static pci_ers_result_t default_reset_link(struct pci_dev *dev)
 {
        aer_do_secondary_bus_reset(dev);
-       dev_printk(KERN_DEBUG, &dev->dev,
-               "Downstream Port link has been reset\n");
+       dev_printk(KERN_DEBUG, &dev->dev, "downstream link has been reset\n");
        return PCI_ERS_RESULT_RECOVERED;
 }
 
@@ -458,8 +458,9 @@ static pci_ers_result_t reset_link(struct pci_dev *dev)
 
        if (driver && driver->reset_link) {
                status = driver->reset_link(udev);
-       } else if (pci_pcie_type(udev) == PCI_EXP_TYPE_DOWNSTREAM) {
-               status = default_downstream_reset_link(udev);
+       } else if (pci_pcie_type(udev) == PCI_EXP_TYPE_DOWNSTREAM ||
+               pci_pcie_type(udev) == PCI_EXP_TYPE_ROOT_PORT) {
+               status = default_reset_link(udev);
        } else {
                dev_printk(KERN_DEBUG, &dev->dev,
                        "no link-reset support at upstream device %s\n",
This page took 0.026739 seconds and 5 git commands to generate.