summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/mdia
diff options
context:
space:
mode:
authorBrad Bishop <bradleyb@us.ibm.com>2013-04-15 13:18:52 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-04-24 15:41:56 -0500
commitf244ccdc2487804c5ae40fe5dacc874da97ea051 (patch)
treeaaae737fb6a9c5d0094e5a9a29714df062dc05bc /src/usr/diag/mdia
parent0508ac0d722bbd587d0704ca8c944d5fcdb6dd59 (diff)
downloadtalos-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.C32
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)
{
OpenPOWER on IntegriCloud