diff options
author | Dean Sanner <dsanner@us.ibm.com> | 2016-11-01 06:51:22 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2016-11-04 10:23:40 -0400 |
commit | 9a095b1e85c86734d96f75bce0af21c0223d25b5 (patch) | |
tree | a0956698a5e5df8126244cb20d5b1e19c13dee9a /src/usr/hwas/common/hwas.C | |
parent | 8bc6f45c567035a18087a66c84a58f0e2eef4166 (diff) | |
download | talos-hostboot-9a095b1e85c86734d96f75bce0af21c0223d25b5.tar.gz talos-hostboot-9a095b1e85c86734d96f75bce0af21c0223d25b5.zip |
Improve memory deconfig by association edge conditions
-Fix current code to handle dimms without MCBIST
-Reset position tracker when level is removed
Change-Id: I429bfea3dda3a546c609ffc0d1f7823dd0052a6d
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/32057
Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com>
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: Matthew A. Ploetz <maploetz@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/hwas/common/hwas.C')
-rw-r--r-- | src/usr/hwas/common/hwas.C | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/usr/hwas/common/hwas.C b/src/usr/hwas/common/hwas.C index bc42b4140..396a42e68 100644 --- a/src/usr/hwas/common/hwas.C +++ b/src/usr/hwas/common/hwas.C @@ -1923,11 +1923,17 @@ void presentByAssoc(TargetInfoVector& io_funcTargets, o_targToDeconfig.push_back(l_curTargetInfo); // Remove target from funcTargets io_funcTargets.erase(it); + + //Just erased current MCBIST, MCA/MCS index invalid + l_MCAIndex = __INT_MAX__; + l_MCSIndex = __INT_MAX__; } // Update MCBIST Index else { l_MCBISTIndex = i; + l_MCAIndex = __INT_MAX__; //New MCBIST, MCA index invalid + l_MCSIndex = __INT_MAX__; //New MCBIST, MCS index invalid i++; continue; } @@ -1960,6 +1966,7 @@ void presentByAssoc(TargetInfoVector& io_funcTargets, else { l_MCSIndex = i; + l_MCAIndex = __INT_MAX__; //New MCS, MCA index invalid i++; continue; } @@ -1972,6 +1979,8 @@ void presentByAssoc(TargetInfoVector& io_funcTargets, if ( l_MCBISTIndex != __INT_MAX__ ) { i = l_MCBISTIndex; + l_MCAIndex = __INT_MAX__; //New MCBIST, MCA index invalid + l_MCSIndex = __INT_MAX__; //New MCBIST, MCS index invalid } // Backtrack to beginning if no MCS has been seen yet else @@ -2114,12 +2123,18 @@ void presentByAssoc(TargetInfoVector& io_funcTargets, o_targToDeconfig.push_back(l_curTargetInfo); // Remove target from funcTargets io_funcTargets.erase(it); + l_MCAIndex = __INT_MAX__; //MCA removed, MCA index invalid // Backtrack to last MCS if ( l_MCSIndex != __INT_MAX__ ) { i = l_MCSIndex; } - // Backtrack to beginning if no MCS has been seen yet + // Backtrack to last MCBIST + else if ( l_MCBISTIndex != __INT_MAX__ ) + { + i = l_MCBISTIndex; + } + // Backtrack to beginning if no MCBIST has been seen yet else { i = 0; |