powerpc/pseries: Cleanup on pseries_eeh_get_state()
authorGavin Shan <gwshan@linux.vnet.ibm.com>
Thu, 8 Oct 2015 03:58:56 +0000 (14:58 +1100)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 21 Oct 2015 09:42:14 +0000 (20:42 +1100)
This cleans up pseries_eeh_get_state(), no functional changes:

   * Return EEH_STATE_NOT_SUPPORT early when the 2nd RTAS output
     argument is zero to avoid nested if statements.
   * Skip clearing bits in the PE state represented by variable
     "result" to simplify the code.

Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/platforms/pseries/eeh_pseries.c

index 1ba55d0..ac3ffd9 100644 (file)
@@ -433,42 +433,34 @@ static int pseries_eeh_get_state(struct eeh_pe *pe, int *state)
                return ret;
 
        /* Parse the result out */
-       result = 0;
-       if (rets[1]) {
-               switch(rets[0]) {
-               case 0:
-                       result &= ~EEH_STATE_RESET_ACTIVE;
-                       result |= EEH_STATE_MMIO_ACTIVE;
-                       result |= EEH_STATE_DMA_ACTIVE;
-                       break;
-               case 1:
-                       result |= EEH_STATE_RESET_ACTIVE;
-                       result |= EEH_STATE_MMIO_ACTIVE;
-                       result |= EEH_STATE_DMA_ACTIVE;
-                       break;
-               case 2:
-                       result &= ~EEH_STATE_RESET_ACTIVE;
-                       result &= ~EEH_STATE_MMIO_ACTIVE;
-                       result &= ~EEH_STATE_DMA_ACTIVE;
-                       break;
-               case 4:
-                       result &= ~EEH_STATE_RESET_ACTIVE;
-                       result &= ~EEH_STATE_MMIO_ACTIVE;
-                       result &= ~EEH_STATE_DMA_ACTIVE;
-                       result |= EEH_STATE_MMIO_ENABLED;
-                       break;
-               case 5:
-                       if (rets[2]) {
-                               if (state) *state = rets[2];
-                               result = EEH_STATE_UNAVAILABLE;
-                       } else {
-                               result = EEH_STATE_NOT_SUPPORT;
-                       }
-                       break;
-               default:
+       if (!rets[1])
+               return EEH_STATE_NOT_SUPPORT;
+
+       switch(rets[0]) {
+       case 0:
+               result = EEH_STATE_MMIO_ACTIVE |
+                        EEH_STATE_DMA_ACTIVE;
+               break;
+       case 1:
+               result = EEH_STATE_RESET_ACTIVE |
+                        EEH_STATE_MMIO_ACTIVE  |
+                        EEH_STATE_DMA_ACTIVE;
+               break;
+       case 2:
+               result = 0;
+               break;
+       case 4:
+               result = EEH_STATE_MMIO_ENABLED;
+               break;
+       case 5:
+               if (rets[2]) {
+                       if (state) *state = rets[2];
+                       result = EEH_STATE_UNAVAILABLE;
+               } else {
                        result = EEH_STATE_NOT_SUPPORT;
                }
-       } else {
+               break;
+       default:
                result = EEH_STATE_NOT_SUPPORT;
        }