diff options
author | Louis Stermole <stermole@us.ibm.com> | 2018-01-19 14:14:57 -0600 |
---|---|---|
committer | Christian R. Geddes <crgeddes@us.ibm.com> | 2018-01-24 17:38:30 -0500 |
commit | e75b51ba9604d184bf01b5ea7d572ba614d3d2bb (patch) | |
tree | 7d04d63ace65978a9412ec27ea11ff55c23b787f /src/import/chips/p9/procedures/hwp/memory | |
parent | cc2d45afa61c873f36d04aa5e4b095321ea677d1 (diff) | |
download | talos-hostboot-e75b51ba9604d184bf01b5ea7d572ba614d3d2bb.tar.gz talos-hostboot-e75b51ba9604d184bf01b5ea7d572ba614d3d2bb.zip |
Return failing MCA targets when MSS_CALC_PORT_POWER_EXCEEDS_MAX condition hit
Change-Id: I6e2644eda24d6d47bb06cd52640695f64e47c772
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/52284
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: ANDRE A. MARIN <aamarin@us.ibm.com>
Reviewed-by: Michael D. Pardeik <pardeik@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: HWSV CI <hwsv-ci+hostboot@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Reviewed-by: STEPHEN GLANCY <sglancy@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/52295
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/chips/p9/procedures/hwp/memory')
4 files changed, 38 insertions, 18 deletions
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/power_thermal/throttle.C b/src/import/chips/p9/procedures/hwp/memory/lib/power_thermal/throttle.C index ac0c1b739..f602a709c 100644 --- a/src/import/chips/p9/procedures/hwp/memory/lib/power_thermal/throttle.C +++ b/src/import/chips/p9/procedures/hwp/memory/lib/power_thermal/throttle.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2016,2017 */ +/* Contributors Listed Below - COPYRIGHT 2016,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -26,8 +26,8 @@ /// @file throttle.C /// @brief Determine throttle settings for memory /// -// *HWP HWP Owner: Jacob Harvey <jlharvey@us.ibm.com> -// *HWP HWP Backup: Andre A. Marin <aamarin@us.ibm.com> +// *HWP HWP Owner: Andre A. Marin <aamarin@us.ibm.com> +// *HWP HWP Backup: Louis Stermole <stermole@us.ibm.com> // *HWP Team: Memory // *HWP Level: 3 // *HWP Consumed by: FSP:HB @@ -788,13 +788,17 @@ fapi_try_exit: /// @brief Equalize the throttles and estimated power at those throttle levels /// @param[in] i_targets vector of MCS targets all on the same VDDR domain /// @param[in] i_throttle_type denotes if this was done for POWER (VMEM) or THERMAL (VMEM+VPP) throttles +/// @param[out] o_exceeded_power vector of MCA targets where the estimated power exceeded the maximum allowed /// @return FAPI2_RC_SUCCESS iff ok /// @note sets the throttles and power to the worst case /// Called by p9_mss_bulk_pwr_throttles and by p9_mss_utils_to_throttle (so by IPL or by OCC) /// fapi2::ReturnCode equalize_throttles (const std::vector< fapi2::Target<fapi2::TARGET_TYPE_MCS> >& i_targets, - const throttle_type i_throttle_type) + const throttle_type i_throttle_type, + std::vector< fapi2::Target<fapi2::TARGET_TYPE_MCA> >& o_exceeded_power) { + o_exceeded_power.clear(); + //Set to max values so every compare will change to min value uint16_t l_min_slot = ~(0); uint16_t l_min_port = ~(0); @@ -900,6 +904,8 @@ fapi2::ReturnCode equalize_throttles (const std::vector< fapi2::Target<fapi2::TA mss::c_str(l_mca), l_fin_power[l_pos], l_power_limit); + + o_exceeded_power.push_back(l_mca); } } 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 637d1be79..3dbc59cc3 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 @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2016,2017 */ +/* Contributors Listed Below - COPYRIGHT 2016,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -27,8 +27,8 @@ /// @brief throttle API /// -// *HWP HWP Owner: Jacob Harvey <jlharvey@us.ibm.com> -// *HWP HWP Backup: Andre Marin <aamarin@us.ibm.com> +// *HWP HWP Owner: Andre Marin <aamarin@us.ibm.com> +// *HWP HWP Backup: Louis Stermole <stermole@us.ibm.com> // *HWP Team: Memory // *HWP Level: 3 // *HWP Consumed by: FSP:HB @@ -354,11 +354,13 @@ fapi2::ReturnCode set_runtime_m_and_watt_limit( const std::vector< fapi2::Target /// @brief Equalize the throttles and estimated power at those throttle levels /// @param[in] i_targets vector of MCS targets all on the same VDDR domain /// @param[in] i_throttle_type denotes if this was done for POWER (VMEM) or THERMAL (VMEM+VPP) throttles +/// @param[out] o_exceeded_power vector of MCA targets where the estimated power exceeded the maximum allowed /// @return FAPI2_RC_SUCCESS iff ok /// @note sets the throttles and power to the worst case /// fapi2::ReturnCode equalize_throttles (const std::vector< fapi2::Target<fapi2::TARGET_TYPE_MCS> >& i_targets, - const throttle_type i_throttle_type); + const throttle_type i_throttle_type, + std::vector< fapi2::Target<fapi2::TARGET_TYPE_MCA> >& o_exceeded_power); }//power_thermal }// mss diff --git a/src/import/chips/p9/procedures/hwp/memory/p9_mss_bulk_pwr_throttles.C b/src/import/chips/p9/procedures/hwp/memory/p9_mss_bulk_pwr_throttles.C index a74e51ba0..3253b7d61 100644 --- a/src/import/chips/p9/procedures/hwp/memory/p9_mss_bulk_pwr_throttles.C +++ b/src/import/chips/p9/procedures/hwp/memory/p9_mss_bulk_pwr_throttles.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2015,2017 */ +/* Contributors Listed Below - COPYRIGHT 2015,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -27,8 +27,8 @@ /// @file p9_mss_bulk_pwr_throttles.C /// @brief Set the throttle attributes based on a power limit for the dimms on the channel pair /// -// *HWP HWP Owner: Jacob Harvey <jlharvey@us.ibm.com> -// *HWP HWP Backup: Andre A. Marin <aamarin@us.ibm.com> +// *HWP HWP Owner: Andre A. Marin <aamarin@us.ibm.com> +// *HWP HWP Backup: Louis Stermole <stermole@us.ibm.com> // *HWP Team: Memory // *HWP Level: 3 // *HWP Consumed by: FSP:HB @@ -63,6 +63,7 @@ extern "C" FAPI_INF("Start p9_mss_bulk_pwr_throttles for %s type throttling", (( i_throttle_type == mss::throttle_type::THERMAL) ? "THERMAL" : "POWER")); + std::vector< fapi2::Target<fapi2::TARGET_TYPE_MCA> > l_exceeded_power; for ( const auto& l_mcs : i_targets) { @@ -114,8 +115,16 @@ extern "C" FAPI_TRY(FAPI_ATTR_SET( fapi2::ATTR_MSS_MEM_THROTTLED_N_COMMANDS_PER_PORT, l_mcs, l_port)); } - //Set all of the throttles to the lowest value per port for performance reasons - FAPI_TRY(mss::power_thermal::equalize_throttles(i_targets, i_throttle_type)); + // Set all of the throttles to the lowest value per port for performance reasons + FAPI_TRY(mss::power_thermal::equalize_throttles(i_targets, i_throttle_type, l_exceeded_power)); + + // Report any MCA that exceeded the max power limit, and return a failing RC if we have any + for (const auto& l_mca : l_exceeded_power) + { + FAPI_ERR("MCA %s estimated power exceeded the maximum allowed", mss::c_str(l_mca) ); + fapi2::current_err = fapi2::FAPI2_RC_FALSE; + } + FAPI_INF("End bulk_pwr_throttles"); return fapi2::current_err; diff --git a/src/import/chips/p9/procedures/hwp/memory/p9_mss_utils_to_throttle.C b/src/import/chips/p9/procedures/hwp/memory/p9_mss_utils_to_throttle.C index 76117735b..eccd56532 100644 --- a/src/import/chips/p9/procedures/hwp/memory/p9_mss_utils_to_throttle.C +++ b/src/import/chips/p9/procedures/hwp/memory/p9_mss_utils_to_throttle.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2015,2017 */ +/* Contributors Listed Below - COPYRIGHT 2015,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -30,8 +30,8 @@ /// allowed within a window of M DRAM clocks given the minimum dram data bus utilization. /// -// *HWP HWP Owner: Jacob Harvey <jlharvey@us.ibm.com> -// *HWP HWP Backup: Andre A. Marin <aamarin@us.ibm.com> +// *HWP HWP Owner: Andre A. Marin <aamarin@us.ibm.com> +// *HWP HWP Backup: Louis Stermole <stermole@us.ibm.com> // *HWP Team: Memory // *HWP Level: 3 // *HWP Consumed by: FSP:HB @@ -71,6 +71,8 @@ extern "C" { FAPI_INF("Entering p9_mss_utils_to_throttle"); + std::vector< fapi2::Target<fapi2::TARGET_TYPE_MCA> > l_exceeded_power; + for( const auto& l_mcs : i_targets ) { if (mss::count_dimm(l_mcs) == 0) @@ -146,8 +148,9 @@ extern "C" l_n_port) ); } - //equalize throttles to prevent variable performance - FAPI_TRY( mss::power_thermal::equalize_throttles (i_targets, mss::throttle_type::POWER)); + // Equalize throttles to prevent variable performance + // Note that we don't do anything with any MCA that exceed the power limit here, as we don't have an input power limit to go from + FAPI_TRY( mss::power_thermal::equalize_throttles (i_targets, mss::throttle_type::POWER, l_exceeded_power)); fapi_try_exit: return fapi2::current_err; |