For PHB complete reset case, EEH_RESET_DEACTIVATE followed by
EEH_RESET_{HOT,FUNDAMENTAL} requests are issued by EEH core.
All of them are translated to raising complete reset wrongly
and we did complete reset for twice unnecessarily for each
transaction.

The patch fixes above issue by translating the request properly.

Signed-off-by: Gavin Shan <gws...@linux.vnet.ibm.com>
---
 arch/powerpc/platforms/powernv/eeh-ioda.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/platforms/powernv/eeh-ioda.c 
b/arch/powerpc/platforms/powernv/eeh-ioda.c
index 3b82384..d02a696 100644
--- a/arch/powerpc/platforms/powernv/eeh-ioda.c
+++ b/arch/powerpc/platforms/powernv/eeh-ioda.c
@@ -697,8 +697,13 @@ static int ioda_eeh_reset(struct eeh_pe *pe, int option)
         * reset. The side effect is that EEH core has to clear the frozen
         * state explicitly after BAR restore.
         */
-       if (pe->type & EEH_PE_PHB)
-               return ioda_eeh_phb_reset(hose, EEH_RESET_COMPLETE);
+       if (pe->type & EEH_PE_PHB) {
+               if (option == EEH_RESET_HOT ||
+                   option == EEH_RESET_FUNDAMENTAL)
+                       return ioda_eeh_phb_reset(hose, EEH_RESET_COMPLETE);
+
+               return ioda_eeh_phb_reset(hose, option);
+       }
 
        /*
         * The frozen PE might be caused by PAPR error injection
-- 
1.8.3.2

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

Reply via email to