From 74c20caefdab7f7aa9268dd3f359f2038cee8ccf Mon Sep 17 00:00:00 2001 From: Bill Schwartz Date: Wed, 30 Jan 2013 16:30:42 -0600 Subject: FAPI Interface to get the target on the other side of the DMI bus Add new fapiGetOtherSideOfMemChannel function Replace getAffinityChips with more general getChildAffinityTargets and added getParentAffinityTargets to find MCS from Centaur. RTC: 61987 Change-Id: I772ef95452215c54fdfab98998507e6db5a862d0 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/3062 Tested-by: Jenkins Server Reviewed-by: ADAM R. MUHLE Reviewed-by: MIKE J. JONES Reviewed-by: A. Patrick Williams III --- src/usr/hwpf/hwp/dmi_training/dmi_training.C | 9 +- src/usr/hwpf/hwp/fapiHwpErrorInfo.xml | 7 +- src/usr/hwpf/hwp/fapiTestHwpConfig.C | 138 ++++++++++++++++----------- src/usr/hwpf/hwp/mc_config/mc_config.C | 3 +- 4 files changed, 98 insertions(+), 59 deletions(-) (limited to 'src/usr/hwpf/hwp') diff --git a/src/usr/hwpf/hwp/dmi_training/dmi_training.C b/src/usr/hwpf/hwp/dmi_training/dmi_training.C index 1bd2c4667..9d966470e 100644 --- a/src/usr/hwpf/hwp/dmi_training/dmi_training.C +++ b/src/usr/hwpf/hwp/dmi_training/dmi_training.C @@ -400,7 +400,8 @@ void* call_dmi_erepair( void *io_pArgs ) ATTR_CHIP_UNIT_type l_mcsNum = l_mcs_target->getAttr(); // find all the Centaurs that are associated with this MCS - getAffinityChips(l_memTargetList, l_mcs_target, TYPE_MEMBUF); + getChildAffinityTargets(l_memTargetList, l_mcs_target, + CLASS_CHIP, TYPE_MEMBUF); if(l_memTargetList.size() != EREPAIR_MAX_CENTAUR_PER_MCS) { @@ -822,7 +823,8 @@ void* call_proc_cen_framelock( void *io_pArgs ) // find all the Centaurs that are associated with this MCS TARGETING::TargetHandleList l_memTargetList; - getAffinityChips(l_memTargetList, l_mcs_target, TYPE_MEMBUF); + getChildAffinityTargets(l_memTargetList, l_mcs_target, + CLASS_CHIP, TYPE_MEMBUF); for (TargetHandleList::const_iterator l_mem_iter = l_memTargetList.begin(); @@ -1038,7 +1040,8 @@ void get_dmi_io_targets(TargetPairs_t& o_dmi_io_targets) // find all the Centaurs that are associated with this MCS TARGETING::TargetHandleList l_memTargetList; - getAffinityChips(l_memTargetList, l_mcs_target, TYPE_MEMBUF); + getChildAffinityTargets(l_memTargetList, l_mcs_target, + CLASS_CHIP, TYPE_MEMBUF); for ( TargetHandleList::const_iterator l_iterMemBuf = l_memTargetList.begin(); diff --git a/src/usr/hwpf/hwp/fapiHwpErrorInfo.xml b/src/usr/hwpf/hwp/fapiHwpErrorInfo.xml index c101ab0a3..ff91a801a 100644 --- a/src/usr/hwpf/hwp/fapiHwpErrorInfo.xml +++ b/src/usr/hwpf/hwp/fapiHwpErrorInfo.xml @@ -5,7 +5,7 @@ - + @@ -147,4 +147,9 @@ HWP Attribute Unit Test failed + + RC_TEST_WRONG_MCS_RETURNED + HWP Config Unit Test returned wrong MCS for memory buffer + + diff --git a/src/usr/hwpf/hwp/fapiTestHwpConfig.C b/src/usr/hwpf/hwp/fapiTestHwpConfig.C index dfd290f96..f01811356 100644 --- a/src/usr/hwpf/hwp/fapiTestHwpConfig.C +++ b/src/usr/hwpf/hwp/fapiTestHwpConfig.C @@ -5,7 +5,7 @@ /* */ /* IBM CONFIDENTIAL */ /* */ -/* COPYRIGHT International Business Machines Corp. 2011,2012 */ +/* COPYRIGHT International Business Machines Corp. 2011,2013 */ /* */ /* p1 */ /* */ @@ -58,61 +58,91 @@ fapi::ReturnCode hwpTestConfig(const fapi::Target & i_chip) fapi::ReturnCode l_rc; std::vector l_targets; - // Call fapiGetChildChiplets to get the child MCS chiplets - l_rc = fapiGetChildChiplets(i_chip, fapi::TARGET_TYPE_MCS_CHIPLET, + do { + + // Call fapiGetChildChiplets to get the child MCS chiplets + l_rc = fapiGetChildChiplets(i_chip, fapi::TARGET_TYPE_MCS_CHIPLET, l_targets); - if (l_rc) - { - FAPI_ERR("hwpTestConfig: Error from fapiGetChildChiplets"); - } - else - { - FAPI_INF("hwpTestConfig: %d MCS chiplets", l_targets.size()); - - if (l_targets.size() == 0) - { - FAPI_ERR("hwpTestConfig: No MCS chiplets"); - FAPI_SET_HWP_ERROR(l_rc, RC_TEST_CONFIG_NO_MCS_CHIPLETS); - } - else - { - // Save the first MCS target - fapi::Target l_mcs = l_targets[0]; - - // Call fapiGetAssociatedDimms to get the dimms for this MCS - l_rc = fapiGetAssociatedDimms(l_mcs, l_targets); - - if (l_rc) - { - FAPI_ERR("hwpTestConfig: Error from fapiGetAssociatedDimms"); - } - else - { - FAPI_INF("hwpTestConfig: %d dimms", l_targets.size()); - - // Call fapiGetParentChip to get the parent of the MCS - fapi::Target l_chip; - - l_rc = fapiGetParentChip(l_mcs, l_chip); - - if (l_rc) - { - FAPI_ERR("hwpTestConfig: Error from fapiGetParentChip"); - } - else - { - // Check that the parent chip is is same as the input chip - if (i_chip != l_chip) - { - FAPI_ERR("hwpTestConfig: Chip mismatch"); - FAPI_SET_HWP_ERROR(l_rc, - RC_TEST_CONFIG_PARENT_CHIP_MISMATCH); - } - } - } - } - } + if (l_rc) + { + FAPI_ERR("hwpTestConfig: Error from fapiGetChildChiplets"); + break; + } + + FAPI_INF("hwpTestConfig: %d MCS chiplets", l_targets.size()); + + if (l_targets.size() == 0) + { + FAPI_ERR("hwpTestConfig: No MCS chiplets"); + FAPI_SET_HWP_ERROR(l_rc, RC_TEST_CONFIG_NO_MCS_CHIPLETS); + break; + } + + // Save the first MCS target + fapi::Target l_mcs = l_targets[0]; + + // Call fapiGetAssociatedDimms to get the dimms for this MCS + l_rc = fapiGetAssociatedDimms(l_mcs, l_targets); + + if (l_rc) + { + FAPI_ERR("hwpTestConfig: Error from fapiGetAssociatedDimms"); + break; + } + + FAPI_INF("hwpTestConfig: %d dimms", l_targets.size()); + + // Call fapiGetParentChip to get the parent of the MCS + fapi::Target l_chip; + + l_rc = fapiGetParentChip(l_mcs, l_chip); + + if (l_rc) + { + FAPI_ERR("hwpTestConfig: Error from fapiGetParentChip"); + break; + } + + // Check that the parent chip is is same as the input chip + if (i_chip != l_chip) + { + FAPI_ERR("hwpTestConfig: Chip mismatch"); + FAPI_SET_HWP_ERROR(l_rc, RC_TEST_CONFIG_PARENT_CHIP_MISMATCH); + break; + } + + // Call fapiGetOtherSideOfDmiBus to get mem buffer + fapi::Target l_mb; + fapi::Target l_mcs2; + + FAPI_INF("hwpTestConfig: mcs: %s", l_mcs.toEcmdString()); + + l_rc = fapiGetOtherSideOfMemChannel(l_mcs, l_mb); + if (l_rc) + { + FAPI_ERR("hwpTestConfig: Error from fapiGetOtherSideOfDmiBus"); + break; + } + FAPI_INF("hwpTestConfig: mem buf: %s", l_mb.toEcmdString()); + + // Call fapiGetOtherSideOfDmiBus to get back to the same mcs + l_rc = fapiGetOtherSideOfMemChannel(l_mb, l_mcs2); + if (l_rc) + { + FAPI_ERR("hwpTestConfig: Error from fapiGetOtherSideOfDmiBus"); + break; + } + FAPI_INF("hwpTestConfig: mcs: %s", l_mcs2.toEcmdString()); + + if (l_mcs != l_mcs2) + { + FAPI_ERR("hwpTestConfig: fapiGetOtherSideOfDmiBus wrong mcs"); + FAPI_SET_HWP_ERROR(l_rc, RC_TEST_WRONG_MCS_RETURNED); + break; + } + + } while (0); FAPI_INF("hwpTestConfig: End HWP"); return l_rc; diff --git a/src/usr/hwpf/hwp/mc_config/mc_config.C b/src/usr/hwpf/hwp/mc_config/mc_config.C index f6c122256..35c2a30f3 100644 --- a/src/usr/hwpf/hwp/mc_config/mc_config.C +++ b/src/usr/hwpf/hwp/mc_config/mc_config.C @@ -307,7 +307,8 @@ errlHndl_t call_mss_eff_grouping() (const_cast(l_cpu_target)) ); TARGETING::TargetHandleList l_membufsList; - getAffinityChips(l_membufsList, l_cpu_target, TYPE_MEMBUF); + getChildAffinityTargets(l_membufsList, l_cpu_target, + CLASS_CHIP, TYPE_MEMBUF); std::vector l_associated_centaurs; for (TargetHandleList::const_iterator -- cgit v1.2.1