From 0ae044ac29cf9eca0d2c7a7c0cb3eec00a0a5f6b Mon Sep 17 00:00:00 2001 From: Prachi Gupta Date: Tue, 29 May 2018 11:21:32 -0500 Subject: add a call to mss_volt_dimm_count hwp Change-Id: I2512149296dbd80e6124c83e66b239ea231b1ef9 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/59476 Disable-CI: Christian R. Geddes Tested-by: Jenkins Server Reviewed-by: Roland Veloz Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Tested-by: FSP CI Jenkins Reviewed-by: Daniel M. Crowell --- src/usr/isteps/istep07/call_mss_volt.C | 148 +++++++++++++++++++-------------- src/usr/isteps/istep07/makefile | 1 + 2 files changed, 85 insertions(+), 64 deletions(-) diff --git a/src/usr/isteps/istep07/call_mss_volt.C b/src/usr/isteps/istep07/call_mss_volt.C index fd63f995a..8a7ae5f6d 100644 --- a/src/usr/isteps/istep07/call_mss_volt.C +++ b/src/usr/isteps/istep07/call_mss_volt.C @@ -62,6 +62,7 @@ #include #include #include +#include namespace ISTEP_07 { @@ -73,6 +74,60 @@ using namespace TARGETING; typedef std::map>> MembufTargetMap_t; typedef std::vector VDDR_ID_vect_t; +/** + * @brief + * A macro that wraps call_mss_volt_hwps used to stringify the FAPI HWP call + * + * @see + * call_mss_volt_hwps below for parameter definitions + */ +#define FAPI_MSS_VOLT_CALL_MACRO(FUNC, MEMBUF_MAP, UNIQUE_VDDRS, STEP_ERROR) \ + call_mss_volt_hwps(FUNC, #FUNC, MEMBUF_MAP, UNIQUE_VDDRS, STEP_ERROR) + +void call_mss_volt_hwps (p9c_mss_volt_FP_t i_mss_volt_hwps, + const char* i_mss_volt_hwp_str, + MembufTargetMap_t & i_membufFapiTargetMap, + VDDR_ID_vect_t & i_unique_vddrs, + IStepError & io_err) +{ + errlHndl_t l_err = NULL; + for (auto & l_vddr : i_unique_vddrs) + { + + TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "Calling %s hwp with list of membuf targets" + " with VDDR_ID=%d, list size=%d", + i_mss_volt_hwp_str, l_vddr, + i_membufFapiTargetMap[l_vddr].size()); + + // p9c_mss_volt.C (vector of centaurs with same VDDR_ID) + FAPI_INVOKE_HWP(l_err, i_mss_volt_hwps, + i_membufFapiTargetMap[l_vddr]); + + // process return code + if ( l_err ) + { + TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "ERROR 0x%.8X: %s HWP() failed", + i_mss_volt_hwp_str, + l_err->reasonCode()); + + // Create IStep error log and cross reference to error + // that occurred + io_err.addErrorDetails(l_err); + + // Commit Error + errlCommit( l_err, HWPF_COMP_ID ); + + } + else + { + TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "SUCCESS : %s HWP", i_mss_volt_hwp_str); + } + } +} + void buildMembufLists(TargetHandleList & i_membufTargetList, MembufTargetMap_t & o_membufFapiTargetMap, VDDR_ID_vect_t & o_unique_vddr_ids) @@ -109,6 +164,7 @@ void buildMembufLists(TargetHandleList & i_membufTargetList, } } + void* call_mss_volt( void *io_pArgs ) { IStepError l_StepError; @@ -126,9 +182,6 @@ void* call_mss_volt( void *io_pArgs ) TargetHandleList l_membufTargetList; getAllChips(l_membufTargetList, TYPE_MEMBUF); - TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "call_mss_volt: %d membuf targets", l_membufTargetList.size()); - if (l_membufTargetList.size() > 0) { @@ -137,71 +190,38 @@ void* call_mss_volt( void *io_pArgs ) buildMembufLists(l_membufTargetList, l_membufFapiTargetMap, l_unique_vddrs); - for (auto & l_vddr : l_unique_vddrs) + FAPI_MSS_VOLT_CALL_MACRO(p9c_mss_volt, + l_membufFapiTargetMap, + l_unique_vddrs, + l_StepError); + if (l_StepError.getErrorHandle()) { + TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, + "ERROR: p9c_mss_volt HWP failed"); + break; + } - TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "Calling p9c_mss_volt on list of membuf targets" - " with VDDR_ID=%d, list size=%d", - l_vddr, - l_membufFapiTargetMap[l_vddr].size()); - - // p9c_mss_volt.C (vector of centaurs with same VDDR_ID) - FAPI_INVOKE_HWP(l_err, p9c_mss_volt, - l_membufFapiTargetMap[l_vddr]); - - // process return code - if ( l_err ) - { - TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "ERROR 0x%.8X: p9c_mss_volt HWP() failed", - l_err->reasonCode()); - - // Create IStep error log and cross reference to error - // that occurred - l_StepError.addErrorDetails(l_err); - - // Commit Error - errlCommit( l_err, HWPF_COMP_ID ); - - } - else - { - TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "SUCCESS : p9c_mss_volt HWP"); - } - - TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "Calling p9c_mss_volt_vddr_offset on list of membuf " - "targets with VDDR_ID=%d, list size=%d", - l_vddr, - l_membufFapiTargetMap[l_vddr].size()); - - // p9c_mss_volt_vddr_offset.C (vector of centaurs) - FAPI_INVOKE_HWP(l_err, p9c_mss_volt_vddr_offset, - l_membufFapiTargetMap[l_vddr]); - - // process return code - if ( l_err ) - { - TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "ERROR 0x%.8X: p9c_mss_volt_vddr_offset HWP failed", - l_err->reasonCode()); - - // Create IStep error log and cross reference to error - // that occurred - l_StepError.addErrorDetails(l_err); - - // Commit Error - errlCommit( l_err, HWPF_COMP_ID ); - } - else - { - TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "SUCCESS : p9c_mss_volt_vddr_offset HWP"); - } + FAPI_MSS_VOLT_CALL_MACRO(p9c_mss_volt_vddr_offset, + l_membufFapiTargetMap, + l_unique_vddrs, + l_StepError); + if (l_StepError.getErrorHandle()) + { + TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, + "ERROR: p9c_mss_volt_vddr_offset HWP failed"); + break; } + FAPI_MSS_VOLT_CALL_MACRO(p9c_mss_volt_dimm_count, + l_membufFapiTargetMap, + l_unique_vddrs, + l_StepError); + if (l_StepError.getErrorHandle()) + { + TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, + "ERROR: p9c_mss_volt_vddr_offset HWP failed"); + break; + } } else { diff --git a/src/usr/isteps/istep07/makefile b/src/usr/isteps/istep07/makefile index 2ad985616..144f4c1a0 100644 --- a/src/usr/isteps/istep07/makefile +++ b/src/usr/isteps/istep07/makefile @@ -77,6 +77,7 @@ include ${ROOTPATH}/procedure.rules.mk include $(HWP_PATH_1)/p9_mss_volt.mk include $(HWP_PATH_2)/p9c_mss_volt.mk include $(HWP_PATH_2)/p9c_mss_volt_vddr_offset.mk +include $(HWP_PATH_2)/p9c_mss_volt_dimm_count.mk include $(HWP_PATH_2)/mss_dynamic_vid_utils.mk #mss_freq : Calc dimm frequency -- cgit v1.2.3