From f60ed56caccfebc5f5baa4259fac5f2767571852 Mon Sep 17 00:00:00 2001 From: Thi Tran Date: Sat, 6 Sep 2014 07:56:02 -0500 Subject: SW276810: Integrate HWPs to use new power curve attribute CQ:SW276810 Change-Id: Iad64f8cf1bfdb0c0b83e050f659249dbd89da0de Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/13185 Reviewed-by: Richard J. Knight Tested-by: William H. Schwartz Reviewed-by: Thi N. Tran Tested-by: Thi N. Tran Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/13189 Reviewed-by: A. Patrick Williams III Tested-by: Jenkins Server --- .../mc_config/mss_eff_config/mss_throttle_to_power.C | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'src/usr/hwpf/hwp/mc_config') diff --git a/src/usr/hwpf/hwp/mc_config/mss_eff_config/mss_throttle_to_power.C b/src/usr/hwpf/hwp/mc_config/mss_eff_config/mss_throttle_to_power.C index 231ac3aea..f73143a40 100644 --- a/src/usr/hwpf/hwp/mc_config/mss_eff_config/mss_throttle_to_power.C +++ b/src/usr/hwpf/hwp/mc_config/mss_eff_config/mss_throttle_to_power.C @@ -22,7 +22,7 @@ /* permissions and limitations under the License. */ /* */ /* IBM_PROLOG_END_TAG */ -// $Id: mss_throttle_to_power.C,v 1.14 2014/06/02 13:10:49 pardeik Exp $ +// $Id: mss_throttle_to_power.C,v 1.15 2014/08/28 21:56:28 pardeik Exp $ // $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/ // centaur/working/procedures/ipl/fapi/mss_throttle_to_power.C,v $ //------------------------------------------------------------------------------ @@ -49,6 +49,7 @@ //------------------------------------------------------------------------------ // Version:| Author: | Date: | Comment: //---------|----------|---------|----------------------------------------------- +// 1.15 | pardeik |27-AUG-14| use new power curve uplift attribute for idle // 1.14 | pardeik |21-MAY-14| Fixed power calculations // 1.13 | jdsloat |10-MAR-14| Edited comments // 1.12 | pardeik |06-JAN-14| added dimm power curve uplift from MRW @@ -220,7 +221,9 @@ extern "C" { float l_channel_power_array[MAX_NUM_PORTS]; uint32_t l_channel_power_array_integer[MAX_NUM_PORTS]; uint32_t l_channel_pair_power_integer; + float l_uplift; uint8_t l_power_curve_percent_uplift; + uint8_t l_power_curve_percent_uplift_idle; uint32_t l_max_dram_databus_util; uint8_t num_mba_with_dimms; uint8_t custom_dimm; @@ -228,6 +231,7 @@ extern "C" { std::vector target_mba_array; std::vector target_dimm_array; uint8_t mba_index; + uint8_t l_utilization_idle = 0; // get input attributes @@ -243,6 +247,12 @@ extern "C" { FAPI_ERR("Error getting attribute ATTR_MRW_DIMM_POWER_CURVE_PERCENT_UPLIFT"); return rc; } + rc = FAPI_ATTR_GET(ATTR_MRW_DIMM_POWER_CURVE_PERCENT_UPLIFT_IDLE, + NULL, l_power_curve_percent_uplift_idle); + if (rc) { + FAPI_ERR("Error getting attribute ATTR_MRW_DIMM_POWER_CURVE_PERCENT_UPLIFT_IDLE"); + return rc; + } rc = FAPI_ATTR_GET(ATTR_MSS_POWER_SLOPE, &i_target_mba, l_power_slope_array); if (rc) { @@ -414,18 +424,19 @@ extern "C" { } // Get dimm power in integer format (add on 1 since value will get truncated) // Include any system uplift here too + l_uplift = ( (l_power_curve_percent_uplift - l_power_curve_percent_uplift_idle) / (MAX_UTIL - l_utilization_idle) ) * l_utilization + l_power_curve_percent_uplift_idle; if (l_dimm_power_array[l_port][l_dimm] > 0) { l_dimm_power_array[l_port][l_dimm] = l_dimm_power_array[l_port][l_dimm] - * (1 + (float)l_power_curve_percent_uplift / 100); + * (1 + l_uplift / 100); l_dimm_power_array_integer[l_port][l_dimm] = (int)l_dimm_power_array[l_port][l_dimm] + 1; } // calculate channel power by adding up the power of each dimm l_channel_power_array[l_port] = l_channel_power_array[l_port] + l_dimm_power_array[l_port][l_dimm]; - FAPI_DBG("[P%d:D%d][CH Util %4.2f/%4.2f][Slope:Int %d:%d][UpliftPercent %d][Power %4.2f cW]", l_port, l_dimm, l_utilization, MAX_UTIL, l_power_slope_array[l_port][l_dimm], l_power_int_array[l_port][l_dimm], l_power_curve_percent_uplift, l_dimm_power_array[l_port][l_dimm]); + FAPI_DBG("[P%d:D%d][CH Util %4.2f/%4.2f][Slope:Int %d:%d][UpliftPercent %4.2f (min/max %d/%d)][Power %4.2f cW]", l_port, l_dimm, l_utilization, MAX_UTIL, l_power_slope_array[l_port][l_dimm], l_power_int_array[l_port][l_dimm], l_uplift, l_power_curve_percent_uplift_idle, l_power_curve_percent_uplift, l_dimm_power_array[l_port][l_dimm]); } FAPI_DBG("[P%d][Power %4.2f cW]", l_port, l_channel_power_array[l_port]); } -- cgit v1.2.1