diff options
author | Brad Bishop <bradleyb@us.ibm.com> | 2013-04-15 13:18:52 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2013-04-24 15:41:56 -0500 |
commit | f244ccdc2487804c5ae40fe5dacc874da97ea051 (patch) | |
tree | aaae737fb6a9c5d0094e5a9a29714df062dc05bc /src/usr/diag/mdia | |
parent | 0508ac0d722bbd587d0704ca8c944d5fcdb6dd59 (diff) | |
download | talos-hostboot-f244ccdc2487804c5ae40fe5dacc874da97ea051.tar.gz talos-hostboot-f244ccdc2487804c5ae40fe5dacc874da97ea051.zip |
MDIA: memory size weighted priority
Change-Id: Iddbd9a088a0b6eb16b1c614052b14a9f8ef8035f
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/4061
Tested-by: Jenkins Server
Reviewed-by: Zane Shelley <zshelle@us.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/diag/mdia')
-rw-r--r-- | src/usr/diag/mdia/mdiasm.C | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/src/usr/diag/mdia/mdiasm.C b/src/usr/diag/mdia/mdiasm.C index 126ce9338..e201d83e3 100644 --- a/src/usr/diag/mdia/mdiasm.C +++ b/src/usr/diag/mdia/mdiasm.C @@ -188,7 +188,6 @@ errlHndl_t StateMachine::run(const WorkFlowAssocMap & i_list) if((*wit)->log) { errlCommit((*wit)->log, MDIA_COMP_ID); - // TODO (component, actions, etc) } } @@ -203,6 +202,8 @@ void StateMachine::setup(const WorkFlowAssocMap & i_list) reset(); + AttributeTraits<TARGETING::ATTR_EFF_DIMM_SIZE>::Type effDimmSizeAttr; + mutex_lock(&iv_mutex); WorkFlowProperties * p = 0; @@ -222,7 +223,27 @@ void StateMachine::setup(const WorkFlowAssocMap & i_list) p->log = 0; p->timer = 0; p->restartCommand = false; - p->memSize = 0; // TODO + p->memSize = 0; + + // get the memsize attached to this mba + + if(it->first->tryGetAttr<TARGETING::ATTR_EFF_DIMM_SIZE>( + effDimmSizeAttr)) + { + for(uint64_t port = 0; + port < sizeof(effDimmSizeAttr)/sizeof(*effDimmSizeAttr); + ++port) + { + for(uint64_t dimm = 0; + dimm < + sizeof(effDimmSizeAttr[0])/sizeof(*effDimmSizeAttr[0]); + ++dimm) + { + p->memSize += effDimmSizeAttr[port][dimm]; + } + } + } + p->data = NULL; p->chipUnit = it->first->getAttr<ATTR_CHIP_UNIT>(); @@ -322,8 +343,11 @@ bool StateMachine::scheduleWorkItem(WorkFlowProperties & i_wfp) // the priority is the number of iterations // through the memory multiplied by the memory size - // TODO - multiply by memory size - uint64_t priority = getRemainingWorkItems(i_wfp); + // multiply by memory size + // assume 1 GB DIMMS if figuring out the memory + // size failed + uint64_t priority = getRemainingWorkItems(i_wfp) + * (i_wfp.memSize ? i_wfp.memSize : 1); if(!iv_tp) { |