powerpc/eeh: fix powernv_eeh_wait_state delay logic
authorWei Yang <weiyang@linux.vnet.ibm.com>
Mon, 27 Apr 2015 01:25:11 +0000 (09:25 +0800)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 13 May 2015 04:00:07 +0000 (14:00 +1000)
As the comment indicates, powernv_eeh_get_state() will inform EEH core to
delay 1 second. This means the delay doesn't happen when
powernv_eeh_get_state() returns.

This patch moves the delay subtraction just before msleep(), which is the
same logic in pseries_eeh_wait_state().

Signed-off-by: Wei Yang <weiyang@linux.vnet.ibm.com>
Acked-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/platforms/powernv/eeh-powernv.c

index d0254710595d476224405f96225e4aa2f2c3973e..622f08cf54b60d33e2794ca461ae35c3922b8404 100644 (file)
@@ -1000,13 +1000,13 @@ static int pnv_eeh_wait_state(struct eeh_pe *pe, int max_wait)
                if (ret != EEH_STATE_UNAVAILABLE)
                        return ret;
 
-               max_wait -= mwait;
                if (max_wait <= 0) {
                        pr_warn("%s: Timeout getting PE#%x's state (%d)\n",
                                __func__, pe->addr, max_wait);
                        return EEH_STATE_NOT_SUPPORT;
                }
 
+               max_wait -= mwait;
                msleep(mwait);
        }