diff options
author | Bill Hoffa <wghoffa@us.ibm.com> | 2018-02-02 12:44:34 -0600 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2018-02-06 10:15:25 -0500 |
commit | 39157523786b6d297d41f42a641bf758b4293733 (patch) | |
tree | f9f596b39d76d73addf49897cc8eb2c7b437bfbc | |
parent | e77f8551f4a639e28c07728cca857b4b80c57f0a (diff) | |
download | talos-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.C | 49 |
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 ); + } } } |