diff options
author | Greg Still <stillgs@us.ibm.com> | 2018-07-18 07:57:36 -0500 |
---|---|---|
committer | Christian R. Geddes <crgeddes@us.ibm.com> | 2018-08-01 10:30:08 -0500 |
commit | 931118120f2bb5c0e38271582b5b322ed830f661 (patch) | |
tree | 0703dcc95c3896b3a8ab26210b84b2814d998cc1 | |
parent | c8f0bbe2a227de5bc26d6aa83dae77e69692e9ec (diff) | |
download | blackbird-hostboot-931118120f2bb5c0e38271582b5b322ed830f661.tar.gz blackbird-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.C | 102 |
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(), |