summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Still <stillgs@us.ibm.com>2018-07-18 07:57:36 -0500
committerChristian R. Geddes <crgeddes@us.ibm.com>2018-08-01 10:30:08 -0500
commit931118120f2bb5c0e38271582b5b322ed830f661 (patch)
tree0703dcc95c3896b3a8ab26210b84b2814d998cc1
parentc8f0bbe2a227de5bc26d6aa83dae77e69692e9ec (diff)
downloadtalos-hostboot-931118120f2bb5c0e38271582b5b322ed830f661.tar.gz
talos-hostboot-931118120f2bb5c0e38271582b5b322ed830f661.zip
PM: Move PBAFIR checkstops to recoverable attentions
- As the PBA is recovered through PM complex resets and bad data is dealt with in the OCC complex, moving these to the same settings as was implemented in P8. - Found in cable pull testing where unexpected checkstops occured. - Added setting of full default mask in the init phase for building the real mask. This is necessary for the case that the init phase is run before the reset phase. Change-Id: I9891ae333a5cb2024aa88f031d8c496091e57bed CQ: SW438231 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/62744 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: RANGANATHPRASAD G. BRAHMASAMUDRA <prasadbgr@in.ibm.com> Reviewed-by: AMIT J. TENDOLKAR <amit.tendolkar@in.ibm.com> Reviewed-by: Joseph J. McGill <jmcgill@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/62759 Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com>
-rw-r--r--src/import/chips/p9/procedures/hwp/pm/p9_pm_pba_firinit.C102
1 files changed, 53 insertions, 49 deletions
diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_pm_pba_firinit.C b/src/import/chips/p9/procedures/hwp/pm/p9_pm_pba_firinit.C
index ff962bc15..c577df609 100644
--- a/src/import/chips/p9/procedures/hwp/pm/p9_pm_pba_firinit.C
+++ b/src/import/chips/p9/procedures/hwp/pm/p9_pm_pba_firinit.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2016,2017 */
+/* Contributors Listed Below - COPYRIGHT 2016,2018 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -200,10 +200,12 @@ fapi2::ReturnCode pm_pba_fir_init(
"ERROR: Failed to clear PBA FIR");
FAPI_TRY(l_pbaFir.clearAllRegBits(p9pmFIR::REG_ACTION1),
"ERROR: Failed to clear PBA FIR");
+ FAPI_TRY(l_pbaFir.setAllRegBits(p9pmFIR::REG_FIRMASK),
+ "ERROR: Faled to set the PBA FIR MASK");
/* Set the action and mask for the PBA LFIR bits */
- FAPI_TRY(l_pbaFir.setCheckStop(PBAFIR_OCI_APAR_ERR),
- FIR_CHECKSTOP_ERROR);
+ FAPI_TRY(l_pbaFir.setRecvAttn(PBAFIR_OCI_APAR_ERR),
+ FIR_REC_ATTN_ERROR);
FAPI_TRY(l_pbaFir.mask(PBAFIR_PB_RDADRERR_FW),
FIR_MASK_ERROR);
FAPI_TRY(l_pbaFir.mask(PBAFIR_PB_RDDATATO_FW),
@@ -214,74 +216,74 @@ fapi2::ReturnCode pm_pba_fir_init(
FIR_REC_ATTN_ERROR);
FAPI_TRY(l_pbaFir.setRecvAttn(PBAFIR_PB_CE_FW),
FIR_REC_ATTN_ERROR);
- FAPI_TRY(l_pbaFir.setCheckStop(PBAFIR_OCI_SLAVE_INIT),
- FIR_CHECKSTOP_ERROR);
- FAPI_TRY(l_pbaFir.setCheckStop(PBAFIR_OCI_WRPAR_ERR),
- FIR_CHECKSTOP_ERROR);
+ FAPI_TRY(l_pbaFir.setRecvAttn(PBAFIR_OCI_SLAVE_INIT),
+ FIR_REC_ATTN_ERROR);
+ FAPI_TRY(l_pbaFir.setRecvAttn(PBAFIR_OCI_WRPAR_ERR),
+ FIR_REC_ATTN_ERROR);
FAPI_TRY(l_pbaFir.mask(PBAFIR_SPARE),
FIR_MASK_ERROR);
- FAPI_TRY(l_pbaFir.setCheckStop(PBAFIR_PB_UNEXPCRESP),
- FIR_CHECKSTOP_ERROR);
- FAPI_TRY(l_pbaFir.setCheckStop(PBAFIR_PB_UNEXPDATA),
- FIR_CHECKSTOP_ERROR);
- FAPI_TRY(l_pbaFir.setCheckStop(PBAFIR_PB_PARITY_ERR),
- FIR_CHECKSTOP_ERROR);
- FAPI_TRY(l_pbaFir.setCheckStop(PBAFIR_PB_WRADRERR_FW),
- FIR_CHECKSTOP_ERROR);
- FAPI_TRY(l_pbaFir.setCheckStop(PBAFIR_PB_BADCRESP),
- FIR_CHECKSTOP_ERROR);
+ FAPI_TRY(l_pbaFir.setRecvAttn(PBAFIR_PB_UNEXPCRESP),
+ FIR_REC_ATTN_ERROR);
+ FAPI_TRY(l_pbaFir.setRecvAttn(PBAFIR_PB_UNEXPDATA),
+ FIR_REC_ATTN_ERROR);
+ FAPI_TRY(l_pbaFir.setRecvAttn(PBAFIR_PB_PARITY_ERR),
+ FIR_REC_ATTN_ERROR);
+ FAPI_TRY(l_pbaFir.setRecvAttn(PBAFIR_PB_WRADRERR_FW),
+ FIR_REC_ATTN_ERROR);
+ FAPI_TRY(l_pbaFir.setRecvAttn(PBAFIR_PB_BADCRESP),
+ FIR_REC_ATTN_ERROR);
FAPI_TRY(l_pbaFir.mask(PBAFIR_PB_ACKDEAD_FW_RD),
FIR_MASK_ERROR);
FAPI_TRY(l_pbaFir.setRecvAttn(PBAFIR_PB_CRESPTO),
FIR_REC_ATTN_ERROR);
- FAPI_TRY(l_pbaFir.setCheckStop(PBAFIR_BCUE_SETUP_ERR),
- FIR_CHECKSTOP_ERROR);
+ FAPI_TRY(l_pbaFir.mask(PBAFIR_BCUE_SETUP_ERR),
+ FIR_MASK_ERROR);
FAPI_TRY(l_pbaFir.mask(PBAFIR_BCUE_PB_ACK_DEAD),
FIR_MASK_ERROR);
- FAPI_TRY(l_pbaFir.setCheckStop(PBAFIR_BCUE_PB_ADRERR),
- FIR_CHECKSTOP_ERROR);
- FAPI_TRY(l_pbaFir.setCheckStop(PBAFIR_BCUE_OCI_DATERR),
- FIR_CHECKSTOP_ERROR);
- FAPI_TRY(l_pbaFir.setCheckStop(PBAFIR_BCDE_SETUP_ERR),
- FIR_CHECKSTOP_ERROR);
+ FAPI_TRY(l_pbaFir.mask(PBAFIR_BCUE_PB_ADRERR),
+ FIR_MASK_ERROR);
+ FAPI_TRY(l_pbaFir.mask(PBAFIR_BCUE_OCI_DATERR),
+ FIR_MASK_ERROR);
+ FAPI_TRY(l_pbaFir.mask(PBAFIR_BCDE_SETUP_ERR),
+ FIR_MASK_ERROR);
FAPI_TRY(l_pbaFir.mask(PBAFIR_BCDE_PB_ACK_DEAD),
FIR_MASK_ERROR);
- FAPI_TRY(l_pbaFir.setCheckStop(PBAFIR_BCDE_PB_ADRERR),
- FIR_CHECKSTOP_ERROR);
- FAPI_TRY(l_pbaFir.setCheckStop(PBAFIR_BCDE_RDDATATO_ERR),
- FIR_CHECKSTOP_ERROR);
+ FAPI_TRY(l_pbaFir.mask(PBAFIR_BCDE_PB_ADRERR),
+ FIR_MASK_ERROR);
+ FAPI_TRY(l_pbaFir.mask(PBAFIR_BCDE_RDDATATO_ERR),
+ FIR_MASK_ERROR);
FAPI_TRY(l_pbaFir.mask(PBAFIR_BCDE_SUE_ERR),
FIR_MASK_ERROR);
- FAPI_TRY(l_pbaFir.setRecvAttn(PBAFIR_BCDE_UE_ERR),
+ FAPI_TRY(l_pbaFir.mask(PBAFIR_BCDE_UE_ERR),
+ FIR_MASK_ERROR);
+ FAPI_TRY(l_pbaFir.mask(PBAFIR_BCDE_CE),
+ FIR_MASK_ERROR);
+ FAPI_TRY(l_pbaFir.mask(PBAFIR_BCDE_OCI_DATERR),
+ FIR_MASK_ERROR);
+ FAPI_TRY(l_pbaFir.setRecvAttn(PBAFIR_INTERNAL_ERR),
FIR_REC_ATTN_ERROR);
- FAPI_TRY(l_pbaFir.setRecvAttn(PBAFIR_BCDE_CE),
+ FAPI_TRY(l_pbaFir.setRecvAttn(PBAFIR_ILLEGAL_CACHE_OP),
FIR_REC_ATTN_ERROR);
- FAPI_TRY(l_pbaFir.setCheckStop(PBAFIR_BCDE_OCI_DATERR),
- FIR_CHECKSTOP_ERROR);
- FAPI_TRY(l_pbaFir.setCheckStop(PBAFIR_INTERNAL_ERR),
- FIR_CHECKSTOP_ERROR);
- FAPI_TRY(l_pbaFir.setCheckStop(PBAFIR_ILLEGAL_CACHE_OP),
- FIR_CHECKSTOP_ERROR);
- FAPI_TRY(l_pbaFir.setCheckStop(PBAFIR_OCI_BAD_REG_ADDR),
- FIR_CHECKSTOP_ERROR);
- FAPI_TRY(l_pbaFir.setCheckStop(PBAFIR_AXPUSH_WRERR),
- FIR_CHECKSTOP_ERROR);
+ FAPI_TRY(l_pbaFir.setRecvAttn(PBAFIR_OCI_BAD_REG_ADDR),
+ FIR_REC_ATTN_ERROR);
+ FAPI_TRY(l_pbaFir.mask(PBAFIR_AXPUSH_WRERR),
+ FIR_MASK_ERROR);
FAPI_TRY(l_pbaFir.mask(PBAFIR_AXRCV_DLO_ERR),
- FIR_CHECKSTOP_ERROR);
+ FIR_MASK_ERROR);
FAPI_TRY(l_pbaFir.mask(PBAFIR_AXRCV_DLO_TO),
FIR_MASK_ERROR);
FAPI_TRY(l_pbaFir.mask(PBAFIR_AXRCV_RSVDATA_TO),
FIR_MASK_ERROR);
FAPI_TRY(l_pbaFir.mask(PBAFIR_AXFLOW_ERR),
- FIR_CHECKSTOP_ERROR);
- FAPI_TRY(l_pbaFir.setRecvAttn(PBAFIR_AXSND_DHI_RTYTO),
- FIR_REC_ATTN_ERROR);
- FAPI_TRY(l_pbaFir.setRecvAttn(PBAFIR_AXSND_DLO_RTYTO),
- FIR_REC_ATTN_ERROR);
+ FIR_MASK_ERROR);
+ FAPI_TRY(l_pbaFir.mask(PBAFIR_AXSND_DHI_RTYTO),
+ FIR_MASK_ERROR);
+ FAPI_TRY(l_pbaFir.mask(PBAFIR_AXSND_DLO_RTYTO),
+ FIR_MASK_ERROR);
FAPI_TRY(l_pbaFir.mask(PBAFIR_AXSND_RSVTO),
FIR_MASK_ERROR);
- FAPI_TRY(l_pbaFir.setCheckStop(PBAFIR_AXSND_RSVERR),
- FIR_CHECKSTOP_ERROR);
+ FAPI_TRY(l_pbaFir.mask(PBAFIR_AXSND_RSVERR),
+ FIR_MASK_ERROR);
FAPI_TRY(l_pbaFir.mask(PBAFIR_PB_ACKDEAD_FW_WR),
FIR_MASK_ERROR);
FAPI_TRY(l_pbaFir.mask(PBAFIR_RESERVED_41),
@@ -299,6 +301,8 @@ fapi2::ReturnCode pm_pba_fir_init(
i_target, firinit_done_flag),
"ERROR: Failed to fetch the entry status of FIRINIT");
+ FAPI_DBG("firinit_done_flag for PBA = %d", firinit_done_flag);
+
if (firinit_done_flag)
{
FAPI_TRY(l_pbaFir.restoreSavedMask(),
OpenPOWER on IntegriCloud