summaryrefslogtreecommitdiffstats
path: root/src/usr/hwpf/hwp/mc_config
diff options
context:
space:
mode:
authorThi Tran <thi@us.ibm.com>2014-09-06 07:56:02 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-09-16 12:54:02 -0500
commitf60ed56caccfebc5f5baa4259fac5f2767571852 (patch)
tree73b5e030dc5dd739b1800bdc33f0a033dbd82f0b /src/usr/hwpf/hwp/mc_config
parentaf6b57dcb79e522d6a4e140f7952f58b3419cee1 (diff)
downloadtalos-hostboot-f60ed56caccfebc5f5baa4259fac5f2767571852.tar.gz
talos-hostboot-f60ed56caccfebc5f5baa4259fac5f2767571852.zip
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 <rjknight@us.ibm.com> Tested-by: William H. Schwartz <whs@us.ibm.com> Reviewed-by: Thi N. Tran <thi@us.ibm.com> Tested-by: Thi N. Tran <thi@us.ibm.com> Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/13189 Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com> Tested-by: Jenkins Server
Diffstat (limited to 'src/usr/hwpf/hwp/mc_config')
-rw-r--r--src/usr/hwpf/hwp/mc_config/mss_eff_config/mss_throttle_to_power.C17
1 files changed, 14 insertions, 3 deletions
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<fapi::Target> target_mba_array;
std::vector<fapi::Target> 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]);
}
OpenPOWER on IntegriCloud