powerpc/eeh: Refactor eeh_reset_pe()
authorGavin Shan <gwshan@linux.vnet.ibm.com>
Thu, 13 Nov 2014 23:47:28 +0000 (10:47 +1100)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Tue, 2 Dec 2014 00:03:26 +0000 (11:03 +1100)
The patch refactors eeh_reset_pe() in order for:

   * Varied return values for different failure cases.
   * Replace pr_err() with pr_warn() and print function name.
   * Coding style cleanup.

Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/kernel/eeh.c

index 2248a19..967e4a0 100644 (file)
@@ -758,30 +758,37 @@ static void eeh_reset_pe_once(struct eeh_pe *pe)
 int eeh_reset_pe(struct eeh_pe *pe)
 {
        int flags = (EEH_STATE_MMIO_ACTIVE | EEH_STATE_DMA_ACTIVE);
-       int i, rc;
+       int i, state, ret;
 
        /* Take three shots at resetting the bus */
-       for (i=0; i<3; i++) {
+       for (i = 0; i < 3; i++) {
                eeh_reset_pe_once(pe);
 
                /*
                 * EEH_PE_ISOLATED is expected to be removed after
                 * BAR restore.
                 */
-               rc = eeh_ops->wait_state(pe, PCI_BUS_RESET_WAIT_MSEC);
-               if ((rc & flags) == flags)
-                       return 0;
+               state = eeh_ops->wait_state(pe, PCI_BUS_RESET_WAIT_MSEC);
+               if ((state & flags) == flags) {
+                       ret = 0;
+                       goto out;
+               }
 
-               if (rc < 0) {
-                       pr_err("%s: Unrecoverable slot failure on PHB#%d-PE#%x",
+               if (state < 0) {
+                       pr_warn("%s: Unrecoverable slot failure on PHB#%d-PE#%x",
                                __func__, pe->phb->global_number, pe->addr);
-                       return -1;
+                       ret = -ENOTRECOVERABLE;
+                       goto out;
                }
-               pr_err("EEH: bus reset %d failed on PHB#%d-PE#%x, rc=%d\n",
-                       i+1, pe->phb->global_number, pe->addr, rc);
+
+               /* We might run out of credits */
+               ret = -EIO;
+               pr_warn("%s: Failure %d resetting PHB#%x-PE#%x\n (%d)\n",
+                       __func__, state, pe->phb->global_number, pe->addr, (i + 1));
        }
 
-       return -1;
+out:
+       return ret;
 }
 
 /**