summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorCaleb Palmer <cnpalmer@us.ibm.com>2019-06-20 08:18:07 -0500
committerZane C. Shelley <zshelle@us.ibm.com>2019-06-25 14:47:01 -0500
commitbd0eb8fcc8d4fe9bf7330484094d556a848a2210 (patch)
tree21c661038a953e83707d8548062a73d565fb869d /src
parent94e392de6a0a2dfb7426021491def8b13e3e01ec (diff)
downloadtalos-hostboot-bd0eb8fcc8d4fe9bf7330484094d556a848a2210.tar.gz
talos-hostboot-bd0eb8fcc8d4fe9bf7330484094d556a848a2210.zip
PRD: Add handleRrFo for OCMB domain
Change-Id: I8b55e1ce57d29d3c56fd21fa1bde0cbf829bf6ca Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/79250 Reviewed-by: Benjamen G. Tyner <ben.tyner@ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com> Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/79254 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>
Diffstat (limited to 'src')
-rw-r--r--src/usr/diag/prdf/common/plat/explorer/prdfExplorerPlugins_common.C18
-rw-r--r--src/usr/diag/prdf/common/plat/mem/prdfOcmbDataBundle.H7
-rw-r--r--src/usr/diag/prdf/common/plat/mem/prdf_plat_mem.mk3
-rw-r--r--src/usr/diag/prdf/common/plat/p9/prdfP9OcmbChipDomain.C78
-rw-r--r--src/usr/diag/prdf/common/plat/p9/prdfP9OcmbChipDomain.H12
-rwxr-xr-xsrc/usr/diag/prdf/common/prdfMain_common.C7
6 files changed, 122 insertions, 3 deletions
diff --git a/src/usr/diag/prdf/common/plat/explorer/prdfExplorerPlugins_common.C b/src/usr/diag/prdf/common/plat/explorer/prdfExplorerPlugins_common.C
index 4272f9c74..e70bfea8f 100644
--- a/src/usr/diag/prdf/common/plat/explorer/prdfExplorerPlugins_common.C
+++ b/src/usr/diag/prdf/common/plat/explorer/prdfExplorerPlugins_common.C
@@ -45,6 +45,24 @@ namespace explorer_ocmb
//##############################################################################
//
+// Special plugins
+//
+//##############################################################################
+
+/**
+ * @brief Plugin that initializes the data bundle.
+ * @param i_chip An OCMB chip.
+ * @return SUCCESS
+ */
+int32_t Initialize( ExtensibleChip * i_chip )
+{
+ i_chip->getDataBundle() = new OcmbDataBundle( i_chip );
+ return SUCCESS;
+}
+PRDF_PLUGIN_DEFINE( explorer_ocmb, Initialize );
+
+//##############################################################################
+//
// OCMB_LFIR
//
//##############################################################################
diff --git a/src/usr/diag/prdf/common/plat/mem/prdfOcmbDataBundle.H b/src/usr/diag/prdf/common/plat/mem/prdfOcmbDataBundle.H
index d10c56755..52c08c5ce 100644
--- a/src/usr/diag/prdf/common/plat/mem/prdfOcmbDataBundle.H
+++ b/src/usr/diag/prdf/common/plat/mem/prdfOcmbDataBundle.H
@@ -35,12 +35,19 @@
// Platform includes
#include <prdfPlatServices.H>
+#include <prdfMemCeTable.H>
+#include <prdfMemUeTable.H>
#ifdef __HOSTBOOT_MODULE
#include <prdfMemTdFalseAlarm.H>
+#include <prdfMemThresholds.H>
#include <prdfMemTdCtlr.H>
+#ifndef __HOSTBOOT_RUNTIME
+#include <prdfMemIplCeStats.H>
+#endif
+
#endif // __HOSTBOOT_MODULE
namespace PRDF
diff --git a/src/usr/diag/prdf/common/plat/mem/prdf_plat_mem.mk b/src/usr/diag/prdf/common/plat/mem/prdf_plat_mem.mk
index 087214ece..2ea0712d3 100644
--- a/src/usr/diag/prdf/common/plat/mem/prdf_plat_mem.mk
+++ b/src/usr/diag/prdf/common/plat/mem/prdf_plat_mem.mk
@@ -5,7 +5,7 @@
#
# OpenPOWER HostBoot Project
#
-# Contributors Listed Below - COPYRIGHT 2016,2018
+# Contributors Listed Below - COPYRIGHT 2016,2019
# [+] International Business Machines Corp.
#
#
@@ -51,6 +51,7 @@ prd_obj += prdfMemoryMru.o
prd_obj += prdfMemUeTable.o
prd_obj += prdfMemUtils.o
prd_obj += prdfMemThresholds.o
+prd_obj += prdfP9OcmbChipDomain.o
# rule plugin related
prd_rule_plugin += prdfP9Mca_common.o
diff --git a/src/usr/diag/prdf/common/plat/p9/prdfP9OcmbChipDomain.C b/src/usr/diag/prdf/common/plat/p9/prdfP9OcmbChipDomain.C
new file mode 100644
index 000000000..2f6c25646
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/p9/prdfP9OcmbChipDomain.C
@@ -0,0 +1,78 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/diag/prdf/common/plat/p9/prdfP9OcmbChipDomain.C $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2019 */
+/* [+] 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 prdfP9OcmbChipDomain.C
+ * @brief chip Plug-in code for OCMB domain
+ */
+
+#include <prdfP9OcmbChipDomain.H>
+
+// Framework includes
+#include <prdfExtensibleChip.H>
+#include <prdfPlatServices.H>
+#include <prdfTrace.H>
+#include <prdfOcmbDataBundle.H>
+
+using namespace TARGETING;
+
+namespace PRDF
+{
+
+using namespace PlatServices;
+
+#ifdef __HOSTBOOT_RUNTIME
+void OcmbChipDomain::handleRrFo()
+{
+ #define PRDF_FUNC "[OcmbChipDomain::handleRrFo] "
+
+ do
+ {
+ uint32_t domainSize = GetSize();
+ // Iterate all OCMBs in the domain.
+ for ( uint32_t i = 0; i < domainSize; ++i )
+ {
+ RuleChip * ocmbChip = LookUp(i);
+
+ // Start background scrub if required.
+ OcmbDataBundle * ocmbdb = getOcmbDataBundle( ocmbChip );
+ int32_t l_rc = ocmbdb->getTdCtlr()->handleRrFo();
+ if ( SUCCESS != l_rc )
+ {
+ // Let us not fail here. If problem is contained within an OCMB
+ // we will discover it again during normal TD procedures.
+ PRDF_ERR( PRDF_FUNC "handleRrFo() failed: OCMB=0x%08x",
+ ocmbChip->GetId() );
+ continue; // Keep going.
+ }
+ }
+
+ } while (0);
+
+ #undef PRDF_FUNC
+}
+#endif
+
+} // end namespace PRDF
diff --git a/src/usr/diag/prdf/common/plat/p9/prdfP9OcmbChipDomain.H b/src/usr/diag/prdf/common/plat/p9/prdfP9OcmbChipDomain.H
index 5546d9453..9f5776cac 100644
--- a/src/usr/diag/prdf/common/plat/p9/prdfP9OcmbChipDomain.H
+++ b/src/usr/diag/prdf/common/plat/p9/prdfP9OcmbChipDomain.H
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2018 */
+/* Contributors Listed Below - COPYRIGHT 2018,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -54,6 +54,16 @@ class OcmbChipDomain : public RuleChipDomain
virtual bool Query( ATTENTION_TYPE i_attnType )
{ return false; }
+ #ifdef __HOSTBOOT_RUNTIME
+
+ /**
+ * @brief Starts memory background scrubbing or VCM procedure for OCMB
+ * during R/R and F/O if required.
+ */
+ void handleRrFo();
+
+ #endif
+
};
} // end namespace PRDF
diff --git a/src/usr/diag/prdf/common/prdfMain_common.C b/src/usr/diag/prdf/common/prdfMain_common.C
index fd23cf4d1..09cfe2212 100755
--- a/src/usr/diag/prdf/common/prdfMain_common.C
+++ b/src/usr/diag/prdf/common/prdfMain_common.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2013,2018 */
+/* Contributors Listed Below - COPYRIGHT 2013,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -47,6 +47,7 @@
#ifdef __HOSTBOOT_RUNTIME
#include <prdfP9McbistDomain.H>
+#include <prdfP9OcmbChipDomain.H>
#include <prdfCenMbaDomain.H>
#endif
@@ -172,6 +173,10 @@ errlHndl_t noLock_initialize()
{
((MbaDomain *)systemPtr->GetDomain(MBA_DOMAIN))->handleRrFo();
}
+ else if ( MODEL_AXONE == procModel )
+ {
+ ((OcmbChipDomain *)systemPtr->GetDomain(OCMB_DOMAIN))->handleRrFo();
+ }
else
{
PRDF_ERR( PRDF_FUNC "Master PROC model %d not supported", procModel );
OpenPOWER on IntegriCloud