From b403e6730f5ccbb9e065d49496b964a753cd02c2 Mon Sep 17 00:00:00 2001 From: Andre Marin Date: Fri, 16 Aug 2019 13:51:47 -0400 Subject: Clean up for p10 porting dependency errors CMVC-Coreq: 1094420 Change-Id: I02b8dfab08121d4ac9ffbb7dedd37f7083bf527f Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/81543 Dev-Ready: STEPHEN GLANCY Tested-by: Jenkins Server Tested-by: FSP CI Jenkins Tested-by: PPE CI Reviewed-by: STEPHEN GLANCY Reviewed-by: Louis Stermole Tested-by: Hostboot CI Tested-by: HWSV CI Reviewed-by: Jennifer A Stofer Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/82367 Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Reviewed-by: Daniel M Crowell --- .../hwp/memory/exp_mss_eff_config_thermal.C | 18 +++---- .../hwp/memory/lib/power_thermal/exp_decoder.C | 48 ++++++++--------- .../hwp/memory/lib/mss_attribute_accessors.H | 22 ++++++++ .../xml/attribute_info/memory_mcs_attributes.xml | 12 ----- .../xml/error_info/p9_memory_mss_eff_config.xml | 60 ---------------------- .../generic/memory/lib/utils/dimm/mss_timing.H | 4 +- .../generic/memory/lib/utils/mc/gen_mss_port.H | 2 +- .../memory/lib/utils/power_thermal/gen_decoder.H | 18 +++---- .../memory/lib/utils/power_thermal/gen_throttle.H | 10 ++-- .../generic_memory_mrw_attributes.xml | 14 +++++ .../procedures/xml/error_info/generic_error.xml | 60 ++++++++++++++++++++++ 11 files changed, 147 insertions(+), 121 deletions(-) (limited to 'src') diff --git a/src/import/chips/ocmb/explorer/procedures/hwp/memory/exp_mss_eff_config_thermal.C b/src/import/chips/ocmb/explorer/procedures/hwp/memory/exp_mss_eff_config_thermal.C index a261faa19..1891eb75e 100644 --- a/src/import/chips/ocmb/explorer/procedures/hwp/memory/exp_mss_eff_config_thermal.C +++ b/src/import/chips/ocmb/explorer/procedures/hwp/memory/exp_mss_eff_config_thermal.C @@ -129,15 +129,15 @@ extern "C" // Set the thermal power throttle //Set the PMIC current slope, intercept and limit - mss::power_thermal::get_power_attrs (l_throttle_type, - l_port, - l_thermal_power_slope_v, - l_thermal_power_intecept_v, - l_thermal_power_limit_v, - l_current_curve_with_limit_v, - l_slope, - l_intercept, - l_limit); + FAPI_TRY( mss::power_thermal::get_power_attrs (l_throttle_type, + l_port, + l_thermal_power_slope_v, + l_thermal_power_intecept_v, + l_thermal_power_limit_v, + l_current_curve_with_limit_v, + l_slope, + l_intercept, + l_limit) ); FAPI_TRY(mss::attr::set_total_pwr_slope(l_port, l_slope)); FAPI_TRY(mss::attr::set_total_pwr_intercept(l_port, l_intercept)); diff --git a/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/power_thermal/exp_decoder.C b/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/power_thermal/exp_decoder.C index 709a1989f..3411bc1d3 100644 --- a/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/power_thermal/exp_decoder.C +++ b/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/power_thermal/exp_decoder.C @@ -86,16 +86,16 @@ fapi2::ReturnCode decoder::find_slope ( 2); // To get thermal power slope - get_power_thermal_value( - *i_slope[0], - "ATTR_MSS_MRW_OCMB_THERMAL_MEMORY_PWR_SLOPE", - iv_total_slope); + FAPI_TRY( (get_power_thermal_value( + *i_slope[0], + "ATTR_MSS_MRW_OCMB_THERMAL_MEMORY_PWR_SLOPE", + iv_total_slope)) ); // To get power slope - get_power_thermal_value( - *i_slope[1], - "ATTR_MSS_MRW_OCMB_CURRENT_CURVE_WITH_LIMIT", - iv_vddr_slope); + FAPI_TRY( (get_power_thermal_value( + *i_slope[1], + "ATTR_MSS_MRW_OCMB_CURRENT_CURVE_WITH_LIMIT", + iv_vddr_slope)) ); fapi_try_exit: return fapi2::current_err; @@ -126,16 +126,16 @@ fapi2::ReturnCode decoder::find_intercept ( 2); // To get thermal power intercept - get_power_thermal_value( - *i_intercept[0], - "ATTR_MSS_MRW_OCMB_POWER_INTERCEPT", - iv_total_intercept); + FAPI_TRY( (get_power_thermal_value( + *i_intercept[0], + "ATTR_MSS_MRW_OCMB_POWER_INTERCEPT", + iv_total_intercept)) ); // To get power intercept - get_power_thermal_value( - *i_intercept[1], - "ATTR_MSS_MRW_OCMB_CURRENT_CURVE_WITH_LIMIT", - iv_vddr_intercept); + FAPI_TRY( (get_power_thermal_value( + *i_intercept[1], + "ATTR_MSS_MRW_OCMB_CURRENT_CURVE_WITH_LIMIT", + iv_vddr_intercept)) ); fapi_try_exit: return fapi2::current_err; @@ -167,16 +167,16 @@ fapi2::ReturnCode decoder::find_thermal_power_limit ( 2); // To get thermal power limit - get_power_thermal_value( - *i_thermal_limits[0], - "ATTR_MSS_MRW_OCMB_THERMAL_MEMORY_POWER_LIMIT", - iv_thermal_power_limit); + FAPI_TRY( (get_power_thermal_value( + *i_thermal_limits[0], + "ATTR_MSS_MRW_OCMB_THERMAL_MEMORY_POWER_LIMIT", + iv_thermal_power_limit)) ); // To get power intercept - get_power_thermal_value( - *i_thermal_limits[1], - "ATTR_MSS_MRW_OCMB_CURRENT_CURVE_WITH_LIMIT", - iv_power_limit); + FAPI_TRY( (get_power_thermal_value( + *i_thermal_limits[1], + "ATTR_MSS_MRW_OCMB_CURRENT_CURVE_WITH_LIMIT", + iv_power_limit)) ); fapi_try_exit: return fapi2::current_err; 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 d41445265..8b94c3460 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 @@ -21661,6 +21661,28 @@ fapi_try_exit: return fapi2::current_err; } +/// +/// @brief ATTR_MEM_PORT_POS_OF_FAIL_THROTTLE getter +/// @param[out] uint64_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note This is the fapi position of the port that failed to calculate memory throttles +/// given the passed in watt target and or +/// utilization +/// +inline fapi2::ReturnCode port_pos_of_fail_throttle(uint64_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MEM_PORT_POS_OF_FAIL_THROTTLE, fapi2::Target(), + o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_MEM_PORT_POS_OF_FAIL_THROTTLE: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + } diff --git a/src/import/chips/p9/procedures/xml/attribute_info/memory_mcs_attributes.xml b/src/import/chips/p9/procedures/xml/attribute_info/memory_mcs_attributes.xml index 0a3c2e2b4..fd10554ce 100644 --- a/src/import/chips/p9/procedures/xml/attribute_info/memory_mcs_attributes.xml +++ b/src/import/chips/p9/procedures/xml/attribute_info/memory_mcs_attributes.xml @@ -1177,18 +1177,6 @@ mem_throttled_n_commands_per_port - - ATTR_MSS_MEM_PORT_POS_OF_FAIL_THROTTLE - TARGET_TYPE_SYSTEM - - This is the fapi position of the port that failed to calculate - memory throttles given the passed in watt target and or utilization - - - uint64 - - - ATTR_MSS_MEM_M_DRAM_CLOCKS TARGET_TYPE_MCS diff --git a/src/import/chips/p9/procedures/xml/error_info/p9_memory_mss_eff_config.xml b/src/import/chips/p9/procedures/xml/error_info/p9_memory_mss_eff_config.xml index 4bd96d9f7..8569812a9 100644 --- a/src/import/chips/p9/procedures/xml/error_info/p9_memory_mss_eff_config.xml +++ b/src/import/chips/p9/procedures/xml/error_info/p9_memory_mss_eff_config.xml @@ -245,20 +245,6 @@ - - RC_MSS_INVALID_FREQ_PASSED_IN - - An invalid Freq value has been set - - FREQ - FUNCTION - DIMM_TARGET - - CODE - HIGH - - - RC_MSS_ERROR_CREATING_EFF_CONFIG_DIMM_OBJECT @@ -382,52 +368,6 @@ - - RC_MSS_INVALID_PAGE_SIZE - - Invalid page size - - DRAM_WIDTH - - MEMORY_PLUGGING_ERROR - HIGH - - - DIMM_TARGET - MEDIUM - - - DIMM_TARGET - - - CODE - MEDIUM - - - - - RC_MSS_INVALID_DRAM_WIDTH - - Code only supports x4 and x8 drams at this time - - DRAM_WIDTH - - MEMORY_PLUGGING_ERROR - HIGH - - - DIMM_TARGET - MEDIUM - - - DIMM_TARGET - - - CODE - MEDIUM - - - RC_MSS_INVALID_RTT_PARK_CALCULATIONS diff --git a/src/import/generic/memory/lib/utils/dimm/mss_timing.H b/src/import/generic/memory/lib/utils/dimm/mss_timing.H index 8fd169508..2bc9805de 100644 --- a/src/import/generic/memory/lib/utils/dimm/mss_timing.H +++ b/src/import/generic/memory/lib/utils/dimm/mss_timing.H @@ -269,8 +269,8 @@ inline fapi2::ReturnCode calc_trfc_dlr(const fapi2::Target& i_ // Changes the reorder queue settings { // Two settings are FIFO and REORDER. FIFO is a 1 in the registers, while reorder is a 0 state - const mss::states l_state = ((l_reorder_queue == fapi2::ENUM_ATTR_MSS_REORDER_QUEUE_SETTING_FIFO) ? + const mss::states l_state = ((l_reorder_queue == fapi2::ENUM_ATTR_MEM_REORDER_QUEUE_SETTING_FIFO) ? mss::states::ON : mss::states::OFF); FAPI_TRY(configure_rrq(i_target, l_state), "%s failed to reset read reorder queue settings", mss::c_str(i_target)); FAPI_TRY(configure_wrq(i_target, l_state), "%s failed to reset read reorder queue settings", mss::c_str(i_target)); diff --git a/src/import/generic/memory/lib/utils/power_thermal/gen_decoder.H b/src/import/generic/memory/lib/utils/power_thermal/gen_decoder.H index e72173146..f2d6370be 100644 --- a/src/import/generic/memory/lib/utils/power_thermal/gen_decoder.H +++ b/src/import/generic/memory/lib/utils/power_thermal/gen_decoder.H @@ -272,7 +272,7 @@ fapi2::ReturnCode generate_wildcard_mask(const uint32_t i_hash, uint32_t& o_mask if(ANY_SIZE == l_uint32_buf) { - l_mask.setBit(TT::DIMM_SIZE_START, TT::DIMM_SIZE_LEN); + l_mask.setBit(); } //DRAM_GEN wildcard @@ -283,7 +283,7 @@ fapi2::ReturnCode generate_wildcard_mask(const uint32_t i_hash, uint32_t& o_mask if(ANY_GEN == l_uint8_buf) { - l_mask.setBit(TT::DRAM_GEN_START, TT::DRAM_GEN_LEN); + l_mask.setBit(); } //DIMM_TYPE wildcard @@ -294,7 +294,7 @@ fapi2::ReturnCode generate_wildcard_mask(const uint32_t i_hash, uint32_t& o_mask if(ANY_TYPE == l_uint8_buf) { - l_mask.setBit(TT::DIMM_TYPE_START, TT::DIMM_TYPE_LEN); + l_mask.setBit(); } //DRAM_WIDTH wildcard @@ -305,7 +305,7 @@ fapi2::ReturnCode generate_wildcard_mask(const uint32_t i_hash, uint32_t& o_mask if(ANY_WIDTH == l_uint8_buf) { - l_mask.setBit(TT::DRAM_WIDTH_START, TT::DRAM_WIDTH_LEN); + l_mask.setBit(); } //DRAM_DENSITY wildcard @@ -316,7 +316,7 @@ fapi2::ReturnCode generate_wildcard_mask(const uint32_t i_hash, uint32_t& o_mask if(ANY_DENSITY == l_uint8_buf) { - l_mask.setBit(TT::DRAM_DENSITY_START, TT::DRAM_DENSITY_LEN); + l_mask.setBit(); } //DRAM_STACK_TYPE wildcard @@ -327,7 +327,7 @@ fapi2::ReturnCode generate_wildcard_mask(const uint32_t i_hash, uint32_t& o_mask if(ANY_STACK_TYPE == l_uint8_buf) { - l_mask.setBit(TT::DRAM_STACK_TYPE_START, TT::DRAM_STACK_TYPE_LEN); + l_mask.setBit(); } //DRAM_MFGID wildcard @@ -338,7 +338,7 @@ fapi2::ReturnCode generate_wildcard_mask(const uint32_t i_hash, uint32_t& o_mask if(ANY_MFGID == l_uint16_buf) { - l_mask.setBit(TT::DRAM_MFGID_START, TT::DRAM_MFGID_LEN); + l_mask.setBit(); } @@ -352,7 +352,7 @@ fapi2::ReturnCode generate_wildcard_mask(const uint32_t i_hash, uint32_t& o_mask if(ANY_PORT == l_uint8_buf) { - l_mask.setBit(TT::DIMMS_PER_PORT_START, TT::DIMMS_PER_PORT_LEN); + l_mask.setBit(); } } @@ -366,7 +366,7 @@ fapi2::ReturnCode generate_wildcard_mask(const uint32_t i_hash, uint32_t& o_mask if(ANY_HEIGHT == l_uint8_buf) { - l_mask.setBit(TT::DIMM_MODULE_HEIGHT_START, TT::DIMM_MODULE_HEIGHT_LEN); + l_mask.setBit(); } } diff --git a/src/import/generic/memory/lib/utils/power_thermal/gen_throttle.H b/src/import/generic/memory/lib/utils/power_thermal/gen_throttle.H index 893a7e37b..378643e4e 100644 --- a/src/import/generic/memory/lib/utils/power_thermal/gen_throttle.H +++ b/src/import/generic/memory/lib/utils/power_thermal/gen_throttle.H @@ -41,6 +41,7 @@ #include #include #include +#include #include #include #include @@ -1110,6 +1111,7 @@ fapi2::ReturnCode equalize_throttles (const std::vector< fapi2::Target >& i_t if (mss::count_dimm(l_port) == 0) { + FAPI_INF("Seeing no DIMMs on %s -- skipping", mss::c_str(l_port)); continue; } @@ -1140,6 +1142,7 @@ fapi2::ReturnCode equalize_throttles (const std::vector< fapi2::Target >& i_t if (mss::count_dimm(l_port) == 0) { + FAPI_INF("Seeing no DIMMs on %s -- skipping", mss::c_str(l_port)); continue; } @@ -1149,7 +1152,7 @@ fapi2::ReturnCode equalize_throttles (const std::vector< fapi2::Target >& i_t l_fin_slot = l_min_slot; l_fin_port = l_min_port; - //Need to create throttle object for each mca in order to get dimm configuration and power curves + //Need to create throttle object for each port in order to get dimm configuration and power curves //To calculate the slot/port utilization and total port power consumption fapi2::ReturnCode l_rc = fapi2::FAPI2_RC_SUCCESS; @@ -1179,10 +1182,9 @@ fapi2::ReturnCode equalize_throttles (const std::vector< fapi2::Target >& i_t { //Need this because of pos traits and templating stuff uint64_t l_fail = mss::fapi_pos(l_port); + //Set the failing port. OCC just needs one failing port, doesn't need all of them - FAPI_TRY( FAPI_ATTR_SET( fapi2::ATTR_MSS_MEM_PORT_POS_OF_FAIL_THROTTLE, - fapi2::Target(), - l_fail) ); + FAPI_TRY( attr::set_port_pos_of_fail_throttle(l_fail) ); FAPI_ASSERT_NOEXIT( false, fapi2::MSS_CALC_PORT_POWER_EXCEEDS_MAX() 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 9cca3fe16..e27e60de1 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 @@ -737,4 +737,18 @@ mrw_safemode_dram_databus_util + + + ATTR_MEM_PORT_POS_OF_FAIL_THROTTLE + TARGET_TYPE_SYSTEM + + This is the fapi position of the port that failed to calculate + memory throttles given the passed in watt target and or utilization + + + uint64 + port_pos_of_fail_throttle + + + 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 0c69a88e9..0b7e037d9 100644 --- a/src/import/generic/procedures/xml/error_info/generic_error.xml +++ b/src/import/generic/procedures/xml/error_info/generic_error.xml @@ -368,6 +368,20 @@ + + RC_MSS_INVALID_FREQ_PASSED_IN + + An invalid Freq value has been set + + FREQ + FUNCTION + DIMM_TARGET + + CODE + HIGH + + + RC_MSS_INVALID_FREQUENCY @@ -1182,4 +1196,50 @@ + + RC_MSS_INVALID_DRAM_WIDTH + + Code only supports x4 and x8 drams at this time + + DRAM_WIDTH + + MEMORY_PLUGGING_ERROR + HIGH + + + DIMM_TARGET + MEDIUM + + + DIMM_TARGET + + + CODE + MEDIUM + + + + + RC_MSS_INVALID_PAGE_SIZE + + Invalid page size + + DRAM_WIDTH + + MEMORY_PLUGGING_ERROR + HIGH + + + DIMM_TARGET + MEDIUM + + + DIMM_TARGET + + + CODE + MEDIUM + + + -- cgit v1.2.1