diff options
author | Bill Schwartz <whs@us.ibm.com> | 2015-01-14 07:16:20 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2015-01-23 08:06:52 -0600 |
commit | 3e6cdd074bc5a55cda9e33d35826a273867dcfcf (patch) | |
tree | 4f36c21fde68a1adde5f44071cc1fc9fbb9ea8e3 /src/usr/hwpf/hwp/dram_training | |
parent | f02bf2dcef902ffa506b7f3742205bb44e42df66 (diff) | |
download | talos-hostboot-3e6cdd074bc5a55cda9e33d35826a273867dcfcf.tar.gz talos-hostboot-3e6cdd074bc5a55cda9e33d35826a273867dcfcf.zip |
Back out "Only Calculate ISDIMM Power Curves if needed"
Decided not to use mss_dimm_power_test to calculate power curves
for ISDIMMs
Change-Id: I1f714d9d619bc714ff851da4a406709a2a21e3d6
RTC: 67641
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/15129
Tested-by: Jenkins Server
Reviewed-by: Brian H. Horton <brianh@linux.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/hwpf/hwp/dram_training')
4 files changed, 4 insertions, 621 deletions
diff --git a/src/usr/hwpf/hwp/dram_training/dram_training.C b/src/usr/hwpf/hwp/dram_training/dram_training.C index a37f238d8..a6d996033 100644 --- a/src/usr/hwpf/hwp/dram_training/dram_training.C +++ b/src/usr/hwpf/hwp/dram_training/dram_training.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2012,2014 */ +/* Contributors Listed Below - COPYRIGHT 2012,2015 */ /* [+] Google Inc. */ /* [+] International Business Machines Corp. */ /* */ @@ -37,7 +37,6 @@ // Includes /******************************************************************************/ #include <stdint.h> -#include <map> #include <trace/interface.H> #include <initservice/taskargs.H> @@ -79,7 +78,6 @@ const uint8_t VPO_NUM_OF_MEMBUF_TO_RUN = UNLIMITED_RUN; #include "mss_draminit_training/mss_draminit_training.H" #include "mss_draminit_trainadv/mss_draminit_training_advanced.H" #include "mss_draminit_mc/mss_draminit_mc.H" -#include "mss_dimm_power_test/mss_dimm_power_test.H" #include "proc_throttle_sync.H" namespace DRAM_TRAINING @@ -804,159 +802,6 @@ void* call_mss_draminit_mc( void *io_pArgs ) } // -// support functions for mss_dimm_power_test wrapper -// -typedef bool (*mss_dimm_power_test_helper_t) (TARGETING::Target*, bool &); - -// helper function to set the change bit for present non-functional targets -bool mss_dimm_power_test_set (TARGETING::Target* i_target, - bool &o_keepChecking) -{ - bool l_changed = false; - o_keepChecking = true; - - if ((!i_target->getAttr<ATTR_HWAS_STATE>().functional) && - (i_target->getAttr<ATTR_HWAS_STATE>().present)) - { - TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "===== membuf %.8x non func change flag set", - get_huid(i_target)); - - update_hwas_changed_mask( i_target, - HWAS_CHANGED_BIT_DIMM_POWER_TEST); - - l_changed = true; - } - return l_changed; -} - -// helper function to check if change bit set, stop checking if found -bool mss_dimm_power_test_check (TARGETING::Target* i_target, - bool &o_keepChecking) -{ - bool l_changed = false; - o_keepChecking = true; - - ATTR_HWAS_STATE_CHANGED_FLAG_type hwChangeFlag; - hwChangeFlag=i_target->getAttr<ATTR_HWAS_STATE_CHANGED_FLAG>(); - - if(HWAS_CHANGED_BIT_DIMM_POWER_TEST & hwChangeFlag) - { - TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "===== membuf %.8x change flag set", - get_huid(i_target)); - l_changed = true; - o_keepChecking = false; - } - return l_changed; -}; - -// helpfer function to clear any set change bits -bool mss_dimm_power_test_clear (TARGETING::Target* i_target, - bool &o_keepChecking) -{ - bool l_changed = false; - o_keepChecking = true; - - ATTR_HWAS_STATE_CHANGED_FLAG_type hwChangeFlag; - hwChangeFlag=i_target->getAttr<ATTR_HWAS_STATE_CHANGED_FLAG>(); - - if(HWAS_CHANGED_BIT_DIMM_POWER_TEST & hwChangeFlag) - { - TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "===== membuf %.8x clear set change bit", - get_huid(i_target)); - - clear_hwas_changed_bit( i_target, - HWAS_CHANGED_BIT_DIMM_POWER_TEST); - - l_changed = true; - } - return l_changed; -}; - -// Process change bits on Membuf, MBA, and associated DIMMs -// i_membufTargetList - list of membufs to transverse -// i_cmd - mss_dimm_power_test_cmds - -enum mss_dimm_power_test_cmds -{ - MSS_DIMM_POWER_TEST_SETNONFUNCTIONAL, //set change if present non-functional - // return true if any are set - MSS_DIMM_POWER_TEST_CHECK, //check if any change bits set - // return true if any set - MSS_DIMM_POWER_TEST_CLEAR, //clear all change bits - // return true if any cleared -}; -bool mss_dimm_power_test_process_change_bits ( - TARGETING::TargetHandleList * i_pMembufTargetList, - mss_dimm_power_test_cmds i_cmd) -{ - bool l_change = false; // return value. Found any? - bool l_keepChecking = true; // loop exit control - mss_dimm_power_test_helper_t (l_pFunction) = &mss_dimm_power_test_check; - - bool l_functional = true; //default to functional search - - // set up function controls - switch (i_cmd) - { - case MSS_DIMM_POWER_TEST_SETNONFUNCTIONAL: - l_functional = false; // get all targets, not just functional - l_pFunction = &mss_dimm_power_test_set; - break; - case MSS_DIMM_POWER_TEST_CHECK: - l_pFunction = &mss_dimm_power_test_check; - break; - case MSS_DIMM_POWER_TEST_CLEAR: - l_pFunction = &mss_dimm_power_test_clear; - break; - } - - // process membufs and downstream MBAs and DIMMs - for (TargetHandleList::const_iterator - l_membuf_iter = (*i_pMembufTargetList).begin(); - l_membuf_iter != (*i_pMembufTargetList).end(); - ++l_membuf_iter) - { - l_change |= (*l_pFunction) (*l_membuf_iter,l_keepChecking); - if (!l_keepChecking) break; - - // process MBAs and downstream DIMMs - TARGETING::TargetHandleList l_mbaTargetList; - getChildAffinityTargets(l_mbaTargetList,*l_membuf_iter, - CLASS_UNIT,TYPE_MBA, - l_functional); - for (TargetHandleList::const_iterator - l_mba_iter = l_mbaTargetList.begin(); - l_mba_iter != l_mbaTargetList.end(); - ++l_mba_iter) - { - l_change |= (*l_pFunction) (*l_mba_iter,l_keepChecking); - if (!l_keepChecking) break; - - // process DIMMs - TARGETING::TargetHandleList l_dimmTargetList; - getChildAffinityTargets(l_dimmTargetList, *l_mba_iter, - CLASS_LOGICAL_CARD, TYPE_DIMM, - l_functional); - for (TargetHandleList::const_iterator - l_dimm_iter = l_dimmTargetList.begin(); - l_dimm_iter != l_dimmTargetList.end(); - ++l_dimm_iter) - { - l_change |= (*l_pFunction) (*l_dimm_iter,l_keepChecking); - if (!l_keepChecking) break; - } // loop on DIMMS associated with MBA - if (!l_keepChecking) break; // no need to check any further - } // loop on MBAs off membuf - if (!l_keepChecking) break; // no need to check any further - } // loop on passed mem buf list - - return l_change; -} - -// // Wrapper function to call mss_dimm_power_test // void* call_mss_dimm_power_test( void *io_pArgs ) @@ -964,194 +809,12 @@ void* call_mss_dimm_power_test( void *io_pArgs ) TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_mss_dimm_power_test entry" ); - IStepError l_stepError; - - errlHndl_t l_err = NULL; - //---------------------------------------------------------------------- - // only calculate the ISDIMM power curves if needed. - // The version of the calculation algorithm and dependent attribute - // values are hashed and saved to see if anything has changed. - // If the saved version has changed, then a recalcuation is advised. - // If hardware has changed, then recalcuation is advised. - //---------------------------------------------------------------------- - do - { - uint32_t l_persistentAlgorithmVersion = ALGORITHM_RESET; - uint32_t l_hwpAlgorithmVersion = ALGORITHM_RESET; - bool l_versionChange = false; - bool l_anyCalculationErrors = false; - - // Get saved algorithm version - TargetHandle_t top = 0; - targetService().getTopLevelTarget(top); - - l_persistentAlgorithmVersion = - top->getAttr<TARGETING::ATTR_ISDIMM_POWER_CURVE_ALGORITHM_VERSION>(); - - TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "call_mss_dimm_power_test entry persistent algorithm version=%d", - l_persistentAlgorithmVersion ); - - // Get current hwp algorithm version - std::vector<fapi::Target> l_membufFapiTargets; - bool l_dc = false; - FAPI_INVOKE_HWP ( l_err, - mss_dimm_power_test, - l_membufFapiTargets, // empty list - RETURN_ALGORITHM_VERSION, - l_hwpAlgorithmVersion, - l_dc) // don't care parm - if (l_err) - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "ERROR 0x%.8X: call_mss_dimm_power_test HWP get version error", - l_err->reasonCode()); - // Create IStep error log and cross reference error that occurred - l_stepError.addErrorDetails(l_err); - // Commit Error - errlCommit(l_err, HWPF_COMP_ID); - - break; // fail istep - } - TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "call_mss_dimm_power_test entry hwp algorithm version=%d", - l_hwpAlgorithmVersion ); - - // advise hwp to recalculate if stored version does not match current - l_versionChange = l_persistentAlgorithmVersion != l_hwpAlgorithmVersion; - - //---------------------------------------------------------------------- - // Set the change bit for all present non-functional Membufs, MBA, and - // DIMMs. In case they come back, want to be sure to recalculate - //---------------------------------------------------------------------- - TARGETING::TargetHandleList l_membufTargetList; - getAllChips(l_membufTargetList, TYPE_MEMBUF,false); - - mss_dimm_power_test_process_change_bits ( - &l_membufTargetList, - MSS_DIMM_POWER_TEST_SETNONFUNCTIONAL); - - l_membufTargetList.clear(); - - //---------------------------------------------------------------------- - // Call mss_dimm_power_test with lists of fucntional mem buffs that - // the have the same vmem id. - // For each group, check for hardware changes - //---------------------------------------------------------------------- - getAllChips(l_membufTargetList, TYPE_MEMBUF,true); //just functional - - // Build a map of unique vmem ids to the list of mem buffs with that - // vmem id. - std::map<ATTR_VMEM_ID_type,TARGETING::TargetHandleList> - l_vmemidTargetlistMap; - for (TargetHandleList::const_iterator - l_membuf_iter = l_membufTargetList.begin(); - l_membuf_iter != l_membufTargetList.end(); - ++l_membuf_iter) - { - TARGETING::ATTR_VMEM_ID_type l_VmemID = - (*l_membuf_iter)->getAttr<ATTR_VMEM_ID>(); - - l_vmemidTargetlistMap[l_VmemID].push_back(*l_membuf_iter); - - } - - // For the subset list of mem buffs for each unique vmem id, - // check for hw changes on those targets (membuf, MBA, - // DIMMs). Then call the hwp to calculate the power curve, advising - // if the algorithm version has changed or if there are hw changes. - std::map<ATTR_VMEM_ID_type,TARGETING::TargetHandleList>::iterator - l_vmemidItr; - for (l_vmemidItr = l_vmemidTargetlistMap.begin(); - l_vmemidItr != l_vmemidTargetlistMap.end(); - ++l_vmemidItr) - { - std::vector<fapi::Target> l_membufFapiTargets; // to pass to hwp - TARGETING::TargetHandleList * l_pMembufSubsetList = - &(l_vmemidItr->second);//list of membufs for this vmem id - - // make a list of fapi targets to pass to the hwp - for (TargetHandleList::const_iterator - l_membuf_iter = (*l_pMembufSubsetList).begin(); - l_membuf_iter != (*l_pMembufSubsetList).end(); - ++l_membuf_iter) - { - - fapi::Target l_membuf_fapi_target - (fapi::TARGET_TYPE_MEMBUF_CHIP, - (const_cast<TARGETING::Target*>(*l_membuf_iter)) ); - - l_membufFapiTargets.push_back( l_membuf_fapi_target ); - } - - // check for hw changes - bool l_hwChange = mss_dimm_power_test_process_change_bits ( - l_pMembufSubsetList, - MSS_DIMM_POWER_TEST_CHECK); - - // advise recalculation when: - // 1) The stored algorthim and dependencies have changed - // 2) Hardware has changed - bool l_recalc = l_hwChange || l_versionChange; - - uint32_t l_dc = ALGORITHM_RESET; - FAPI_INVOKE_HWP ( l_err, - mss_dimm_power_test, - l_membufFapiTargets, //list of membufs - CALCULATE, - l_dc, // don't care about version parm - l_recalc); - if ( l_err ) - { - l_anyCalculationErrors = true; // don't update algorithm version - - TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "ERROR 0x%.8X: from mss_dimm_power_test HWP( ) ", - l_err->reasonCode()); - - // Create IStep error log and cross reference - // to error that occurred - l_stepError.addErrorDetails( l_err ); - - // Commit Error, and keep going - errlCommit( l_err, HWPF_COMP_ID ); - } - else - { - // success, so clear change flags if any set - if (l_hwChange) - { - mss_dimm_power_test_process_change_bits ( - l_pMembufSubsetList, - MSS_DIMM_POWER_TEST_CLEAR); - } - } - - } // for each unique vme_id - - //---------------------------------------------------------------------- - // If there have not been any errors, update the saved - // algorithm version. - //---------------------------------------------------------------------- - - if (!l_anyCalculationErrors && - (l_persistentAlgorithmVersion != l_hwpAlgorithmVersion) ) - { - top->setAttr<TARGETING::ATTR_ISDIMM_POWER_CURVE_ALGORITHM_VERSION> - (l_hwpAlgorithmVersion); - - TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "call_mss_dimm_power_test set persistent algorithm version=%d", - l_hwpAlgorithmVersion ); - } - - } while (0); - +// This istep is a place holder TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_mss_dimm_power_test exit" ); - return l_stepError.getErrorHandle(); + return NULL; } }; // end namespace diff --git a/src/usr/hwpf/hwp/dram_training/makefile b/src/usr/hwpf/hwp/dram_training/makefile index 4e378005e..73dc13bc0 100644 --- a/src/usr/hwpf/hwp/dram_training/makefile +++ b/src/usr/hwpf/hwp/dram_training/makefile @@ -5,7 +5,7 @@ # # OpenPOWER HostBoot Project # -# Contributors Listed Below - COPYRIGHT 2012,2014 +# Contributors Listed Below - COPYRIGHT 2012,2015 # [+] Google Inc. # [+] International Business Machines Corp. # @@ -54,7 +54,6 @@ EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/dram_training/mss_scominit EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/dram_training/mem_pll_setup EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/dram_training/mss_draminit_trainadv EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build -EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/dram_training/mss_dimm_power_test EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/dram_training/mss_lrdimm_funcs EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/dram_training/cen_stopclocks EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/dram_initialization/proc_throttle_sync @@ -77,7 +76,6 @@ OBJS += mss_generic_shmoo.o OBJS += mss_mcbist.o OBJS += mss_mcbist_common.o OBJS += mss_mcbist_address.o -OBJS += mss_dimm_power_test.o OBJS += mss_lrdimm_funcs.o OBJS += cen_stopclocks.o @@ -87,7 +85,6 @@ OBJS += $(if $(CONFIG_PALMETTO_VDDR),palmetto_vddr.o, hbVddrMsg.o) ## NOTE: add a new directory onto the vpaths when you add a new HWP ##@ VPATH += ${ROOTPATH}/src/usr/hwpf/hwp/??? -VPATH += ${ROOTPATH}/src/usr/hwpf/hwp/dram_training/mss_dimm_power_test VPATH += ${ROOTPATH}/src/usr/hwpf/hwp/dram_training/mss_draminit_training VPATH += ${ROOTPATH}/src/usr/hwpf/hwp/dram_training/mss_draminit_mc VPATH += ${ROOTPATH}/src/usr/hwpf/hwp/dram_training/mss_draminit diff --git a/src/usr/hwpf/hwp/dram_training/mss_dimm_power_test/mss_dimm_power_test.C b/src/usr/hwpf/hwp/dram_training/mss_dimm_power_test/mss_dimm_power_test.C deleted file mode 100644 index e3156b45e..000000000 --- a/src/usr/hwpf/hwp/dram_training/mss_dimm_power_test/mss_dimm_power_test.C +++ /dev/null @@ -1,157 +0,0 @@ -/* IBM_PROLOG_BEGIN_TAG */ -/* This is an automatically generated prolog. */ -/* */ -/* $Source: src/usr/hwpf/hwp/dram_training/mss_dimm_power_test/mss_dimm_power_test.C $ */ -/* */ -/* OpenPOWER HostBoot Project */ -/* */ -/* Contributors Listed Below - COPYRIGHT 2013,2014 */ -/* [+] International Business Machines Corp. */ -/* */ -/* */ -/* Licensed under the Apache License, Version 2.0 (the "License"); */ -/* you may not use this file except in compliance with the License. */ -/* You may obtain a copy of the License at */ -/* */ -/* http://www.apache.org/licenses/LICENSE-2.0 */ -/* */ -/* Unless required by applicable law or agreed to in writing, software */ -/* distributed under the License is distributed on an "AS IS" BASIS, */ -/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ -/* implied. See the License for the specific language governing */ -/* permissions and limitations under the License. */ -/* */ -/* IBM_PROLOG_END_TAG */ -// $Id: mss_dimm_power_test.C,v 1.4 2014/09/08 21:15:02 whs Exp $ -// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/centaur/working/procedures/ipl/fapi/mss_dimm_power_test.C,v $ -//------------------------------------------------------------------------------ -// *! (C) Copyright International Business Machines Corp. 2011 -// *! All Rights Reserved -- Property of IBM -// *! *** *** -//------------------------------------------------------------------------------ -// *! TITLE : mss_dimm_power_test -// *! DESCRIPTION : see additional comments below -// *! OWNER NAME : Joab Henderson Email: joabhend@us.ibm.com -// *! BACKUP NAME : Michael Pardeik Email: pardeik@us.ibm.com -// *! ADDITIONAL COMMENTS : -// -// DESCRIPTION: -// The purpose of this procedure is to run an insitu power test on ISDIMMs to determine max power draw -// -// TODO: -// -//------------------------------------------------------------------------------ -// Don't forget to create CVS comments when you check in your changes! -//------------------------------------------------------------------------------ -// CHANGE HISTORY: -//------------------------------------------------------------------------------ -// Version:| Author: | Date: | Comment: -//---------|----------|---------|----------------------------------------------- -// 1.1 | joabhend |04-APR-13| Shell code - Only returns success -// 1.2 | whs |27-AUG-14| Update Shell to new interface - - - -//---------------------------------------------------------------------- -// Includes -//---------------------------------------------------------------------- -#include <mss_dimm_power_test.H> -#include <fapi.H> - -extern "C" { - - using namespace fapi; - - - // Procedures in this file -fapi::ReturnCode mss_dimm_power_test( - std::vector<fapi::Target> & i_targets, - const mss_dimm_power_test_command i_command, - uint32_t &io_version, - bool i_recalc); -//****************************************************************************** -// -//****************************************************************************** -fapi::ReturnCode mss_dimm_power_test( - std::vector<fapi::Target> & i_targets, - const mss_dimm_power_test_command i_command, - uint32_t &io_version, - bool i_recalc) -{ - fapi::ReturnCode l_rc = fapi::FAPI_RC_SUCCESS; - - - FAPI_IMP ("mss_dimm_power_test command=%d",i_command); - switch (i_command) - { - - // return calculation dependencies hashed into an algorithm version - case RETURN_ALGORITHM_VERSION: - { - struct calculation_dependencies // example dependencies - { - uint8_t mrwDimmPowerCurvePercentUplift; - uint32_t mrwMemThrottleDenominator; - uint32_t mrwMaxDramDataBusUtil; - uint32_t algorithmVersion; - } cd; - - io_version = ALGORITHM_RESET; // initialize to invalid version - - l_rc = FAPI_ATTR_GET(ATTR_MRW_DIMM_POWER_CURVE_PERCENT_UPLIFT, - NULL, cd.mrwDimmPowerCurvePercentUplift); - if (l_rc) break; // exit with error - - l_rc = FAPI_ATTR_GET(ATTR_MRW_MEM_THROTTLE_DENOMINATOR, - NULL, cd.mrwMemThrottleDenominator); - if (l_rc) break; // exit with error - - l_rc = FAPI_ATTR_GET(ATTR_MRW_MAX_DRAM_DATABUS_UTIL, - NULL, cd.mrwMaxDramDataBusUtil); - if (l_rc) break; // exit with error - - cd.algorithmVersion = ALGORITHM_VERSION; - - // Hwp writer: insert hash of dependent attributes - // and version here .. - // io_verion = FAPI_GEN_HASH(FAPI::HASH::CRC32, - // cd, - // sizeof(cd); - io_version = ALGORITHM_VERSION; // fake return value for testing - // Hwp writer: replace with - // hashed value. - } - break; - - // calculate power curves if advised due to algorithm change or hw - // change. Validate existing values if not advised, and recalculate - // if necessary. - case CALCULATE: - { - bool l_recalc = i_recalc; - // validate values if not advised to recalculate - if (!l_recalc) - { - // Hwp writer: insert validation here - FAPI_DBG ("mss_dimm_power_test validate power curves"); - l_recalc = true; //if necessary to recalculate - } - if (l_recalc) - { - //Hwp writer: insert calculation of power curve values - FAPI_DBG ("mss_dimm_power_test calculate power curves"); - } - } - break; - default: - { - FAPI_ERR ("mss_dimm_power_test unexpected command %d", - i_command); - // Hwp writer: l_rc = error - } - } - return l_rc; -} - -} //end extern C - diff --git a/src/usr/hwpf/hwp/dram_training/mss_dimm_power_test/mss_dimm_power_test.H b/src/usr/hwpf/hwp/dram_training/mss_dimm_power_test/mss_dimm_power_test.H deleted file mode 100644 index 8ee67e7f5..000000000 --- a/src/usr/hwpf/hwp/dram_training/mss_dimm_power_test/mss_dimm_power_test.H +++ /dev/null @@ -1,120 +0,0 @@ -/* IBM_PROLOG_BEGIN_TAG */ -/* This is an automatically generated prolog. */ -/* */ -/* $Source: src/usr/hwpf/hwp/dram_training/mss_dimm_power_test/mss_dimm_power_test.H $ */ -/* */ -/* OpenPOWER HostBoot Project */ -/* */ -/* Contributors Listed Below - COPYRIGHT 2013,2014 */ -/* [+] International Business Machines Corp. */ -/* */ -/* */ -/* Licensed under the Apache License, Version 2.0 (the "License"); */ -/* you may not use this file except in compliance with the License. */ -/* You may obtain a copy of the License at */ -/* */ -/* http://www.apache.org/licenses/LICENSE-2.0 */ -/* */ -/* Unless required by applicable law or agreed to in writing, software */ -/* distributed under the License is distributed on an "AS IS" BASIS, */ -/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ -/* implied. See the License for the specific language governing */ -/* permissions and limitations under the License. */ -/* */ -/* IBM_PROLOG_END_TAG */ -// $Id: mss_dimm_power_test.H,v 1.2 2014/08/27 20:13:20 whs Exp $ -// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/centaur/working/procedures/ipl/fapi/mss_dimm_power_test.H,v $ -//------------------------------------------------------------------------------ -// *! (C) Copyright International Business Machines Corp. 2011 -// *! All Rights Reserved -- Property of IBM -// *! *** *** -//------------------------------------------------------------------------------ -// *! TITLE : mss_throttle_to_power.H -// *! DESCRIPTION : see additional comments below -// *! OWNER NAME : Joab Henderson Email: joabhend@us.ibm.com -// *! BACKUP NAME : Michael Pardeik Email: pardeik@us.ibm.com -// *! ADDITIONAL COMMENTS : -// -// Header file for mss_dimm_power_test. -// -//------------------------------------------------------------------------------ -// Don't forget to create CVS comments when you check in your changes! -//------------------------------------------------------------------------------ -// CHANGE HISTORY: -//------------------------------------------------------------------------------ -// Version:| Author: | Date: | Comment: -//---------|----------|---------|----------------------------------------------- -// 1.1 | joabhend |04-APR-13| First Draft. -// 1.2 | whs |27-AUG-14| Update Shell to new interface - - -#ifndef MSS_DIMM_POWER_TEST_H_ -#define MSS_DIMM_POWER_TEST_H_ - -//---------------------------------------------------------------------- -// Includes -//---------------------------------------------------------------------- -#include <fapi.H> - -//---------------------------------------------------------------------- -// Defines -//---------------------------------------------------------------------- - - const uint32_t ALGORITHM_RESET = 0; // invalid algorithm version - - // change this value for each new algorithm version - const uint32_t ALGORITHM_VERSION = 1; - -//---------------------------------------------------------------------- -// ENUMs -//---------------------------------------------------------------------- - - enum mss_dimm_power_test_command - { - RETURN_ALGORITHM_VERSION, // return hwp algorithm version - CALCULATE, // calculate and save power curve - }; - -//---------------------------------------------------------------------- -// Data Types -//---------------------------------------------------------------------- - -typedef fapi::ReturnCode (*mss_dimm_power_test_FP_t) - (std::vector<fapi::Target> &, - const mss_dimm_power_test_command i_command, - uint32_t &io_version, - bool i_recalc); - -extern "C" -{ - -/** - * @brief mss_dimm_power_test procedure. Run power test on ISDIMMs to determine max power draw - * - * @param[in] std::vector<fapi::Target> l_targets Reference to vector - * of Centaur Targets in a particular power domain - * RETURN_ALGORITHM_VERSION - empty list - * CALCULATE - list of mem buff targets with same vme_id - * @param[in] i_command mss_dimm_power_test_command - * @param[in,out] io_version - * RETURN_ALGORITHM_VERSION -input is persistent algorithm version - * output is current hwp algorithm version - * CALCULATE - NA - * @param[in] i_recalc advise a recalculation - * RETURN_ALGORITHM_VERSION - NA - * CALCULATE - true: versions don't match or hardware has changed - false: versions match and no hardware has changed - * - * @return ReturnCode - */ - - fapi::ReturnCode mss_dimm_power_test( - std::vector<fapi::Target> & i_targets, - const mss_dimm_power_test_command i_command, - uint32_t &io_version, - bool i_recalc); - - -} // extern "C" - -#endif // MSS_DIMM_POWER_TEST_H_ |