diff options
author | Benjamin Weisenbeck <bweisenb@us.ibm.com> | 2018-07-20 12:57:37 -0500 |
---|---|---|
committer | Zane C. Shelley <zshelle@us.ibm.com> | 2018-07-26 21:13:24 -0500 |
commit | 96e03100181831f7282975ec5406d2fb83b4b001 (patch) | |
tree | a359af1cc616f17798349a8e1659b1de262275e7 | |
parent | f1ef5d3692e074c5157d40834f5bb40d042a5a9c (diff) | |
download | talos-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.rule | 20 | ||||
-rw-r--r-- | src/usr/diag/prdf/common/plat/p9/prdfP9Ec.C | 41 |
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 |