summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJosh Rispoli <jprispol@us.ibm.com>2014-09-26 11:58:30 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-10-14 14:54:50 -0500
commitd0dc609dd10135f9be6cee0dda936a88296b64c4 (patch)
treee0ace0ce4ea6a234a396b92dd9259100a1c91e9e /src
parent18ec11f6579bafedcf33112be287b063f5f90530 (diff)
downloadtalos-hostboot-d0dc609dd10135f9be6cee0dda936a88296b64c4.tar.gz
talos-hostboot-d0dc609dd10135f9be6cee0dda936a88296b64c4.zip
Add check for functional membufs in checkMinHW
Change-Id: I79d276d0799066df9c0889782bdae305bd0f87a7 RTC:91178 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/13651 Tested-by: Jenkins Server Reviewed-by: Brian H. Horton <brianh@linux.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src')
-rw-r--r--src/include/usr/hwas/common/hwas_reasoncodes.H5
-rw-r--r--src/usr/hwas/common/hwas.C59
2 files changed, 63 insertions, 1 deletions
diff --git a/src/include/usr/hwas/common/hwas_reasoncodes.H b/src/include/usr/hwas/common/hwas_reasoncodes.H
index 0e6a07875..c7b735fa8 100644
--- a/src/include/usr/hwas/common/hwas_reasoncodes.H
+++ b/src/include/usr/hwas/common/hwas_reasoncodes.H
@@ -5,7 +5,9 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* COPYRIGHT International Business Machines Corp. 2011,2014 */
+/* Contributors Listed Below - COPYRIGHT 2012,2014 */
+/* [+] 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. */
@@ -47,6 +49,7 @@ namespace HWAS
RC_SYSAVAIL_NO_MEMORY_FUNC = HWAS_COMP_ID | 0x06,
RC_SYSAVAIL_NO_PROCS_FUNC = HWAS_COMP_ID | 0x07,
RC_SYSAVAIL_NO_NODES_FUNC = HWAS_COMP_ID | 0x08,
+ RC_SYSAVAIL_NO_MEMBUFS_FUNC = HWAS_COMP_ID | 0x09,
};
};
diff --git a/src/usr/hwas/common/hwas.C b/src/usr/hwas/common/hwas.C
index 3ac0a3ad0..2322271dd 100644
--- a/src/usr/hwas/common/hwas.C
+++ b/src/usr/hwas/common/hwas.C
@@ -918,6 +918,65 @@ errlHndl_t checkMinimumHardware(const TARGETING::ConstTargetHandle_t i_node)
errlCommit(l_errl, HWAS_COMP_ID);
// errl is now NULL
} // if no dimms
+
+ // check for functional membufs
+ PredicateCTM l_membuf(CLASS_CHIP, TYPE_MEMBUF);
+
+ TargetHandleList l_funcMembufTargetList;
+ PredicatePostfixExpr l_checkExprFunctionalMembufs;
+ l_checkExprFunctionalMembufs.push(&l_membuf).push(&l_functional).And();
+ targetService().getAssociated( l_funcMembufTargetList, pTop,
+ TargetService::CHILD, TargetService::ALL,
+ &l_checkExprFunctionalMembufs);
+
+ HWAS_DBG( "checkMinimumHardware: %d functional membufs",
+ l_funcMembufTargetList.size());
+
+ if (l_funcMembufTargetList.empty())
+ {
+ HWAS_ERR( "Insufficient hardware to continue IPL (func membufs)");
+
+ TargetHandleList l_presentMembufTargetList;
+ PredicatePostfixExpr l_checkExprPresentMembufs;
+ l_checkExprPresentMembufs.push(&l_membuf).push(&l_present).And();
+ targetService().getAssociated( l_presentMembufTargetList, pTop,
+ TargetService::CHILD, TargetService::ALL,
+ &l_checkExprPresentMembufs);
+ uint32_t membufs_present = l_presentMembufTargetList.size();
+
+ /*@
+ * @errortype
+ * @severity ERRL_SEV_UNRECOVERABLE
+ * @moduleid MOD_CHECK_MIN_HW
+ * @reasoncode RC_SYSAVAIL_NO_MEMBUFS_FUNC
+ * @devdesc checkMinimumHardware found no
+ * functional membufs
+ * @custdesc A problem occurred during the IPL of the
+ * system: Found no functional dimm cards.
+ * @userdata1[00:31] HUID of node
+ * @userdata2[00:31] number of present nonfunctional membufs
+ */
+ const uint64_t userdata1 =
+ (static_cast<uint64_t>(get_huid(pTop)) << 32);
+ const uint64_t userdata2 =
+ (static_cast<uint64_t>(membufs_present) << 32);
+ l_errl = hwasError(ERRL_SEV_UNRECOVERABLE,
+ MOD_CHECK_MIN_HW,
+ RC_SYSAVAIL_NO_MEMBUFS_FUNC,
+ userdata1, userdata2);
+
+ // call out the procedure to find the deconfigured part.
+ hwasErrorAddProcedureCallout( l_errl,
+ EPUB_PRC_FIND_DECONFIGURED_PART,
+ SRCI_PRIORITY_HIGH );
+
+ // if we already have an error, link this one to the earlier;
+ // if not, set the common plid
+ hwasErrorUpdatePlid( l_errl, l_commonPlid );
+ errlCommit(l_errl, HWAS_COMP_ID);
+ // errl is now NULL
+ }
+
#endif // CONFIG_DJVPD_READ_FROM_HW
// ------------------------------------------------------------
OpenPOWER on IntegriCloud