Skip to content

Commit

Permalink
PRD: Memory Port Failure analysis
Browse files Browse the repository at this point in the history
Change-Id: I3c031909fd8803f76c19144856ebfd8c00f753f7
RTC: 144082
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/37475
Reviewed-by: Benjamin J. Weisenbeck <bweisenb@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Caleb N. Palmer <cnpalmer@us.ibm.com>
Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/37603
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
  • Loading branch information
zane131 committed Mar 7, 2017
1 parent 71b79da commit 8501784
Show file tree
Hide file tree
Showing 4 changed files with 75 additions and 11 deletions.
40 changes: 40 additions & 0 deletions src/usr/diag/prdf/common/plat/mem/prdfP9Mca_common.C
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,46 @@ int32_t mcaUeAlgorithm( ExtensibleChip * i_chip,
}
PRDF_PLUGIN_DEFINE( p9_mca, mcaUeAlgorithm );

//##############################################################################
//
// MCACALFIR
//
//##############################################################################

/**
* @brief MCACALFIR[13] - Persistent RCD error, port failed.
* @param i_chip MCA chip.
* @param io_sc The step code data struct.
* @return SUCCESS
*/
int32_t MemPortFailure( ExtensibleChip * i_chip,
STEP_CODE_DATA_STRUCT & io_sc )
{
#define PRDF_FUNC "[p9_mca::MemPortFailure] "

if ( CHECK_STOP != io_sc.service_data->getPrimaryAttnType() )
{
// The port is dead mask off the entire port.

SCAN_COMM_REGISTER_CLASS * c = i_chip->getRegister("MCACALFIR_MASK_OR");
SCAN_COMM_REGISTER_CLASS * d = i_chip->getRegister("DDRPHYFIR_MASK_OR");
SCAN_COMM_REGISTER_CLASS * e = i_chip->getRegister("MCAECCFIR_MASK_OR");

c->setAllBits(); d->setAllBits(); e->setAllBits();

if ( SUCCESS != (c->Write() | d->Write() | e->Write()) )
{
PRDF_ERR( PRDF_FUNC "Write() failed: i_chip=0x%08x",
i_chip->getHuid() );
}
}

return SUCCESS; // nothing to return to rule code

#undef PRDF_FUNC
}
PRDF_PLUGIN_DEFINE( p9_mca, MemPortFailure );

//##############################################################################
//
// MCAECCFIR
Expand Down
4 changes: 2 additions & 2 deletions src/usr/diag/prdf/common/plat/p9/p9_mca.rule
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ rule rMCACALFIR
MCACALFIR & ~MCACALFIR_MASK & MCACALFIR_ACT0 & MCACALFIR_ACT1;
};

group gMCACALFIR filter singlebit, cs_root_cause( 13 )
group gMCACALFIR filter priority( 13 ), cs_root_cause( 13 )
{
/** MCACALFIR[0]
* A MBA recoverable error has occurred.
Expand Down Expand Up @@ -289,7 +289,7 @@ group gMCACALFIR filter singlebit, cs_root_cause( 13 )
/** MCACALFIR[13]
* Persistent RCD error, port failed
*/
(rMCACALFIR, bit(13)) ? all_dimm_H_self_L_th_1;
(rMCACALFIR, bit(13)) ? mem_port_failure;

/** MCACALFIR[14]
* RCD during periodic cal
Expand Down
19 changes: 10 additions & 9 deletions src/usr/diag/prdf/common/plat/p9/p9_mca_actions.rule
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,6 @@ actionclass all_dimm_H_th_1
threshold1;
};

/** Callout all connected DIMMs HIGH and self LOW on first occurence. */
actionclass all_dimm_H_self_L_th_1
{
callout(connected(TYPE_DIMM,0), MRU_HIGH);
callout(connected(TYPE_DIMM,1), MRU_HIGH);
calloutSelfLow;
threshold1;
};

/** Verify Chip Mark */
actionclass verify_chip_mark_0 { funccall("AnalyzeFetchMpe_0"); };
actionclass verify_chip_mark_1 { funccall("AnalyzeFetchMpe_1"); };
Expand All @@ -66,6 +57,16 @@ actionclass mainline_ue_handling
funccall("AnalyzeFetchUe");
};

/** Memory Port Failure */
actionclass mem_port_failure
{
callout(connected(TYPE_DIMM,0), MRU_HIGH); # DIMM 0 HIGH
callout(connected(TYPE_DIMM,1), MRU_HIGH); # DIMM 1 HIGH
calloutSelfLow; # Self LOW
threshold1; # Threshold 1
funccall("MemPortFailure"); # Mask off the entire port
};

/** Handle RCD parity error. */
actionclass rcd_parity_error
{
Expand Down
23 changes: 23 additions & 0 deletions src/usr/diag/prdf/common/plat/p9/p9_mca_regs.rule
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,18 @@
# Additional registers for mca, not defined in XML
###############################################################################

############################################################################
# P9 MCA target MCACALFIR
############################################################################

register MCACALFIR_MASK_OR
{
name "P9 MCA target MCACALFIR MASK OR";
scomaddr 0x07010905;
capture group never;
access write_only;
};

############################################################################
# P9 MCA target MCAECCFIR
############################################################################
Expand All @@ -39,6 +51,14 @@
access write_only;
};

register MCAECCFIR_MASK_OR
{
name "P9 MCA target MCAECCFIR MASK OR";
scomaddr 0x07010a05;
capture group never;
access write_only;
};

############################################################################
# P9 MCA target DDRPHYFIR
############################################################################
Expand All @@ -54,6 +74,7 @@
############################################################################
# P9 Hardware Mark Stores
############################################################################

register HW_MS0
{
name "P9 Hardware Mark Store rank 0";
Expand Down Expand Up @@ -113,6 +134,7 @@
############################################################################
# P9 Firmware Mark Stores
############################################################################

register FW_MS0
{
name "P9 Firmware Mark Store 0";
Expand Down Expand Up @@ -186,3 +208,4 @@
scomaddr 0x070F001E;
capture group PllFIRs;
};

0 comments on commit 8501784

Please sign in to comment.