summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorZane Shelley <zshelle@us.ibm.com>2016-09-28 13:05:16 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2016-09-30 17:06:32 -0400
commit26ee3a491de3ae1d1c543931fa0d1b73dccd0f49 (patch)
tree6ea9e2a659b357ccb5ba79c8e2ff5d3c964d1b95 /src
parent32cc08c59418cd007cdd8f0096aa9d85853e9ae0 (diff)
downloadtalos-hostboot-26ee3a491de3ae1d1c543931fa0d1b73dccd0f49.tar.gz
talos-hostboot-26ee3a491de3ae1d1c543931fa0d1b73dccd0f49.zip
PRD: add support for memory AUE attentions
Change-Id: Ida45e2303aeadb0abbe0a3aadc59899d9298109b RTC: 161724 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/30427 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Caleb N. Palmer <cnpalmer@us.ibm.com> Reviewed-by: Benjamin J. Weisenbeck <bweisenb@us.ibm.com> Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com> Squashed: I547272b9c11f5bd213a605a99629d8f7f721bdfa Squashed: I2e97a17945c258fe455a60afee1a48d71b22d63b Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/30562 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src')
-rwxr-xr-xsrc/usr/diag/prdf/common/framework/resolution/iipResolution.C2
-rw-r--r--src/usr/diag/prdf/common/plat/p9/p9_mca.rule8
-rw-r--r--src/usr/diag/prdf/common/plat/p9/p9_mca_actions.rule18
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/prdfTargetServices.C20
-rw-r--r--src/usr/diag/prdf/common/rule/prdrCompile.C1
-rw-r--r--src/usr/diag/prdf/plat/prdfPlatServices.C3
6 files changed, 44 insertions, 8 deletions
diff --git a/src/usr/diag/prdf/common/framework/resolution/iipResolution.C b/src/usr/diag/prdf/common/framework/resolution/iipResolution.C
index 82da0b518..483573ffd 100755
--- a/src/usr/diag/prdf/common/framework/resolution/iipResolution.C
+++ b/src/usr/diag/prdf/common/framework/resolution/iipResolution.C
@@ -252,7 +252,7 @@ int32_t CalloutConnectedGard::Resolve( STEP_CODE_DATA_STRUCT & io_serviceData )
}
else
{
- PRDF_ERR( "[CalloutConnected::Resolve] No connected chip found:"
+ PRDF_ERR( "[CalloutConnectedGard::Resolve] No connected chip found:"
" sourceTrgt=0x%08x, iv_peerConnType=0x%x",
getHuid(sourceTrgt), iv_peerConnType );
diff --git a/src/usr/diag/prdf/common/plat/p9/p9_mca.rule b/src/usr/diag/prdf/common/plat/p9/p9_mca.rule
index 042c7cf34..b23c5ae33 100644
--- a/src/usr/diag/prdf/common/plat/p9/p9_mca.rule
+++ b/src/usr/diag/prdf/common/plat/p9/p9_mca.rule
@@ -357,7 +357,7 @@ group gMCAECCFIR filter singlebit
/** MCAECCFIR[13]
* Mainline read AUE
*/
- (rMCAECCFIR, bit(13)) ? mainline_ce_ue_handling;
+ (rMCAECCFIR, bit(13)) ? all_dimm_H_th_1;
/** MCAECCFIR[14]
* Mainline read UE
@@ -372,7 +372,7 @@ group gMCAECCFIR filter singlebit
/** MCAECCFIR[16]
* Mainline read IAUE
*/
- (rMCAECCFIR, bit(16)) ? defaultMaskedError;
+ (rMCAECCFIR, bit(16)) ? all_dimm_H_th_1;
/** MCAECCFIR[17]
* Mainline read IUE
@@ -422,7 +422,7 @@ group gMCAECCFIR filter singlebit
/** MCAECCFIR[33]
* Maintenance AUE
*/
- (rMCAECCFIR, bit(33)) ? defaultMaskedError;
+ (rMCAECCFIR, bit(33)) ? all_dimm_H_th_1;
/** MCAECCFIR[34]
* Maintenance UE
@@ -437,7 +437,7 @@ group gMCAECCFIR filter singlebit
/** MCAECCFIR[36]
* Maintenance IAUE
*/
- (rMCAECCFIR, bit(36)) ? defaultMaskedError;
+ (rMCAECCFIR, bit(36)) ? all_dimm_H_th_1;
/** MCAECCFIR[37]
* Maintenance IUE
diff --git a/src/usr/diag/prdf/common/plat/p9/p9_mca_actions.rule b/src/usr/diag/prdf/common/plat/p9/p9_mca_actions.rule
index 326b19775..85fb62742 100644
--- a/src/usr/diag/prdf/common/plat/p9/p9_mca_actions.rule
+++ b/src/usr/diag/prdf/common/plat/p9/p9_mca_actions.rule
@@ -22,6 +22,24 @@
# permissions and limitations under the License.
#
# IBM_PROLOG_END_TAG
+
+/** Callout all connected DIMMs HIGH on first occurence. */
+actionclass all_dimm_H_th_1
+{
+ callout(connected(TYPE_DIMM,0), MRU_HIGH);
+ callout(connected(TYPE_DIMM,1), MRU_HIGH);
+ 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...TBD */
actionclass verify_chip_mark
{
diff --git a/src/usr/diag/prdf/common/plat/prdfTargetServices.C b/src/usr/diag/prdf/common/plat/prdfTargetServices.C
index 9f92b0057..07e0c09fa 100755
--- a/src/usr/diag/prdf/common/plat/prdfTargetServices.C
+++ b/src/usr/diag/prdf/common/plat/prdfTargetServices.C
@@ -431,7 +431,10 @@ struct conn_t
case TYPE_MCBIST: order = 14; break;
case TYPE_MCS: order = 15; break;
case TYPE_MCA: order = 16; break;
- case TYPE_DIMM: order = 17; break;
+ case TYPE_MEMBUF: order = 17; break;
+ case TYPE_L4: order = 18; break;
+ case TYPE_MBA: order = 19; break;
+ case TYPE_DIMM: order = 20; break;
default: ;
}
@@ -817,6 +820,17 @@ TargetHandle_t getConnectedChild( TargetHandle_t i_target, TYPE i_connType,
[&](const TargetHandle_t & t)
{ return trgtPos == getTargetPosition(t); } );
}
+ else if ( TYPE_MCA == trgtType && TYPE_DIMM == i_connType )
+ {
+ // i_connPos is the DIMM select (0-1)
+ itr = std::find_if( list.begin(), list.end(),
+ [&](const TargetHandle_t & t)
+ {
+ uint32_t dimmPos = getTargetPosition(t);
+ return (trgtPos == (dimmPos / MAX_DIMM_PER_PORT)) &&
+ (i_connPos == (dimmPos % MAX_DIMM_PER_PORT));
+ } );
+ }
else
{
// default, i_connPos should match the unit position within the chip
@@ -1121,6 +1135,10 @@ uint32_t getTargetPosition( TARGETING::TargetHandle_t i_target )
break;
}
+ case CLASS_LOGICAL_CARD: // DIMMs
+ o_pos = i_target->getAttr<ATTR_FAPI_POS>();
+ break;
+
default:
PRDF_ERR( PRDF_FUNC "Unsupported class: %d", l_class );
}
diff --git a/src/usr/diag/prdf/common/rule/prdrCompile.C b/src/usr/diag/prdf/common/rule/prdrCompile.C
index f6c89e925..77ed17d70 100644
--- a/src/usr/diag/prdf/common/rule/prdrCompile.C
+++ b/src/usr/diag/prdf/common/rule/prdrCompile.C
@@ -449,6 +449,7 @@ uint32_t prdrActionArgMap(const std::string & i_arg)
g_ActionArgMap["TYPE_MEMBUF"] = TARGETING::TYPE_MEMBUF;
g_ActionArgMap["TYPE_L4"] = TARGETING::TYPE_L4;
g_ActionArgMap["TYPE_MBA"] = TARGETING::TYPE_MBA;
+ g_ActionArgMap["TYPE_DIMM"] = TARGETING::TYPE_DIMM;
g_ActionArgMap["TYPE_NA"] = TARGETING::TYPE_NA;
// Initialize symbolic callouts.
diff --git a/src/usr/diag/prdf/plat/prdfPlatServices.C b/src/usr/diag/prdf/plat/prdfPlatServices.C
index 313c62f38..4e842fe35 100644
--- a/src/usr/diag/prdf/plat/prdfPlatServices.C
+++ b/src/usr/diag/prdf/plat/prdfPlatServices.C
@@ -305,8 +305,7 @@ uint32_t startBgScrub<TYPE_MCA>( TargetHandle_t i_trgt, const MemRank & i_rank )
TargetHandle_t mcbTrgt = getConnectedParent( i_trgt, TYPE_MCBIST );
PRDF_ASSERT( nullptr != mcbTrgt );
- uint32_t port = getTargetPosition( i_trgt );
- PRDF_ASSERT( port < MAX_PORT_PER_MCBIST );
+ uint32_t port = getTargetPosition(i_trgt) % MAX_MCA_PER_MCBIST;
fapi2::Target<fapi2::TARGET_TYPE_MCBIST> fapiTrgt ( mcbTrgt );
OpenPOWER on IntegriCloud