Skip to content

Commit

Permalink
PM: Move PBAFIR checkstops to recoverable attentions
Browse files Browse the repository at this point in the history
- 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>
  • Loading branch information
stillgs authored and crgeddes committed Aug 1, 2018
1 parent c8f0bbe commit 9311181
Showing 1 changed file with 53 additions and 49 deletions.
102 changes: 53 additions & 49 deletions src/import/chips/p9/procedures/hwp/pm/p9_pm_pba_firinit.C
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
/* Contributors Listed Below - COPYRIGHT 2016,2017 */
/* Contributors Listed Below - COPYRIGHT 2016,2018 */
/* [+] International Business Machines Corp. */
/* */
/* */
Expand Down Expand Up @@ -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),
Expand All @@ -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),
Expand All @@ -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(),
Expand Down

0 comments on commit 9311181

Please sign in to comment.