summaryrefslogtreecommitdiffstats
path: root/src/usr/hwas/common
diff options
context:
space:
mode:
authorDan Crowell <dcrowell@us.ibm.com>2017-03-27 16:38:08 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2017-04-21 23:28:33 -0400
commit96b6f392d2a590938540216fd50b1b350a3b5730 (patch)
treea3e4824897c84232fda78a9d88a0f2625b5d2248 /src/usr/hwas/common
parent335bd0a9a6d45518f340396e4996aba282af3118 (diff)
downloadtalos-hostboot-96b6f392d2a590938540216fd50b1b350a3b5730.tar.gz
talos-hostboot-96b6f392d2a590938540216fd50b1b350a3b5730.zip
Terminate IPL if no memory configured behind master proc
Firmware doesn't currently support booting in a configuration where there is no functional memory behind the master processor (proc0). Added an explicit check to the 'minimum hardware' logic to account for this to avoid confusing CRESP errors when this scenario shows up. Change-Id: Ia9c1e1d1cb135efb58a52edfccffe66174f57a2c CQ: SW384402 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/39048 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com> Reviewed-by: Stephen M. Cprek <smcprek@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/hwas/common')
-rw-r--r--src/usr/hwas/common/hwas.C60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/usr/hwas/common/hwas.C b/src/usr/hwas/common/hwas.C
index 8e6931ef7..04c47356e 100644
--- a/src/usr/hwas/common/hwas.C
+++ b/src/usr/hwas/common/hwas.C
@@ -1669,6 +1669,66 @@ errlHndl_t checkMinimumHardware(const TARGETING::ConstTargetHandle_t i_nodeOrSys
// errl is now NULL
} // if no dimms
+ //@fixme-RTC:149250-Remove when we have XOR Mask Support
+ // check here for functional dimms behind the master proc
+ targetService().getAssociated(l_dimms, l_pMasterProc,
+ TargetService::CHILD_BY_AFFINITY, TargetService::ALL,
+ &l_checkExprFunctional);
+ HWAS_DBG( "checkMinimumHardware: %d functional dimms behind master proc %.8X",
+ l_dimms.size(), get_huid(l_pMasterProc) );
+
+ if (l_dimms.empty())
+ {
+ HWAS_ERR( "Insufficient hardware to continue IPL (func DIMM behind master proc)");
+
+ if(o_bootable)
+ {
+ *o_bootable = false;
+ break;
+ }
+ // determine some numbers to help figure out what's up..
+ TargetHandleList l_plist;
+ PredicatePostfixExpr l_checkExprPresent;
+ l_checkExprPresent.push(&l_dimm).push(&l_present).And();
+ targetService().getAssociated(l_plist, l_pMasterProc,
+ TargetService::CHILD_BY_AFFINITY, TargetService::ALL,
+ &l_checkExprPresent);
+ uint32_t dimms_present = l_plist.size();
+
+ /*@
+ * @errortype
+ * @severity ERRL_SEV_UNRECOVERABLE
+ * @moduleid MOD_CHECK_MIN_HW
+ * @reasoncode RC_SYSAVAIL_NO_MEMORY_FUNC_MASTER
+ * @devdesc checkMinimumHardware found no
+ * functional dimms behind proc0
+ * @custdesc A problem occurred during the IPL of the
+ * system: Found no functional dimm cards.
+ * @userdata1[00:31] HUID of master proc
+ * @userdata2[00:31] number of present, non-functional dimms
+ */
+ const uint64_t userdata1 =
+ (static_cast<uint64_t>(get_huid(l_pMasterProc)) << 32);
+ const uint64_t userdata2 =
+ (static_cast<uint64_t>(dimms_present) << 32);
+ l_errl = hwasError(ERRL_SEV_UNRECOVERABLE,
+ MOD_CHECK_MIN_HW,
+ RC_SYSAVAIL_NO_MEMORY_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
+ } // if no dimms
+ //END section to remove
+
// There needs to be either functional MCS/MCAs (NIMBUS) or MCS/MBAs
// (CUMULUS). Check for MCAs first.
PredicateCTM l_mca(CLASS_UNIT, TYPE_MCA);
OpenPOWER on IntegriCloud