summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorCaleb Palmer <cnpalmer@us.ibm.com>2016-10-13 11:37:46 -0500
committerZane C. Shelley <zshelle@us.ibm.com>2016-10-21 09:54:27 -0400
commit6a5a307c1bcda2ae86c5a01f50fa8d33a6e9c5c8 (patch)
tree157caf3e58580595674ed1c08ef848fbd0595e15 /src
parent90782fd9bde5a6fe521b6bb3dadb7d435cf743dd (diff)
downloadtalos-hostboot-6a5a307c1bcda2ae86c5a01f50fa8d33a6e9c5c8.tar.gz
talos-hostboot-6a5a307c1bcda2ae86c5a01f50fa8d33a6e9c5c8.zip
MDIA: Update getting memSize in setup
Change-Id: I5bfb4a5addc7b38ae22f035a8589c470f21d0cd7 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/31167 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com>
Diffstat (limited to 'src')
-rw-r--r--src/usr/diag/mdia/mdiasm.C68
1 files changed, 47 insertions, 21 deletions
diff --git a/src/usr/diag/mdia/mdiasm.C b/src/usr/diag/mdia/mdiasm.C
index 28e3ccc7d..6f470d16e 100644
--- a/src/usr/diag/mdia/mdiasm.C
+++ b/src/usr/diag/mdia/mdiasm.C
@@ -281,6 +281,51 @@ errlHndl_t ceErrorSetup( TargetHandle_t i_mba )
return err;
}
+uint64_t getMemSize(TargetHandle_t i_target)
+{
+ uint64_t memsize = 0;
+ AttributeTraits<TARGETING::ATTR_EFF_DIMM_SIZE>::Type effDimmSizeAttr;
+ TargetHandleList targetList;
+
+ // if target is MBA
+ if( TYPE_MBA == i_target->getAttr<ATTR_TYPE>() )
+ {
+ targetList.push_back(i_target);
+ }
+ // if target is MCBIST we have to get the connected MCSs
+ else if( TYPE_MCBIST == i_target->getAttr<ATTR_TYPE>() )
+ {
+ PredicateCTM predType( CLASS_NA, TYPE_MCS );
+ PredicateIsFunctional predFunc;
+ PredicatePostfixExpr predAnd;
+ predAnd.push(&predType).push(&predFunc).And();
+
+ targetService().getAssociated( targetList, i_target,
+ TargetService::CHILD_BY_AFFINITY,
+ TargetService::ALL, &predAnd );
+ }
+
+ for (auto trgt : targetList)
+ {
+ if(trgt->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)
+ {
+ memsize += effDimmSizeAttr[port][dimm];
+ }
+ }
+ }
+ }
+
+ return memsize;
+}
+
void StateMachine::processCommandTimeout(const MonitorIDs & i_monitorIDs)
{
MDIA_FAST("sm: processCommandTimeout");
@@ -538,8 +583,6 @@ void StateMachine::setup(const WorkFlowAssocMap & i_list)
reset();
- AttributeTraits<TARGETING::ATTR_EFF_DIMM_SIZE>::Type effDimmSizeAttr;
-
mutex_lock(&iv_mutex);
WorkFlowProperties * p = 0;
@@ -558,27 +601,10 @@ void StateMachine::setup(const WorkFlowAssocMap & i_list)
p->status = IN_PROGRESS;
p->log = 0;
p->timer = 0;
- p->memSize = 0;
p->timeoutCnt = 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];
- }
- }
- }
+ // get the memsize
+ p->memSize = getMemSize(it->first);
p->data = NULL;
p->chipUnit = it->first->getAttr<ATTR_CHIP_UNIT>();
OpenPOWER on IntegriCloud