PCI: aerdrv: rework do_recovery
authorHidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
Thu, 15 Apr 2010 04:16:52 +0000 (13:16 +0900)
committerJesse Barnes <jbarnes@virtuousgeek.org>
Tue, 11 May 2010 19:01:33 +0000 (12:01 -0700)
Move dev_printks for debug into do_recovery().
This allows do_recovery() to return void.

Signed-off-by: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
Reviewed-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
drivers/pci/pcie/aer/aerdrv_core.c

index 210e53c2fdc17a2bfb9eb6f003958a65619fbbff..9dcd3aeeafb6d3d855a528b999687920b7cd020f 100644 (file)
@@ -465,8 +465,7 @@ static pci_ers_result_t reset_link(struct pcie_device *aerdev,
  * error detected message to all downstream drivers within a hierarchy in
  * question and return the returned code.
  */
-static pci_ers_result_t do_recovery(struct pcie_device *aerdev,
-               struct pci_dev *dev,
+static void do_recovery(struct pcie_device *aerdev, struct pci_dev *dev,
                int severity)
 {
        pci_ers_result_t status, result = PCI_ERS_RESULT_RECOVERED;
@@ -484,10 +483,8 @@ static pci_ers_result_t do_recovery(struct pcie_device *aerdev,
 
        if (severity == AER_FATAL) {
                result = reset_link(aerdev, dev);
-               if (result != PCI_ERS_RESULT_RECOVERED) {
-                       /* TODO: Should panic here? */
-                       return result;
-               }
+               if (result != PCI_ERS_RESULT_RECOVERED)
+                       goto failed;
        }
 
        if (status == PCI_ERS_RESULT_CAN_RECOVER)
@@ -508,13 +505,22 @@ static pci_ers_result_t do_recovery(struct pcie_device *aerdev,
                                report_slot_reset);
        }
 
-       if (status == PCI_ERS_RESULT_RECOVERED)
-               broadcast_error_message(dev,
+       if (status != PCI_ERS_RESULT_RECOVERED)
+               goto failed;
+
+       broadcast_error_message(dev,
                                state,
                                "resume",
                                report_resume);
 
-       return status;
+       dev_printk(KERN_DEBUG, &dev->dev,
+               "AER driver successfully recovered\n");
+       return;
+
+failed:
+       /* TODO: Should kernel panic here? */
+       dev_printk(KERN_DEBUG, &dev->dev,
+               "AER driver didn't recover\n");
 }
 
 /**
@@ -529,7 +535,6 @@ static void handle_error_source(struct pcie_device *aerdev,
        struct pci_dev *dev,
        struct aer_err_info *info)
 {
-       pci_ers_result_t status = 0;
        int pos;
 
        if (info->severity == AER_CORRECTABLE) {
@@ -541,17 +546,8 @@ static void handle_error_source(struct pcie_device *aerdev,
                if (pos)
                        pci_write_config_dword(dev, pos + PCI_ERR_COR_STATUS,
                                        info->status);
-       } else {
-               status = do_recovery(aerdev, dev, info->severity);
-               if (status == PCI_ERS_RESULT_RECOVERED) {
-                       dev_printk(KERN_DEBUG, &dev->dev, "AER driver "
-                                  "successfully recovered\n");
-               } else {
-                       /* TODO: Should kernel panic here? */
-                       dev_printk(KERN_DEBUG, &dev->dev, "AER driver didn't "
-                                  "recover\n");
-               }
-       }
+       } else
+               do_recovery(aerdev, dev, info->severity);
 }
 
 /**