summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPrem Shanker Jha <premjha2@in.ibm.com>2014-12-17 08:16:54 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2015-02-16 12:01:49 -0600
commit3dd66c91705c5c7ccefd1ff3d83c31468a72ccbc (patch)
tree37f55bad786cb82ee56b6d9ec195c4f5e5aa32ca /src
parent72c1e2f16d53b8fbaf0a5551e0688678e53abeb5 (diff)
downloadtalos-hostboot-3dd66c91705c5c7ccefd1ff3d83c31468a72ccbc.tar.gz
talos-hostboot-3dd66c91705c5c7ccefd1ff3d83c31468a72ccbc.zip
PRD: Disable l2/l3 line delete and array repair for OPAL based system.
Change-Id: I72aa8902ca95de440f9d080e6ebad39a48f5a161 CQ: SW289369 Backport: release-fips811 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/14954 Tested-by: Jenkins Server Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com> Reviewed-by: Bilicon Patil <bilpatil@in.ibm.com> Reviewed-by: Christopher T. Phan <cphan@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com> Reviewed-by: Zane Shelley <zshelle@us.ibm.com> Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/15735
Diffstat (limited to 'src')
-rw-r--r--src/usr/diag/prdf/common/plat/pegasus/prdfPlatUtil.C80
-rw-r--r--src/usr/diag/prdf/common/plat/pegasus/prdfPlatUtil.H50
-rw-r--r--src/usr/diag/prdf/common/prdf_common_fsp_and_hb.mk3
-rw-r--r--src/usr/diag/prdf/plat/pegasus/prdfPlatP8Ex.C11
4 files changed, 142 insertions, 2 deletions
diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfPlatUtil.C b/src/usr/diag/prdf/common/plat/pegasus/prdfPlatUtil.C
new file mode 100644
index 000000000..0e0cfc18d
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/pegasus/prdfPlatUtil.C
@@ -0,0 +1,80 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/diag/prdf/common/plat/pegasus/prdfPlatUtil.C $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2014,2015 */
+/* [+] International Business Machines Corp. */
+/* */
+/* */
+/* Licensed under the Apache License, Version 2.0 (the "License"); */
+/* you may not use this file except in compliance with the License. */
+/* You may obtain a copy of the License at */
+/* */
+/* http://www.apache.org/licenses/LICENSE-2.0 */
+/* */
+/* Unless required by applicable law or agreed to in writing, software */
+/* distributed under the License is distributed on an "AS IS" BASIS, */
+/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
+/* implied. See the License for the specific language governing */
+/* permissions and limitations under the License. */
+/* */
+/* IBM_PROLOG_END_TAG */
+
+/** @file prdfPlatUtil.C */
+
+#include <prdfPlatServices.H>
+#include <iipServiceDataCollector.h>
+
+using namespace TARGETING;
+
+namespace PRDF
+{
+
+using namespace PlatServices;
+namespace PlatUtil
+{
+
+bool ignoreErrorForSapphire( STEP_CODE_DATA_STRUCT & i_stepcode )
+{
+ bool ignoreError = false;
+
+ // First of all ensure that we are not in AVP mode. Hypervisor becomes
+ // irrelevant in that case.
+ if( !isMfgAvpEnabled() && !isMfgHdatAvpEnabled() && !mfgMode() )
+ {
+ if( isHyprConfigOpal() )
+ {
+ // For an OPAL based system, analysis for certain errors is either
+ // not supported or shall be added later. We need to simply
+ // threshold and mask these errors. There should not be any service
+ // action. However, there are some scenarios to consider:
+ // 1. manufacturing or AVP mode - threshold and predictive callout
+ // 2. SP less system - mask error on first instance.
+ // 3. SP based Tuleta-L - mask error once threshold is met (say 32
+ // per Day ).
+
+ if( !isSpConfigFsp() )
+ {
+ //Mask the error on first instance for FSP less systems.
+ i_stepcode.service_data->SetFlag(
+ ServiceDataCollector::AT_THRESHOLD );
+ }
+
+ //Prevent predictive callout of the chip.
+ i_stepcode.service_data->ClearFlag(
+ ServiceDataCollector::SERVICE_CALL );
+
+ ignoreError = true;
+ }
+ }
+
+ return ignoreError;
+}
+
+} // end namespace PlatUtil
+
+} // end namespace PRDF
+
diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfPlatUtil.H b/src/usr/diag/prdf/common/plat/pegasus/prdfPlatUtil.H
new file mode 100644
index 000000000..a22f221c1
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/pegasus/prdfPlatUtil.H
@@ -0,0 +1,50 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/diag/prdf/common/plat/pegasus/prdfPlatUtil.H $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2014,2015 */
+/* [+] International Business Machines Corp. */
+/* */
+/* */
+/* Licensed under the Apache License, Version 2.0 (the "License"); */
+/* you may not use this file except in compliance with the License. */
+/* You may obtain a copy of the License at */
+/* */
+/* http://www.apache.org/licenses/LICENSE-2.0 */
+/* */
+/* Unless required by applicable law or agreed to in writing, software */
+/* distributed under the License is distributed on an "AS IS" BASIS, */
+/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
+/* implied. See the License for the specific language governing */
+/* permissions and limitations under the License. */
+/* */
+/* IBM_PROLOG_END_TAG */
+
+#ifndef PRDF_PLATUTIL_H
+#define PRDF_PLATUTIL_H
+
+/**
+ * @file prdfPlatUtil.H
+ * @brief Intended for util functions common between all platforms.
+ */
+
+namespace PRDF
+{
+
+struct STEP_CODE_DATA_STRUCT;
+namespace PlatUtil
+{
+
+/**
+ * @return True, if it is an OPAL based system in field environment, false
+ * otherwise.
+ */
+bool ignoreErrorForSapphire( STEP_CODE_DATA_STRUCT & i_stepcode );
+
+} // namespace PlatUtil
+
+} // namespace PRDF
+#endif
diff --git a/src/usr/diag/prdf/common/prdf_common_fsp_and_hb.mk b/src/usr/diag/prdf/common/prdf_common_fsp_and_hb.mk
index 16f41964a..888c628fb 100644
--- a/src/usr/diag/prdf/common/prdf_common_fsp_and_hb.mk
+++ b/src/usr/diag/prdf/common/prdf_common_fsp_and_hb.mk
@@ -5,7 +5,7 @@
#
# OpenPOWER HostBoot Project
#
-# Contributors Listed Below - COPYRIGHT 2014
+# Contributors Listed Below - COPYRIGHT 2014,2015
# [+] International Business Machines Corp.
#
#
@@ -138,6 +138,7 @@ prd_obj += prdfLaneRepair.o
prd_obj += prdfMemoryMru.o
prd_obj += prdfPegasusConfigurator.o
prd_obj += prdfPhbUtils.o
+prd_obj += prdfPlatUtil.o
# common/plat/pegasus/ (rule plugin related)
prd_rule_plugin += prdfCenMba.o
diff --git a/src/usr/diag/prdf/plat/pegasus/prdfPlatP8Ex.C b/src/usr/diag/prdf/plat/pegasus/prdfPlatP8Ex.C
index 6929846b3..f0fb5f23e 100644
--- a/src/usr/diag/prdf/plat/pegasus/prdfPlatP8Ex.C
+++ b/src/usr/diag/prdf/plat/pegasus/prdfPlatP8Ex.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2013,2014 */
+/* Contributors Listed Below - COPYRIGHT 2013,2015 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -32,6 +32,9 @@
#include <prdfPlatServices.H>
#include <prdfPluginMap.H>
#include <prdfCalloutUtil.H>
+#include <prdfPlatUtil.H>
+
+using namespace TARGETING;
namespace PRDF
{
@@ -113,6 +116,9 @@ int32_t L3CE( ExtensibleChip * i_chip,
{
// We can get these errors during hostboot, but will wait for runtime
// to attempt repairs
+
+ PlatUtil::ignoreErrorForSapphire( i_sc );
+
return SUCCESS;
} PRDF_PLUGIN_DEFINE(Ex, L3CE);
@@ -139,6 +145,9 @@ int32_t L2CE( ExtensibleChip * i_chip,
{
// We can get these errors during hostboot, but will wait for runtime
// to attempt repairs
+
+ PlatUtil::ignoreErrorForSapphire( i_sc );
+
return SUCCESS;
} PRDF_PLUGIN_DEFINE(Ex, L2CE);
OpenPOWER on IntegriCloud