From fe09e7b9d29b238b07f8d1017fc0c195843c654f Mon Sep 17 00:00:00 2001 From: Michael Pardeik Date: Tue, 1 Oct 2019 15:55:23 -0500 Subject: exp_mss_eff_config_thermal fixes Fix pwr_throttles call for thermal throttle type Fix equalize throttles call for power throttling type Updates to handle DDIMM and non-DDIMM differences Clarify related power and thermal MRW attribute descriptions Change-Id: I34ecfd4bbb97f1e74c258a474e0b5daf3a4dcbbb Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/84620 Tested-by: FSP CI Jenkins Tested-by: Jenkins Server Dev-Ready: STEPHEN GLANCY Tested-by: HWSV CI Tested-by: Hostboot CI Reviewed-by: STEPHEN GLANCY Reviewed-by: Mark Pizzutillo Reviewed-by: Jennifer A Stofer Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/84699 Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Reviewed-by: Christian R Geddes --- .../hwp/memory/lib/mss_attribute_accessors.H | 63 ++++++++++++---------- .../hwp/memory/lib/power_thermal/throttle.H | 1 + 2 files changed, 37 insertions(+), 27 deletions(-) (limited to 'src/import/chips/p9/procedures/hwp') diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/mss_attribute_accessors.H b/src/import/chips/p9/procedures/hwp/memory/lib/mss_attribute_accessors.H index 8b94c3460..709d3af1b 100644 --- a/src/import/chips/p9/procedures/hwp/memory/lib/mss_attribute_accessors.H +++ b/src/import/chips/p9/procedures/hwp/memory/lib/mss_attribute_accessors.H @@ -21532,12 +21532,13 @@ fapi_try_exit: /// @note Generated by gen_accessors.pl generateParameters (SYSTEM A) /// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK /// @note 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 +/// to meet the thermal power per DIMM limit Per DIMM basis, uses first matching KEY +/// entry 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: thermal power limit DDIMM: Total OCMB+DRAM power limit per DDIMM +/// non-DDIMM: VMEM+VPP power limit per +/// DIMM /// inline fapi2::ReturnCode mrw_ocmb_thermal_memory_power_limit(uint64_t* o_array) { @@ -21559,13 +21560,14 @@ fapi_try_exit: /// @param[out] uint64_t* memory to store the value /// @note Generated by gen_accessors.pl generateParameters (SYSTEM A) /// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK -/// @note 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 +/// @note Machine Readable Workbook Power Curve Slope for DIMM Used to calculate thermal +/// throttles and port power Per DIMM basis, uses first matching KEY entry 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: DIMM power slope DDIMM: Total OCMB+DRAM power slope per DDIMM +/// non-DDIMM: VMEM+VPP power slope per +/// DIMM /// inline fapi2::ReturnCode mrw_ocmb_pwr_slope(uint64_t* o_array) { @@ -21586,13 +21588,14 @@ fapi_try_exit: /// @param[out] uint64_t* memory to store the value /// @note Generated by gen_accessors.pl generateParameters (SYSTEM A) /// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK -/// @note 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 +/// @note Machine Readable Workbook Power Curve Intercept for DIMM Used to calculate +/// thermal throttles and port power Per DIMM basis, uses first matching KEY entry +/// 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: DIMM power intercept DDIMM: Total OCMB+DRAM power intercept per +/// DDIMM non-DDIMM: VMEM+VPP power intercept per +/// DIMM /// inline fapi2::ReturnCode mrw_ocmb_pwr_intercept(uint64_t* o_array) { @@ -21613,13 +21616,19 @@ fapi_try_exit: /// @param[out] uint64_t* memory to store the value /// @note Generated by gen_accessors.pl generateParameters (SYSTEM A) /// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK -/// @note 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) +/// @note Machine Readable Workbook Current Curve Intercept and limit for DIMM Used to +/// calculate throttles to meet regulator current per DIMM limit Per DIMM basis, +/// uses first matching KEY entry For DDIMM, use PMIC SW output that provides worst +/// case throttling 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) DDIMM: PMIC output current limit per DDIMM non-DDIMM: +/// VMEM regulator current limit per DIMM VALUE (bits 40-51): Current slope +/// (cA/utilization) DDIMM: PMIC output current slope per DDIMM non-DDIMM: VMEM +/// regulator current slope per DIMM VALUE (bits 52-63): Current intercept (cA) +/// DDIMM: PMIC output current intercept per DDIMM non-DDIMM: VMEM regulator current +/// intercept per +/// DIMM /// inline fapi2::ReturnCode mrw_ocmb_current_curve_with_limit(uint64_t* o_array) { diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/power_thermal/throttle.H b/src/import/chips/p9/procedures/hwp/memory/lib/power_thermal/throttle.H index 20152398e..bfc978492 100644 --- a/src/import/chips/p9/procedures/hwp/memory/lib/power_thermal/throttle.H +++ b/src/import/chips/p9/procedures/hwp/memory/lib/power_thermal/throttle.H @@ -41,6 +41,7 @@ #include #include #include +#include #include namespace mss -- cgit v1.2.1