diff options
author | ayma <ayma@us.ibm.com> | 2014-03-04 16:19:49 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2014-03-15 12:25:22 -0500 |
commit | 9ef3e1b8cd5d2ee02984478b1882677331da08fa (patch) | |
tree | 7cb7804214eedc70826242dadd78c1e117fde854 /src/usr/targeting/common | |
parent | d05eda21bf62fe34d0dcbdd786794707c5c9f048 (diff) | |
download | talos-hostboot-9ef3e1b8cd5d2ee02984478b1882677331da08fa.tar.gz talos-hostboot-9ef3e1b8cd5d2ee02984478b1882677331da08fa.zip |
change to check all present MBA and MCS in host_prd_hwreconfig
need to change host_prd_hwreconfig to use all present targets
instead of only functional targets. This allows the HWP to
mask FIRS appropriately
Change-Id: I795adf302ff4da5c731d2356433fd775b5f1ba45
CQ: SW245901
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/9297
Tested-by: Jenkins Server
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/targeting/common')
-rw-r--r-- | src/usr/targeting/common/utilFilter.C | 84 |
1 files changed, 58 insertions, 26 deletions
diff --git a/src/usr/targeting/common/utilFilter.C b/src/usr/targeting/common/utilFilter.C index 48db04ea3..f460ff93b 100644 --- a/src/usr/targeting/common/utilFilter.C +++ b/src/usr/targeting/common/utilFilter.C @@ -309,63 +309,95 @@ void getChildChiplets( TARGETING::TargetHandleList& o_vector, } } -void getAffinityTargets ( TARGETING::TargetHandleList& o_vector, - const Target * i_target, CLASS i_class, TYPE i_type, - TARGETING::TargetService::ASSOCIATION_TYPE i_association, - bool i_functional ) +void getAffinityTargets (TargetHandleList& o_vector, const Target * i_target, + CLASS i_class, TYPE i_type, + ResourceState i_state, + TargetService::ASSOCIATION_TYPE i_association) { + #define TARG_FN "getAffinityTargets(...)" + // find all the targets that are affinity-associated with i_target TARGETING::PredicateCTM l_targetFilter(i_class, i_type); o_vector.clear(); - if (i_functional) + switch(i_state) { - // Use PredicateIsFunctional to filter only functional chips - TARGETING::PredicateIsFunctional l_functional; - TARGETING::PredicatePostfixExpr l_functionalTargets; - l_functionalTargets.push(&l_targetFilter).push(&l_functional).And(); - TARGETING::targetService().getAssociated( + case UTIL_FILTER_ALL: + { + TARGETING::targetService().getAssociated( o_vector, i_target, i_association, TARGETING::TargetService::ALL, - &l_functionalTargets ); - } - else - { - TARGETING::targetService().getAssociated( + &l_targetFilter ); + + break; + } + case UTIL_FILTER_PRESENT: + { + // Get all present chips or chiplets + // Present predicate + PredicateHwas l_predPres; + l_predPres.present(true); + // Type predicate + // Set up compound predicate + TARGETING::PredicatePostfixExpr l_presentTargets; + l_presentTargets.push(&l_targetFilter).push(&l_predPres).And(); + // Apply the filter through all targets + TARGETING::targetService().getAssociated( o_vector, i_target, i_association, TARGETING::TargetService::ALL, - &l_targetFilter ); + &l_presentTargets ); + + break; + } + case UTIL_FILTER_FUNCTIONAL: + { + // Use PredicateIsFunctional to filter only functional chips + TARGETING::PredicateIsFunctional l_functional; + TARGETING::PredicatePostfixExpr l_functionalTargets; + l_functionalTargets.push(&l_targetFilter).push(&l_functional).And(); + TARGETING::targetService().getAssociated( + o_vector, + i_target, + i_association, + TARGETING::TargetService::ALL, + &l_functionalTargets ); + break; + } + default: + TARG_ASSERT(0, TARG_LOC "Invalid functional state used"); + break; } + #undef TARG_FN } -void getChildAffinityTargets( +void getChildAffinityTargetsByState( TARGETING::TargetHandleList& o_vector, const Target* i_target, CLASS i_class, TYPE i_type, - bool i_functional) + ResourceState i_state ) + { - getAffinityTargets (o_vector, i_target, i_class, i_type, - TARGETING::TargetService::CHILD_BY_AFFINITY, - i_functional); + + getAffinityTargets(o_vector, i_target, i_class, i_type, i_state, + TargetService::CHILD_BY_AFFINITY); } -void getParentAffinityTargets( +void getParentAffinityTargetsByState( TARGETING::TargetHandleList& o_vector, const Target* i_target, CLASS i_class, TYPE i_type, - bool i_functional ) + ResourceState i_state ) { - getAffinityTargets (o_vector, i_target, i_class, i_type, - TARGETING::TargetService::PARENT_BY_AFFINITY, - i_functional); + getAffinityTargets(o_vector, i_target, i_class, i_type, i_state, + TargetService::PARENT_BY_AFFINITY); } const Target * getParentChip( const Target * i_pChiplet ) |