summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLouis Stermole <stermole@us.ibm.com>2018-01-19 14:14:57 -0600
committerChristian R. Geddes <crgeddes@us.ibm.com>2018-01-24 17:38:30 -0500
commite75b51ba9604d184bf01b5ea7d572ba614d3d2bb (patch)
tree7d04d63ace65978a9412ec27ea11ff55c23b787f /src
parentcc2d45afa61c873f36d04aa5e4b095321ea677d1 (diff)
downloadtalos-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')
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/power_thermal/throttle.C14
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/power_thermal/throttle.H10
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/p9_mss_bulk_pwr_throttles.C19
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/p9_mss_utils_to_throttle.C13
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;
OpenPOWER on IntegriCloud