summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSheldon Bailey <baileysh@us.ibm.com>2017-12-05 14:30:00 -0600
committerDaniel M. Crowell <dcrowell@us.ibm.com>2017-12-13 16:20:53 -0500
commit4809fbff915f920b9e0793e4604dfcc56b166507 (patch)
tree0520b03fe0c5ae4567532293f91dc11ddf8fec0a /src
parent4296f39725506f741ac4ceb8f3564c01dade7f2b (diff)
downloadtalos-hostboot-4809fbff915f920b9e0793e4604dfcc56b166507.tar.gz
talos-hostboot-4809fbff915f920b9e0793e4604dfcc56b166507.zip
HTMGT: Updates for reporting throttle below nominal on Boston
Change-Id: Ie8ce3d93d23b06c0a1939a1f5cdcebfad88acc13 RTC:181699 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/50660 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Reviewed-by: Christopher J. Cain <cjcain@us.ibm.com> Reviewed-by: Martha Broyles <mbroyles@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src')
-rw-r--r--src/usr/htmgt/htmgt.C18
-rw-r--r--src/usr/htmgt/htmgt_cfgdata.C23
-rw-r--r--src/usr/htmgt/htmgt_cfgdata.H4
-rw-r--r--src/usr/htmgt/htmgt_utility.H2
-rw-r--r--src/usr/targeting/common/xmltohb/attribute_types_openpower.xml50
-rw-r--r--src/usr/targeting/common/xmltohb/target_types_openpower.xml1
6 files changed, 77 insertions, 21 deletions
diff --git a/src/usr/htmgt/htmgt.C b/src/usr/htmgt/htmgt.C
index cf2190d07..462c38cce 100644
--- a/src/usr/htmgt/htmgt.C
+++ b/src/usr/htmgt/htmgt.C
@@ -652,12 +652,12 @@ namespace HTMGT
//0 = disable OPAL mode (i.e. run as PowerVM)
if (i_cmdData[1] == 0)
{
- G_opalMode = OCC_CFGDATA_OPENPOWER_POWERVM;
+ G_system_type = OCC_CFGDATA_OPENPOWER_POWERVM;
}
//1 = enable OPAL mode
else if (i_cmdData[1] == 1)
{
- G_opalMode = OCC_CFGDATA_OPENPOWER_OPALVM;
+ G_system_type = OCC_CFGDATA_OPENPOWER_OPALVM;
}
else
{
@@ -669,26 +669,26 @@ namespace HTMGT
* @moduleid HTMGT_MOD_PASS_THRU
* @userdata1 command data[0-7]
* @userdata2 command data length
- * @devdesc Invalid pass thru command
+ * @devdesc Invalid pass thru command data
*/
failingSrc = HTMGT_RC_INVALID_PARAMETER;
}
if(failingSrc == HTMGT_RC_NO_ERROR)
{
- TMGT_INF("passThruCommand: OCC State set(0x%02X)"
- " RESET-OCC ", G_opalMode );
+ TMGT_INF("passThruCommand: OPAL State(0x%02X), "
+ "resetting PM Complex", G_system_type);
err = OccManager::resetOccs(nullptr,true,true);
if(err)
{
- TMGT_ERR("passThruCommand: OCC MODE change "
- "Reset PM Complex FAIL with rc 0x%04X",
- err->reasonCode());
+ TMGT_ERR("passThruCommand: PM Complex Reset "
+ "failed with rc 0x%04X after updating "
+ "OPAL state", err->reasonCode());
}
}
}
else
{
- TMGT_ERR("passThruCommand: invalid OCC State "
+ TMGT_ERR("passThruCommand: invalid OPAL State "
"length %d", i_cmdLength);
failingSrc = HTMGT_RC_INVALID_LENGTH;
}
diff --git a/src/usr/htmgt/htmgt_cfgdata.C b/src/usr/htmgt/htmgt_cfgdata.C
index 457aee9dd..59c6c855e 100644
--- a/src/usr/htmgt/htmgt_cfgdata.C
+++ b/src/usr/htmgt/htmgt_cfgdata.C
@@ -44,7 +44,7 @@ namespace HTMGT
{
bool G_wofSupported = true;
- uint8_t G_opalMode = OCC_CFGDATA_OPENPOWER_OPALVM;
+ uint8_t G_system_type = OCC_CFGDATA_OPENPOWER_OPALVM;
// Send config format data to all OCCs
void sendOccConfigData(const occCfgDataFormat i_requestedFormat)
@@ -775,7 +775,24 @@ void getSystemConfigMessageData(const TargetHandle_t i_occ, uint8_t* o_data,
o_data[index++] = OCC_CFGDATA_SYS_CONFIG_VERSION;
//System Type
- o_data[index++] = G_opalMode;
+ uint8_t l_throttle_below_nominal = 0;
+ if(!sys->tryGetAttr
+ <ATTR_REPORT_THROTTLE_BELOW_NOMINAL>(l_throttle_below_nominal))
+ {
+ l_throttle_below_nominal = 0; // attr does not exist, disable
+ }
+ if (l_throttle_below_nominal == 1)
+ {
+ //1=OCC report throttling only when max frequency lowered below nominal
+ G_system_type |= OCC_REPORT_THROTTLE_BELOW_NOMINAL;
+ }
+ else
+ {
+ //0=OCC report throttling when max frequency lowered below turbo
+ G_system_type &= ~OCC_REPORT_THROTTLE_BELOW_NOMINAL;
+ }
+ o_data[index++] = G_system_type;
+
//processor Callout Sensor ID
ConstTargetHandle_t proc = getParentChip(i_occ);
@@ -791,7 +808,7 @@ void getSystemConfigMessageData(const TargetHandle_t i_occ, uint8_t* o_data,
TMGT_INF("getSystemConfigMessageData: systemType: 0x%02X, "
"procSensor: 0x%04X, %d cores, %d nodes",
- G_opalMode, SensorID1, cores.size(), nodes.size());
+ G_system_type, SensorID1, cores.size(), nodes.size());
for (uint64_t core=0; core<CFGDATA_CORES; core++)
{
diff --git a/src/usr/htmgt/htmgt_cfgdata.H b/src/usr/htmgt/htmgt_cfgdata.H
index de950d44d..d5091257d 100644
--- a/src/usr/htmgt/htmgt_cfgdata.H
+++ b/src/usr/htmgt/htmgt_cfgdata.H
@@ -68,6 +68,10 @@ namespace HTMGT
//PowerVM mode + single node
OCC_CFGDATA_OPENPOWER_POWERVM = 0x01,
+ //Mask, report throttling only when max frequency lowered below nominal
+ OCC_REPORT_THROTTLE_BELOW_NOMINAL = 0x08, //Bit 3
+ //else, OCC report throttling when max frequency lowered below turbo
+
CFGDATA_CORES = 24,
CFGDATA_FRU_TYPE_PROC = 0x00,
diff --git a/src/usr/htmgt/htmgt_utility.H b/src/usr/htmgt/htmgt_utility.H
index 0ffc63e7f..3b4606c35 100644
--- a/src/usr/htmgt/htmgt_utility.H
+++ b/src/usr/htmgt/htmgt_utility.H
@@ -113,7 +113,7 @@ namespace HTMGT
extern uint32_t G_debug_data;
// Global to set OCC into OpalVM or PowerVM mode
- extern uint8_t G_opalMode; //defined in htmgt_cfgdata.C
+ extern uint8_t G_system_type; //defined in htmgt_cfgdata.C
enum debugTraceTypes
diff --git a/src/usr/targeting/common/xmltohb/attribute_types_openpower.xml b/src/usr/targeting/common/xmltohb/attribute_types_openpower.xml
index a52beb013..d7f25baec 100644
--- a/src/usr/targeting/common/xmltohb/attribute_types_openpower.xml
+++ b/src/usr/targeting/common/xmltohb/attribute_types_openpower.xml
@@ -1305,17 +1305,51 @@ ID for the sensor number returned with the elog. -->
<readable/>
</attribute>
+<attribute>
+ <id>REPORT_THROTTLE_BELOW_NOMINAL</id>
+ <description>
+ Indicates if OCC should wait to report DVFS due to power/thermal until
+ max frequency has been lowered below nominal.
+ Default OCC will report DVFS when max frequency is lowered below turbo.
+ DVFS is reported in poll response extended status bits and in OPAL
+ shared memory throttle status byte.
+ 1 = OCC report throttling only when max freq. lowered below nominal
+ 0 = OCC report throttling when max freq. lowered below turbo
+ </description>
+ <simpleType>
+ <uint8_t><default>0</default></uint8_t>
+ </simpleType>
+ <persistency>non-volatile</persistency>
+ <readable/>
+</attribute>
+
<!-- end HTMGT attributes -->
<attribute>
- <id>MSS_UTIL_N_PER_MBA</id>
- <description>cfg_nm_n_per_mba throttle N value that was calculated from MSS_DATABUS_UTIL_PER_MBA</description>
- <simpleType>
- <uint32_t></uint32_t>
- </simpleType>
- <persistency>volatile-zeroed</persistency>
- <readable/>
- <writeable/>
+ <id>MRW_SAFEMODE_MEM_THROTTLE_NUMERATOR_PER_CHIP</id>
+ <description>
+ Machine Readable Workbook safe mode throttle value for
+ numerator cfg_nm_n_per_chip
+ </description>
+ <simpleType>
+ <uint32_t></uint32_t>
+ </simpleType>
+ <persistency>non-volatile</persistency>
+ <readable/>
+</attribute>
+
+<attribute>
+ <id>MSS_UTIL_N_PER_MBA</id>
+ <description>
+ cfg_nm_n_per_mba throttle N value that was calculated from
+ MSS_DATABUS_UTIL_PER_MBA
+ </description>
+ <simpleType>
+ <uint32_t></uint32_t>
+ </simpleType>
+ <persistency>volatile-zeroed</persistency>
+ <readable/>
+ <writeable/>
</attribute>
<attribute>
diff --git a/src/usr/targeting/common/xmltohb/target_types_openpower.xml b/src/usr/targeting/common/xmltohb/target_types_openpower.xml
index 8ad5f2f3c..aaf06a358 100644
--- a/src/usr/targeting/common/xmltohb/target_types_openpower.xml
+++ b/src/usr/targeting/common/xmltohb/target_types_openpower.xml
@@ -101,6 +101,7 @@
<attribute><id>PROC_SOCKET_POWER_WATTS</id></attribute>
<attribute><id>PROC_MHZ_PER_WATT</id></attribute>
<attribute><id>ALLOW_CALLHOME_ESELS_TO_BMC</id></attribute>
+ <attribute><id>REPORT_THROTTLE_BELOW_NOMINAL</id></attribute>
</targetTypeExtension>
<targetTypeExtension>
OpenPOWER on IntegriCloud