Skip to content

Commit

Permalink
PRD: Add workaround for OMIDLFIR channel fails
Browse files Browse the repository at this point in the history
The OMIDLFIR can't be set up to report UNIT_CS attentions.
As such, as a workaround, the relevant channel fail attentions
will be set as recoverable bits.

Change-Id: I37d244d1bfbc10d1abc4217dcdbf97e05b875821
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/90691
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Benjamen G Tyner <ben.tyner@ibm.com>
Reviewed-by: Zane C Shelley <zshelle@us.ibm.com>
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/91321
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>
  • Loading branch information
cnpalmer authored and zane131 committed Feb 10, 2020
1 parent 39a6f14 commit da3c3ba
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 8 deletions.
10 changes: 6 additions & 4 deletions src/usr/diag/prdf/common/plat/axone/axone_omic.rule
Expand Up @@ -5,7 +5,7 @@
#
# OpenPOWER HostBoot Project
#
# Contributors Listed Below - COPYRIGHT 2018,2019
# Contributors Listed Below - COPYRIGHT 2018,2020
# [+] International Business Machines Corp.
#
#
Expand Down Expand Up @@ -196,8 +196,10 @@ rule rOMIC
};

group gOMIC attntype CHECK_STOP, RECOVERABLE, UNIT_CS, HOST_ATTN
filter singlebit
filter priority(2,0,1)
{
# We need to prioritize analysis to the OMIDLFIR here because of potential
# Channel Fail attentions in that FIR that will be reported as RECOVERABLE.
(rOMIC, bit(0)) ? analyzeIOOMIFIR;
(rOMIC, bit(1)) ? analyzeMCPPEFIR;
(rOMIC, bit(2)) ? analyzeOMIDLFIR;
Expand Down Expand Up @@ -359,8 +361,8 @@ rule rOMIDLFIR
};

group gOMIDLFIR
filter singlebit,
cs_root_cause
filter priority(0,20,40),
cs_root_cause(0,20,40)
{
/** OMIDLFIR[0]
* OMI-DL0 fatal error
Expand Down
8 changes: 7 additions & 1 deletion src/usr/diag/prdf/common/plat/axone/prdfOmicPlugins.C
Expand Up @@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
/* Contributors Listed Below - COPYRIGHT 2019 */
/* Contributors Listed Below - COPYRIGHT 2019,2020 */
/* [+] International Business Machines Corp. */
/* */
/* */
Expand Down Expand Up @@ -106,6 +106,12 @@ int32_t DlFatalError( ExtensibleChip * i_chip, STEP_CODE_DATA_STRUCT & io_sc,

do
{
// Note: The OMIDLFIR can't actually be set up to report UNIT_CS
// attentions, instead, as a workaround, the relevant channel fail
// bits will be set as recoverable bits and we will manually set
// the attention types to UNIT_CS in our handling of these errors.
io_sc.service_data->setPrimaryAttnType( UNIT_CS );

char reg[64];
sprintf( reg, "DL%d_ERROR_HOLD", i_dl );

Expand Down
14 changes: 11 additions & 3 deletions src/usr/diag/prdf/common/plat/mem/prdfMemUtils.C
Expand Up @@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
/* Contributors Listed Below - COPYRIGHT 2013,2019 */
/* Contributors Listed Below - COPYRIGHT 2013,2020 */
/* [+] International Business Machines Corp. */
/* */
/* */
Expand Down Expand Up @@ -1387,8 +1387,12 @@ bool __queryUcsOmic( ExtensibleChip * i_omic, ExtensibleChip * i_mcc,
uint8_t bitOff = omiPosRelOmic * 20;

// Check if there is a UNIT_CS for the relevant bits in the OMIDLFIR
// Note: The OMIDLFIR can't actually be set up to report UNIT_CS
// attentions, instead, as a workaround, the relevant channel fail
// bits will be set as recoverable bits and we will manually set
// the attention types to UNIT_CS in our handling of those errors.
if ( fir->IsBitSet(bitOff) && !mask->IsBitSet(bitOff) &&
act0->IsBitSet(bitOff) && act1->IsBitSet(bitOff) )
!act0->IsBitSet(bitOff) && act1->IsBitSet(bitOff) )
{
o_activeAttn = true;
}
Expand Down Expand Up @@ -1586,7 +1590,11 @@ bool __analyzeChnlFail<TYPE_OMI>( TargetHandle_t i_omi,
if ( __queryUcsOmic( omicChip, mccChip, i_omi ) )
{
// Analyze UNIT_CS on the OMIC chip
if ( SUCCESS == omicChip->Analyze(io_sc, UNIT_CS) )
// Note: The OMIDLFIR can't actually be set up to report UNIT_CS
// attentions, instead, as a workaround, the relevant channel fail
// bits will be set as recoverable bits and we will manually set
// the attention types to UNIT_CS in our handling of those errors.
if ( SUCCESS == omicChip->Analyze(io_sc, RECOVERABLE) )
{
o_analyzed = true;
break;
Expand Down

0 comments on commit da3c3ba

Please sign in to comment.