summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBill Hoffa <wghoffa@us.ibm.com>2018-02-02 12:44:34 -0600
committerDaniel M. Crowell <dcrowell@us.ibm.com>2018-02-06 10:15:25 -0500
commit39157523786b6d297d41f42a641bf758b4293733 (patch)
treef9f596b39d76d73addf49897cc8eb2c7b437bfbc
parente77f8551f4a639e28c07728cca857b4b80c57f0a (diff)
downloadtalos-hostboot-39157523786b6d297d41f42a641bf758b4293733.tar.gz
talos-hostboot-39157523786b6d297d41f42a641bf758b4293733.zip
Set Memory Enabled Bit for all Procs with Valid Memory
- This is only done in Simulation Change-Id: I011ecc6ceb05613b29d8e8e38944b342622b58c0 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/53310 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Prachi Gupta <pragupta@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Reviewed-by: Dean Sanner <dsanner@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
-rw-r--r--src/usr/isteps/istep14/call_proc_exit_cache_contained.C49
1 files changed, 39 insertions, 10 deletions
diff --git a/src/usr/isteps/istep14/call_proc_exit_cache_contained.C b/src/usr/isteps/istep14/call_proc_exit_cache_contained.C
index 94d133519..f018c452b 100644
--- a/src/usr/isteps/istep14/call_proc_exit_cache_contained.C
+++ b/src/usr/isteps/istep14/call_proc_exit_cache_contained.C
@@ -308,21 +308,50 @@ void* call_proc_exit_cache_contained (void *io_pArgs)
if(Util::isSimicsRunning())
{
+ //Value to indicate memory is valid
uint64_t l_memory_valid = 1;
- // exit cache contained mode
- l_errl = deviceWrite( l_masterProc,
+
+ //Predicate(s) to get functional dimm for each proc
+ PredicateHwas l_functional;
+ l_functional.functional(true);
+ TargetHandleList l_dimms;
+ PredicateCTM l_dimm(CLASS_LOGICAL_CARD, TYPE_DIMM);
+ PredicatePostfixExpr l_checkExprFunctional;
+ l_checkExprFunctional.push(&l_dimm).push(&l_functional).And();
+
+ // Loop through all procs to find ones with valid memory
+ for (const auto & l_procChip: l_procList)
+ {
+ // Get the functional DIMMs for this proc
+ targetService().getAssociated(l_dimms,
+ l_procChip,
+ TargetService::CHILD_BY_AFFINITY,
+ TargetService::ALL,
+ &l_checkExprFunctional);
+
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "%d functional dimms behind proc: %.8X",
+ l_dimms.size(), get_huid(l_procChip) );
+
+ // Check if this proc has memory
+ if(l_dimms.size())
+ {
+ // exit cache contained mode
+ l_errl = deviceWrite( l_procChip,
&l_memory_valid, //Memory is valid
scom_size, //Size of Scom
DEVICE_SCOM_ADDRESS(EXIT_CACHE_CONTAINED_SCOM_ADDR));
+ }
+
+ if ( l_errl )
+ {
+ // Create IStep error log and cross reference to error
+ // that occurred
+ l_stepError.addErrorDetails( l_errl );
- if ( l_errl )
- {
- // Create IStep error log and cross reference to error that
- // occurred
- l_stepError.addErrorDetails( l_errl );
-
- // Commit Error
- errlCommit( l_errl, HWPF_COMP_ID );
+ // Commit Error
+ errlCommit( l_errl, HWPF_COMP_ID );
+ }
}
}
OpenPOWER on IntegriCloud