summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Weisenbeck <bweisenb@us.ibm.com>2018-07-20 12:57:37 -0500
committerZane C. Shelley <zshelle@us.ibm.com>2018-07-26 21:13:24 -0500
commit96e03100181831f7282975ec5406d2fb83b4b001 (patch)
treea359af1cc616f17798349a8e1659b1de262275e7
parentf1ef5d3692e074c5157d40834f5bb40d042a5a9c (diff)
downloadtalos-hostboot-96e03100181831f7282975ec5406d2fb83b4b001.tar.gz
talos-hostboot-96e03100181831f7282975ec5406d2fb83b4b001.zip
PRD: Check for neighbor core checkstop in pre-analysis plugin
Change-Id: I7a9df84ade674c14d54ba7ed774ae857b8ce659a CQ: SW434847 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/63047 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Brian J. Stegmiller <bjs@us.ibm.com> Reviewed-by: Caleb N. Palmer <cnpalmer@us.ibm.com> Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com> Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/63386 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>
-rw-r--r--src/usr/diag/prdf/common/plat/p9/p9_ec_actions.rule20
-rw-r--r--src/usr/diag/prdf/common/plat/p9/prdfP9Ec.C41
2 files changed, 28 insertions, 33 deletions
diff --git a/src/usr/diag/prdf/common/plat/p9/p9_ec_actions.rule b/src/usr/diag/prdf/common/plat/p9/p9_ec_actions.rule
index 8000b84c3..dc58acaf1 100644
--- a/src/usr/diag/prdf/common/plat/p9/p9_ec_actions.rule
+++ b/src/usr/diag/prdf/common/plat/p9/p9_ec_actions.rule
@@ -32,26 +32,8 @@ actionclass self_level2_th_5perHour
###############################################################################
# Core checkstop action classes
###############################################################################
-actionclass analyzeThisCore
+actionclass analyzeCOREFIR
{
funccall("CheckCoreCheckstop");
analyze(gCOREFIR);
};
-
-actionclass returnFailure
-{
- funccall("ReturnFailure");
-};
-
-# Core checkstop is only supported on PHYP systems. PHYP only supports
-# fused-cores. When a normal core checkstops, its fused-core neighbor will
-# checkstop along with it. Both cores will end up reporting core checkstop
-# attentions. This actionclass checks if this core's fused-core neighbor has the
-# real Core checkstop that we should be analyzing. If so, we will return a
-# failing RC so that the analysis will continue to the next chip at attention
-actionclass analyzeCOREFIR
-{
- try( funccall("neighborCoreCS"), analyzeThisCore );
- try( funccall("notNeighborCoreCS"), returnFailure );
-};
-
diff --git a/src/usr/diag/prdf/common/plat/p9/prdfP9Ec.C b/src/usr/diag/prdf/common/plat/p9/prdfP9Ec.C
index 4888bfdb2..66e3008ba 100644
--- a/src/usr/diag/prdf/common/plat/p9/prdfP9Ec.C
+++ b/src/usr/diag/prdf/common/plat/p9/prdfP9Ec.C
@@ -220,15 +220,35 @@ bool neighborHasRealCoreCS( ExtensibleChip * i_chip )
return neighborHasRealCs;
}
-int32_t neighborCoreCS( ExtensibleChip * i_chip )
-{
- return neighborHasRealCoreCS(i_chip) ? SUCCESS : FAIL;
-} PRDF_PLUGIN_DEFINE(p9_ec, neighborCoreCS);
-int32_t notNeighborCoreCS( ExtensibleChip * i_chip )
+/*
+ Core checkstop is only supported on PHYP systems. PHYP only supports
+ fused-cores. When a normal core checkstops, its fused-core neighbor will
+ checkstop along with it. Both cores will end up reporting core checkstop
+ attentions. This plugin checks if this core's fused-core neighbor has the
+ original core checkstop that we should be analyzing.
+*/
+int32_t PreAnalysis( ExtensibleChip * i_chip, STEP_CODE_DATA_STRUCT & io_sc,
+ bool & o_analyzed )
{
- return neighborHasRealCoreCS(i_chip) ? FAIL : SUCCESS;
-} PRDF_PLUGIN_DEFINE(p9_ec, notNeighborCoreCS);
+ o_analyzed = false;
+
+ if (neighborHasRealCoreCS( i_chip ))
+ {
+ // Get neighbor core
+ ExtensibleChip * n_chip = getNeighborCore( i_chip );
+ if (n_chip != nullptr)
+ {
+ if ( SUCCESS == n_chip->Analyze(io_sc,
+ io_sc.service_data->getSecondaryAttnType()) )
+ {
+ o_analyzed = true;
+ }
+ }
+ }
+
+ return SUCCESS;
+} PRDF_PLUGIN_DEFINE(p9_ec, PreAnalysis);
void checkCoreRePresent( ExtensibleChip * i_chip,
@@ -381,12 +401,5 @@ int32_t CheckCoreCheckstop( ExtensibleChip * i_chip,
#undef PRDF_FUNC
} PRDF_PLUGIN_DEFINE(p9_ec, CheckCoreCheckstop);
-int32_t ReturnFailure( ExtensibleChip * i_chip )
-{
- PRDF_TRAC("[EC::ReturnFailure] return failure so that we can analyze "
- "neighbor core");
- return PRD_SCAN_COMM_REGISTER_ZERO;
-} PRDF_PLUGIN_DEFINE(p9_ec, ReturnFailure);
-
} // end namespace p9_ec
} // end namespace PRDF
OpenPOWER on IntegriCloud