diff options
author | Benjamin Weisenbeck <bweisenb@us.ibm.com> | 2015-10-16 10:24:15 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2015-10-23 17:16:18 -0500 |
commit | 11ab19dc4540b8f8b2ee9a48cf190d448a9375c3 (patch) | |
tree | e6dbbe4dbe209b0e704256c92401d68b05230a4f | |
parent | a811529cb668e42f50017d2cfd5aa98ab92ce2e8 (diff) | |
download | blackbird-hostboot-11ab19dc4540b8f8b2ee9a48cf190d448a9375c3.tar.gz blackbird-hostboot-11ab19dc4540b8f8b2ee9a48cf190d448a9375c3.zip |
PRD: Check for checkstop or unit cs before clearing service call flag
A core checkstop can be blamed on a recoverable error. Some recoverable
errors can be set up to not trigger predictive/visible logs. If a core
checkstop or system checkstop is blamed on one of these, we can't clear
the service call flag. This shouldn't generally be a concern with system
checkstops, since thresholdAndMask bits should also be given a secondary
filter. But if there were a case of thresholdAndMask that is not
secondary, this fix should also cover that.
Change-Id: If4d58d7abbcb5383c6779f4d8f249a93fcb58ee2
CQ: SW324604
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/21287
Tested-by: Jenkins Server
Reviewed-by: Caleb N. Palmer <cnpalmer@us.ibm.com>
Reviewed-by: Brian J. Stegmiller <bjs@us.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Reviewed-by: BENJAMIN J. WEISENBECK <bweisenb@us.ibm.com>
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/21414
Tested-by: Jenkins OP Build CI
Tested-by: Jenkins OP HW
Tested-by: FSP CI Jenkins
5 files changed, 15 insertions, 5 deletions
diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMba.C b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMba.C index 2a701d3bd..61ffad002 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMba.C +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMba.C @@ -231,7 +231,9 @@ PRDF_PLUGIN_DEFINE( Mba, maskRcdParitySideEffects ); int32_t ClearServiceCallFlag( ExtensibleChip * i_chip, STEP_CODE_DATA_STRUCT & i_sc ) { - if ( i_sc.service_data->IsAtThreshold() && !mfgMode() ) + if ( i_sc.service_data->IsAtThreshold() && !mfgMode() && + (CHECK_STOP != i_sc.service_data->getPrimaryAttnType()) && + (!i_sc.service_data->GetFlag(ServiceDataCollector::UNIT_CS)) ) { i_sc.service_data->ClearFlag(ServiceDataCollector::SERVICE_CALL); } diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C index 3e1ede9ac..49ba2e96e 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C @@ -1258,7 +1258,9 @@ int32_t handleMbaCalParityErr( ExtensibleChip * i_membChip, int32_t ClearServiceCallFlag( ExtensibleChip * i_chip, STEP_CODE_DATA_STRUCT & i_sc ) { - if ( i_sc.service_data->IsAtThreshold() && !mfgMode() ) + if ( i_sc.service_data->IsAtThreshold() && !mfgMode() && + (CHECK_STOP != i_sc.service_data->getPrimaryAttnType()) && + (!i_sc.service_data->GetFlag(ServiceDataCollector::UNIT_CS)) ) { i_sc.service_data->ClearFlag(ServiceDataCollector::SERVICE_CALL); } diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfP8Ex.C b/src/usr/diag/prdf/common/plat/pegasus/prdfP8Ex.C index 4d62ea095..facab825e 100644 --- a/src/usr/diag/prdf/common/plat/pegasus/prdfP8Ex.C +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfP8Ex.C @@ -57,7 +57,9 @@ namespace Ex int32_t ClearServiceCallFlag( ExtensibleChip * i_chip, STEP_CODE_DATA_STRUCT & i_sc ) { - if ( i_sc.service_data->IsAtThreshold() && !mfgMode() ) + if ( i_sc.service_data->IsAtThreshold() && !mfgMode() && + (CHECK_STOP != i_sc.service_data->getPrimaryAttnType()) && + (!i_sc.service_data->GetFlag(ServiceDataCollector::UNIT_CS)) ) { i_sc.service_data->ClearFlag(ServiceDataCollector::SERVICE_CALL); } diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfP8Mcs.C b/src/usr/diag/prdf/common/plat/pegasus/prdfP8Mcs.C index 4185d4949..dc00d96ca 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/prdfP8Mcs.C +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfP8Mcs.C @@ -226,7 +226,9 @@ int32_t ClearMbsSecondaryBits( ExtensibleChip * i_chip, int32_t ClearServiceCallFlag( ExtensibleChip * i_chip, STEP_CODE_DATA_STRUCT & i_sc ) { - if ( i_sc.service_data->IsAtThreshold() && !mfgMode() ) + if ( i_sc.service_data->IsAtThreshold() && !mfgMode() && + (CHECK_STOP != i_sc.service_data->getPrimaryAttnType()) && + (!i_sc.service_data->GetFlag(ServiceDataCollector::UNIT_CS)) ) { i_sc.service_data->ClearFlag(ServiceDataCollector::SERVICE_CALL); } diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfP8Proc.C b/src/usr/diag/prdf/common/plat/pegasus/prdfP8Proc.C index 166c517f5..389e9f444 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/prdfP8Proc.C +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfP8Proc.C @@ -824,7 +824,9 @@ PLUGIN_BUS_INTERFACE_CALLOUT( dmi, TYPE_MCS, 7 ) int32_t ClearServiceCallFlag( ExtensibleChip * i_chip, STEP_CODE_DATA_STRUCT & i_sc ) { - if ( i_sc.service_data->IsAtThreshold() && !mfgMode() ) + if ( i_sc.service_data->IsAtThreshold() && !mfgMode() && + (CHECK_STOP != i_sc.service_data->getPrimaryAttnType()) && + (!i_sc.service_data->GetFlag(ServiceDataCollector::UNIT_CS)) ) { i_sc.service_data->ClearFlag(ServiceDataCollector::SERVICE_CALL); } |