summaryrefslogtreecommitdiffstats
path: root/src/usr/ipmi
diff options
context:
space:
mode:
authorRichard J. Knight <rjknight@us.ibm.com>2015-04-13 11:54:12 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2015-07-02 13:28:20 -0500
commite70e9e57950904ae9d137df53961498c3e286295 (patch)
tree664c7a7a30fac28490798720cf7fc41f30a6357c /src/usr/ipmi
parentc71dfd1b9bcfcc6045a1ccf74d3880a490a429ed (diff)
downloadtalos-hostboot-e70e9e57950904ae9d137df53961498c3e286295.tar.gz
talos-hostboot-e70e9e57950904ae9d137df53961498c3e286295.zip
Apply derating factor from sensor value
-Update getPowerLimit command to use the acutal value of the derating factor stored by the BMC. Change-Id: I96d7515764569e10c54dbbbacc878514e6cf9485 RTC:124093 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/18251 Tested-by: Jenkins Server Tested-by: Jenkins OP Build CI Reviewed-by: Brian H. Horton <brianh@linux.ibm.com> Tested-by: Jenkins OP HW Reviewed-by: Brian Silver <bsilver@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/ipmi')
-rw-r--r--src/usr/ipmi/ipmidcmi.C24
1 files changed, 17 insertions, 7 deletions
diff --git a/src/usr/ipmi/ipmidcmi.C b/src/usr/ipmi/ipmidcmi.C
index 94aee18ce..c4e718b81 100644
--- a/src/usr/ipmi/ipmidcmi.C
+++ b/src/usr/ipmi/ipmidcmi.C
@@ -86,15 +86,25 @@ namespace SENSOR
o_powerLimit = data[5];
o_powerLimit = ( o_powerLimit << 8 ) + data[4];
- TRACFCOMP(g_trac_ipmi,"Power limit is %d watts",o_powerLimit);
- TRACFCOMP(g_trac_ipmi,"Power limit is %s", ((cc) ? "not active": "active"));
+ // fetch the derating factor from the BMC, then apply it to
+ // the value returned in the getPowerLimit command
+
+ SENSOR::getSensorReadingData o_sensorData;
- // $TODO RTC:124093 de-rating factor for the power limit will
- // be stored in a sensor, which is not defined currently so
- // hardcode it at 90% efficency per power team suggestion
+ // derating factor is held in the system target
+ SENSOR::SensorBase(
+ TARGETING::SENSOR_NAME_DERATING_FACTOR,
+ NULL ).readSensorData( o_sensorData );
- // derate the power limit to 90% of the input power
- o_powerLimit = ( static_cast<uint32_t>(o_powerLimit) * 9 )/10;
+ // derate the power limit based on the returned value of the
+ // sensor - derating factor is returned as a % value and is
+ // stored in the event_status field.
+ o_powerLimit = ( static_cast<uint64_t>(o_powerLimit) *
+ o_sensorData.event_status)/100;
+
+ TRACFCOMP(g_trac_ipmi,"Derating factor = %i",o_sensorData.event_status);
+ TRACFCOMP(g_trac_ipmi,"Power limit = 0x%i",o_powerLimit);
+ TRACFCOMP(g_trac_ipmi,"Power limit is %s", ((cc) ? "not active": "active"));
// the completion code also tells us if the limit is active
if(l_cc == POWER_LIMIT_ACTIVE )
OpenPOWER on IntegriCloud