summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Weisenbeck <bweisenb@us.ibm.com>2015-10-16 10:24:15 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2015-10-23 17:16:18 -0500
commit11ab19dc4540b8f8b2ee9a48cf190d448a9375c3 (patch)
treee6dbbe4dbe209b0e704256c92401d68b05230a4f
parenta811529cb668e42f50017d2cfd5aa98ab92ce2e8 (diff)
downloadblackbird-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
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/pegasus/prdfCenMba.C4
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C4
-rw-r--r--src/usr/diag/prdf/common/plat/pegasus/prdfP8Ex.C4
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/pegasus/prdfP8Mcs.C4
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/pegasus/prdfP8Proc.C4
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);
}
OpenPOWER on IntegriCloud