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 <gws...@linux.vnet.ibm.com>
---
 arch/powerpc/platforms/pseries/eeh_pseries.c | 60 ++++++++++++----------------
 1 file changed, 26 insertions(+), 34 deletions(-)

diff --git a/arch/powerpc/platforms/pseries/eeh_pseries.c 
b/arch/powerpc/platforms/pseries/eeh_pseries.c
index 1ba55d0..ac3ffd9 100644
--- a/arch/powerpc/platforms/pseries/eeh_pseries.c
+++ b/arch/powerpc/platforms/pseries/eeh_pseries.c
@@ -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;
        }
 
-- 
2.1.0

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to