diff options
| author | Alvin Wang <wangat@tw.ibm.com> | 2019-04-16 10:57:56 -0500 |
|---|---|---|
| committer | Christian R. Geddes <crgeddes@us.ibm.com> | 2019-04-30 11:53:20 -0500 |
| commit | 4ce53f71e9fcf0c22fdb83af31b450db975df233 (patch) | |
| tree | 0c85bb228692dd78965a54f78795af407ff7209d /src/import/generic/procedures | |
| parent | 902e166a98fe9cce8dbf6dc69534f45499c0ab1d (diff) | |
| download | blackbird-hostboot-4ce53f71e9fcf0c22fdb83af31b450db975df233.tar.gz blackbird-hostboot-4ce53f71e9fcf0c22fdb83af31b450db975df233.zip | |
Move power_thermal lib to generic
Change-Id: I2851b7fa990d7e8c5a2d726b650b4e2fc11f3fe7
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/72525
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Dev-Ready: STEPHEN GLANCY <sglancy@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Tested-by: HWSV CI <hwsv-ci+hostboot@us.ibm.com>
Reviewed-by: Louis Stermole <stermole@us.ibm.com>
Reviewed-by: STEPHEN GLANCY <sglancy@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/72845
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com>
Diffstat (limited to 'src/import/generic/procedures')
3 files changed, 377 insertions, 0 deletions
diff --git a/src/import/generic/procedures/xml/attribute_info/generic_memory_eff_attributes.xml b/src/import/generic/procedures/xml/attribute_info/generic_memory_eff_attributes.xml index 1b2e69ea4..60cf77d35 100644 --- a/src/import/generic/procedures/xml/attribute_info/generic_memory_eff_attributes.xml +++ b/src/import/generic/procedures/xml/attribute_info/generic_memory_eff_attributes.xml @@ -621,6 +621,22 @@ </attribute> <attribute> + <id>ATTR_MEM_EFF_DRAM_MODULE_HEIGHT</id> + <targetType>TARGET_TYPE_MEM_PORT</targetType> + <description> + ARRAY[DIMM] + DRAM Modlue Height + Decodes SPD Byte 193 + </description> + <enum>1U = 0, 2U = 1, 4U = 2 </enum> + <initToZero></initToZero> + <valueType>uint8</valueType> + <writeable/> + <array>2</array> + <mssAccessorName>dram_module_height</mssAccessorName> + </attribute> + + <attribute> <id>ATTR_MEM_EFF_RCD_MFG_ID</id> <targetType>TARGET_TYPE_MEM_PORT</targetType> <description> diff --git a/src/import/generic/procedures/xml/attribute_info/generic_memory_mrw_attributes.xml b/src/import/generic/procedures/xml/attribute_info/generic_memory_mrw_attributes.xml index 31ac9b4c0..0230aa2e4 100644 --- a/src/import/generic/procedures/xml/attribute_info/generic_memory_mrw_attributes.xml +++ b/src/import/generic/procedures/xml/attribute_info/generic_memory_mrw_attributes.xml @@ -606,4 +606,136 @@ <mssAccessorName>mrw_supported_dram_width</mssAccessorName> </attribute> + <attribute> + <id>ATTR_MSS_MRW_OCMB_THERMAL_MEMORY_POWER_LIMIT</id> + <targetType>TARGET_TYPE_SYSTEM</targetType> + <description> + Machine Readable Workbook Thermal Memory Power Limit + Used to calculate throttles to be at or under the power limit + Per DIMM basis + KEY (0-21): In order + DIMM_SIZE = bits 0-3, + DIMM_GEN = 4-5, + DIMM_TYPE = 6-8, + DIMM_WIDTH = 9-11, + DIMM_DENSITY = 12-14, + DIMM_STACK_TYPE = 15-16, + DRAM_MFGID = 17-19, + DIMM_HEIGHT = 20-21, + Bits 22-32: Not used + VALUE (bits 32-47) in cW: + OCMB+DRAM thermal power limit per DIMM = 32-47 + </description> + <valueType>uint64</valueType> + <mssUnits>cW</mssUnits> + <default>0xfffffc07940000</default> + <array>25</array> + <platInit/> + <mssAccessorName>mrw_ocmb_thermal_memory_power_limit</mssAccessorName> + </attribute> + + <attribute> + <id>ATTR_MSS_MRW_OCMB_PWR_SLOPE</id> + <targetType>TARGET_TYPE_SYSTEM</targetType> + <description> + Machine Readable Workbook Power Curve Slope for DIMM + Used to get the OCMB+DRAM power curve for each DIMM + Per DIMM basis + KEY (0-21): In order + DIMM_SIZE = bits 0-3, + DIMM_GEN = 4-5, + DIMM_TYPE = 6-8, + DIMM_WIDTH = 9-11, + DIMM_DENSITY = 12-14, + DIMM_STACK_TYPE = 15-16, + DRAM_MFGID = 17-19, + DIMM_HEIGHT = 20-21, + Bits 22-32: Not used + VALUE (bits 32-47) in cW/utilization: + OCMB+DRAM thermal power limit per DIMM = 32-47 + </description> + <valueType>uint64</valueType> + <mssUnits>cW</mssUnits> + <default>0xfffffc00044C0000</default> + <array>50</array> + <platInit/> + <mssAccessorName>mrw_ocmb_pwr_slope</mssAccessorName> + </attribute> + + <attribute> + <id>ATTR_MSS_MRW_OCMB_PWR_INTERCEPT</id> + <targetType>TARGET_TYPE_SYSTEM</targetType> + <description> + Machine Readable Workbook Power Curve Intercept for DIMM + Used to get the OCMB+DRAM power curve for each DIMM + Per DIMM basis + KEY (0-21): In order + DIMM_SIZE = bits 0-3, + DIMM_GEN = 4-5, + DIMM_TYPE = 6-8, + DIMM_WIDTH = 9-11, + DIMM_DENSITY = 12-14, + DIMM_STACK_TYPE = 15-16, + DRAM_MFGID = 17-19, + DIMM_HEIGHT = 20-21, + Bits 22-32: Not used + VALUE (bits 32-47) in cW/utilization: + OCMB+DRAM thermal power limit per DIMM = 32-47 + </description> + <valueType>uint64</valueType> + <mssUnits>cW/utilization</mssUnits> + <default>0xfffffc00044C0000</default> + <array>50</array> + <platInit/> + <mssAccessorName>mrw_ocmb_pwr_intercept</mssAccessorName> + </attribute> + + <attribute> + <id>ATTR_MSS_MRW_OCMB_CURRENT_CURVE_WITH_LIMIT</id> + <targetType>TARGET_TYPE_SYSTEM</targetType> + <description> + Machine Readable Workbook Power Curve Intercept and limit for DIMM + Used to get the PMIC power curve and limit for each DIMM + Per DIMM basis + KEY (0-21): In order + DIMM_SIZE = bits 0-3, + DIMM_GEN = 4-5, + DIMM_TYPE = 6-8, + DIMM_WIDTH = 9-11, + DIMM_DENSITY = 12-14, + DIMM_STACK_TYPE = 15-16, + DRAM_MFGID = 17-19, + DIMM_HEIGHT = 20-21, + Bits 22-32: Not used + VALUE (bits 32-39): Current limit (dA) + VALUE (bits 40-51): Current slope (cA/utilization) + VALUE (bits 52-63): Current intercept (cA) + </description> + <valueType>uint64</valueType> + <mssUnits>dA, cA/utilization, cA</mssUnits> + <default>0xfffffc0000000000</default> + <array>25</array> + <platInit/> + <mssAccessorName>mrw_ocmb_current_curve_with_limit</mssAccessorName> + </attribute> + + <attribute> + <id>ATTR_MSS_MRW_SAFEMODE_DRAM_DATABUS_UTIL</id> + <targetType>TARGET_TYPE_SYSTEM</targetType> + <description> + Machine Readable Workbook value for safe mode dram data bus utilization in centi percent (c%). + Set to below optimum value/ rate. + On a per port basis + Also used for emergency mode throttle + Used to thermally protect the system in all supported environmental conditions when OCC is not functional + Consumer: thermal_init, initfile + Default to 2500 c%% + </description> + <valueType>uint32</valueType> + <default>0x000009C4</default> + <platInit/> + <initToZero/> + <mssAccessorName>mrw_safemode_dram_databus_util</mssAccessorName> + </attribute> + </attributes> diff --git a/src/import/generic/procedures/xml/error_info/generic_error.xml b/src/import/generic/procedures/xml/error_info/generic_error.xml index cec60fdfb..78d852568 100644 --- a/src/import/generic/procedures/xml/error_info/generic_error.xml +++ b/src/import/generic/procedures/xml/error_info/generic_error.xml @@ -440,4 +440,233 @@ </callout> </hwpError> + <hwpError> + <rc>RC_MSS_POWER_INTERCEPT_NOT_SET</rc> + <description> + The attribute ATTR_MSS_TOTAL_POWER_INTERCEPT was not set and equals 0 + </description> + <callout> + <procedure>CODE</procedure> + <priority>HIGH</priority> + </callout> + </hwpError> + + <hwpError> + <rc>RC_MSS_POWER_SLOPE_NOT_SET</rc> + <description> + The attribute ATTR_MSS_TOTAL_POWER_INTERCEPT was not set and equals 0 + </description> + <callout> + <procedure>CODE</procedure> + <priority>HIGH</priority> + </callout> + </hwpError> + + <hwpError> + <rc>RC_MSS_NO_DATABUS_UTILIZATION</rc> + <description> + There are 2 DIMMS on the port but both have 0 databus utilization + </description> + <ffdc>PORT_DATABUS_UTIL</ffdc> + <ffdc>DIMM_COUNT</ffdc> + <callout> + <procedure>CODE</procedure> + <priority>HIGH</priority> + </callout> + </hwpError> + + <hwpError> + <rc>RC_MSS_CALC_POWER_CURVE_DIVIDE_BY_ZERO</rc> + <description> + Denominator equals 0 + </description> + <ffdc>PORT_DATABUS_UTIL</ffdc> + <ffdc>UTIL_CONVERSION</ffdc> + <ffdc>IDLE_UTIL</ffdc> + <ffdc>RESULT</ffdc> + <callout> + <procedure>CODE</procedure> + <priority>HIGH</priority> + </callout> + </hwpError> + + <hwpError> + <rc>RC_MSS_NO_PORT_POWER_LIMIT</rc> + <description> + Got 0 when calculating port power limit. + Either no dimms or attribute MEM_WATT_TARGET wasn't set + </description> + <ffdc>COUNT_DIMMS</ffdc> + <ffdc>PORT_POWER_LIMIT</ffdc> + <callout> + <procedure>CODE</procedure> + <priority>HIGH</priority> + </callout> + </hwpError> + + <hwpError> + <rc>RC_MSS_NO_PORT_POWER</rc> + <description> + Got 0 when calculating port power limits using the DIMMs databus utilization + </description> + <ffdc>COUNT_DIMMS</ffdc> + <ffdc>MAX_UTILIZATION_DIMM_0</ffdc> + <ffdc>MAX_UTILIZATION_DIMM_1</ffdc> + <callout> + <procedure>CODE</procedure> + <priority>HIGH</priority> + </callout> + </hwpError> + + <hwpError> + <rc>RC_MSS_M_DRAM_CLOCKS_EQUALS_ZERO</rc> + <description> + ATTR_MSS_MRW_MEM_M_DRAM_CLOCKS was not set and equals zero + </description> + <callout> + <procedure>CODE</procedure> + <priority>HIGH</priority> + </callout> + </hwpError> + + <hwpError> + <rc>RC_MSS_CALC_PORT_POWER_EXCEEDS_MAX</rc> + <description> + The calculated port power from equalizing throttles exceeds the maximum allowed power + </description> + <ffdc>CALCULATED_PORT_POWER</ffdc> + <ffdc>MAX_POWER_ALLOWED</ffdc> + <ffdc>PORT_POS</ffdc> + <callout> + <procedure>CODE</procedure> + <priority>HIGH</priority> + </callout> + <callout> + <childTargets> + <parent>PORT_TARGET</parent> + <childType>TARGET_TYPE_DIMM</childType> + </childTargets> + <priority>MEDIUM</priority> + </callout> + <deconfigure> + <childTargets> + <parent>PORT_TARGET</parent> + <childType>TARGET_TYPE_DIMM</childType> + </childTargets> + </deconfigure> + </hwpError> + + <hwpError> + <rc>RC_MSS_SLOT_UTIL_EXCEEDS_PORT</rc> + <description> + The memory throttle per slot (DIMM) exceeds the allowed throttle for the port + </description> + <ffdc>SLOT_UTIL</ffdc> + <ffdc>PORT_UTIL</ffdc> + <callout> + <procedure>CODE</procedure> + <priority>HIGH</priority> + </callout> + </hwpError> + + <hwpError> + <rc>RC_MSS_OUTPUT_OVERFLOW_CALC_UTIL</rc> + <description> + Type of output variable is not large enough for the calculations + </description> + <ffdc>RESULT</ffdc> + <callout> + <procedure>CODE</procedure> + <priority>HIGH</priority> + </callout> + </hwpError> + + <hwpError> + <rc>RC_MSS_POWER_THERMAL_DECODE_ERROR</rc> + <description> + There was no match or value found in decoding the power thermal attributes + </description> + <ffdc>DIMM_TARGET</ffdc> + <ffdc>ATTR</ffdc> + <callout> + <procedure>CODE</procedure> + <priority>HIGH</priority> + </callout> + </hwpError> + + <hwpError> + <rc>RC_MSS_MRW_SAFEMODE_UTIL_THROTTLE_NOT_SUPPORTED</rc> + <description> + The MRW safemode utilization that is less than the minimum utilization supported. Check ATTR_MSS_MRW_SAFEMODE_DRAM_DATABUS_UTIL. + </description> + <ffdc>MRW_SAFEMODE_UTIL</ffdc> + <ffdc>MIN_UTIL_VALUE</ffdc> + <callout> + <procedure>CODE</procedure> + <priority>HIGH</priority> + </callout> + </hwpError> + + <hwpError> + <rc>RC_MSS_NO_POWER_THERMAL_ATTR_FOUND</rc> + <description> + There was no match or value found in decoding the power thermal attributes + </description> + <ffdc>GENERATED_KEY</ffdc> + <ffdc>FUNCTION</ffdc> + <ffdc>DIMM_TARGET</ffdc> + <ffdc>SIZE</ffdc> + <ffdc>DRAM_GEN</ffdc> + <ffdc>DIMM_TYPE</ffdc> + <ffdc>DRAM_WIDTH</ffdc> + <ffdc>DRAM_DENSITY</ffdc> + <ffdc>STACK_TYPE</ffdc> + <ffdc>MFGID</ffdc> + <ffdc>MODULE_HEIGHT</ffdc> + <callout> + <procedure>CODE</procedure> + <priority>HIGH</priority> + </callout> + </hwpError> + + <hwpError> + <rc>RC_MSS_POWER_THERMAL_ENCODE_ERROR</rc> + <description> + There was no match or value found in encoding the power thermal attributes + </description> + <ffdc>DIMM_TARGET</ffdc> + <ffdc>ATTR</ffdc> + <callout> + <procedure>CODE</procedure> + <priority>HIGH</priority> + </callout> + </hwpError> + + <hwpError> + <rc>RC_MSS_POWER_THERMAL_ATTR_VECTORS_INCORRECT</rc> + <description> + The attributes vectors size is incorrect for find_xxx functions + </description> + <ffdc>FUNCTION</ffdc> + <ffdc>INPUT_SIZE</ffdc> + <ffdc>EXPECTED_SIZE</ffdc> + <callout> + <procedure>CODE</procedure> + <priority>HIGH</priority> + </callout> + </hwpError> + + <hwpError> + <rc>RC_MSS_POWER_THERMAL_DIMM_INDEX_OUT_OF_BOUND</rc> + <description> + The dimm index is out of bound for the port + </description> + <ffdc>INPUT_SIZE</ffdc> + <ffdc>MAX_SIZE</ffdc> + <callout> + <procedure>CODE</procedure> + <priority>HIGH</priority> + </callout> + </hwpError> + </hwpErrors> |

