Skip to content

Commit

Permalink
PM: Fixed handling of CME LFIR mask during PM complex reset.
Browse files Browse the repository at this point in the history
Commit fixes the handling of CME LFIR mask. In istep 21.1, HB does
a PM complex reset. During this operation, CME LFIR mask is saved
in an attribute and all errors are masked. When HBRT takes over,
it starts by doing a complex reset once again. This back to back
reset without an init in between causes CME LFIR Mask to get lost.
Commit addresses the issue by simply avoiding the saving of FIR
mask during the first reset initiated by HBRT.

Key_Cronus_Test=PM_REGRESS

Change-Id: I55c289b76fc5b3416bca792fc9e1fbf8dba2309e
CQ: SW448193
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/67835
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: HWSV CI <hwsv-ci+hostboot@us.ibm.com>
Tested-by: PPE CI <ppe-ci+hostboot@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Tested-by: Cronus HW CI <cronushw-ci+hostboot@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/67841
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
  • Loading branch information
premsjha authored and dcrowell77 committed Nov 1, 2018
1 parent 46edcd4 commit ad52fe4
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 11 deletions.
22 changes: 12 additions & 10 deletions src/import/chips/p9/procedures/hwp/pm/p9_pm_cme_firinit.C
Original file line number Diff line number Diff line change
Expand Up @@ -241,28 +241,30 @@ fapi2::ReturnCode pm_cme_fir_reset(

p9pmFIR::PMFir <p9pmFIR::FIRTYPE_CME_LFIR> l_cmeFir(l_ex_chplt);

FAPI_TRY(l_cmeFir.get(p9pmFIR::REG_FIRMASK),
"ERROR: Failed to get the CME FIR MASK value");

/* Only save off the FIR masks if they have been initialized */
if (firinit_done_flag
== fapi2::ENUM_ATTR_PM_FIRINIT_DONE_ONCE_FLAG_FIRS_INITED)
if ( firinit_done_flag != fapi2::ENUM_ATTR_PM_FIRINIT_DONE_ONCE_FLAG_FIRS_RESET_IN_HB )
{
FAPI_TRY(l_cmeFir.get(p9pmFIR::REG_FIRMASK),
"ERROR: Failed to get the PBA FIR MASK value");

/* Fetch the CME FIR MASK; Save it to HWP attribute; clear it */
FAPI_TRY(l_cmeFir.saveMask(),
"ERROR: Failed to save CME FIR Mask to the attribute");
}

FAPI_TRY(l_cmeFir.setAllRegBits(p9pmFIR::REG_FIRMASK),
"ERROR: Faled to set the CME FIR MASK");
FAPI_TRY(l_cmeFir.setAllRegBits(p9pmFIR::REG_FIRMASK),
"ERROR: Faled to set the CME FIR MASK");

FAPI_TRY(l_cmeFir.put(),
"ERROR:Failed to write to the CME FIR MASK");
FAPI_TRY(l_cmeFir.put(),
"ERROR:Failed to write to the CME FIR MASK");
}
}
}

if (firinit_done_flag == fapi2::ENUM_ATTR_PM_FIRINIT_DONE_ONCE_FLAG_NO_INIT)
{
firinit_done_flag = fapi2::ENUM_ATTR_PM_FIRINIT_DONE_ONCE_FLAG_FIRS_RESET_IN_HB;
FAPI_TRY(FAPI_ATTR_SET(fapi2::ATTR_PM_FIRINIT_DONE_ONCE_FLAG, i_target, firinit_done_flag ),
"ERROR: Failed to set attribute PM_FIRINIT_DONE_ONCE_FLAG to RESET_IN_HB in pm_cme_fir_reset");
}

fapi_try_exit:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@
<valueType>uint8</valueType>
<initToZero/>
<writeable/>
<enum>NO_INIT=0, FIRS_INITED=1, FIRS_INITED_IN_RESET=2</enum>
<enum>NO_INIT=0, FIRS_INITED=1, FIRS_INITED_IN_RESET=2, FIRS_RESET_IN_HB = 3</enum>
</attribute>
<!-- ********************************************************************* -->
<attribute>
Expand Down

0 comments on commit ad52fe4

Please sign in to comment.