summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormbroyles <mbroyles@us.ibm.com>2018-11-07 11:18:31 -0600
committerMartha Broyles <mbroyles@us.ibm.com>2018-11-08 11:05:02 -0600
commitbd6800942d1d6ff69b87e0d6ebd3fb13ba9901c6 (patch)
treeb7ad92ddfd9367a009f5b61349195810ae3648f3
parent49d91f3310f2b105b19fc0d3ca1de5f1f7a5e2f0 (diff)
downloadtalos-occ-bd6800942d1d6ff69b87e0d6ebd3fb13ba9901c6.tar.gz
talos-occ-bd6800942d1d6ff69b87e0d6ebd3fb13ba9901c6.zip
Fix memory OT throttling on Nimbus
CQ: SW450761 Change-Id: I3680e1aa1da92264a0aadc34a8c18389c3d68d20 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/68505 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Christopher J. Cain <cjcain@us.ibm.com> Reviewed-by: Douglas R. Gilbert <dgilbert@us.ibm.com> Reviewed-by: William A. Bryan <wilbryan@us.ibm.com> Reviewed-by: Martha Broyles <mbroyles@us.ibm.com>
-rw-r--r--src/occ_405/amec/amec_sensors_centaur.c39
-rwxr-xr-xsrc/occ_405/amec/amec_slave_smh.c34
-rwxr-xr-xsrc/occ_405/occbuildname.c2
3 files changed, 43 insertions, 32 deletions
diff --git a/src/occ_405/amec/amec_sensors_centaur.c b/src/occ_405/amec/amec_sensors_centaur.c
index 72e22cf..137a522 100644
--- a/src/occ_405/amec/amec_sensors_centaur.c
+++ b/src/occ_405/amec/amec_sensors_centaur.c
@@ -405,33 +405,34 @@ void amec_update_centaur_dts_sensors(CentaurMemData * i_sensor_cache, uint8_t i_
// End Function Specification
void amec_update_centaur_temp_sensors(void)
{
- uint32_t k, l_hot;
+ uint32_t k;
+ uint16_t l_hot_centaur = 0;
+ uint16_t l_hot_dimm = 0;
// -----------------------------------------------------------
- // Find hottest temperature from all centaurs for this Proc chip
+ // Find hottest Centaur and DIMM temp from all centaurs for this Proc chip
// -----------------------------------------------------------
- for(l_hot = 0, k=0; k < MAX_NUM_CENTAURS; k++)
+ for(k=0; k < MAX_NUM_CENTAURS; k++)
{
- if(g_amec->proc[0].memctl[k].centaur.centaur_hottest.cur_temp > l_hot)
+ if(CENTAUR_PRESENT(k))
{
- l_hot = g_amec->proc[0].memctl[k].centaur.centaur_hottest.cur_temp;
- }
- }
- sensor_update(&g_amec->proc[0].temp2mscent,l_hot);
- AMEC_DBG("HotCentaur=%d\n",l_hot);
+ // check if this is the hottest Centaur
+ if(g_amec->proc[0].memctl[k].centaur.centaur_hottest.cur_temp > l_hot_centaur)
+ {
+ l_hot_centaur = (uint16_t)g_amec->proc[0].memctl[k].centaur.centaur_hottest.cur_temp;
+ }
- // --------------------------------------------------------
- // Find hottest temperature from all DIMMs for this Proc chip
- // --------------------------------------------------------
- for(l_hot = 0, k=0; k < MAX_NUM_CENTAURS; k++)
- {
- if(g_amec->proc[0].memctl[k].centaur.tempdimmax.sample > l_hot)
- {
- l_hot = g_amec->proc[0].memctl[k].centaur.tempdimmax.sample;
+ // check if this Centaur has the hottest DIMM
+ if(g_amec->proc[0].memctl[k].centaur.tempdimmax.sample > l_hot_dimm)
+ {
+ l_hot_dimm = g_amec->proc[0].memctl[k].centaur.tempdimmax.sample;
+ }
}
}
- sensor_update(&g_amec->proc[0].tempdimmthrm,l_hot);
- AMEC_DBG("HotDimm=%d\n",l_hot);
+
+ sensor_update(&g_amec->proc[0].temp2mscent,l_hot_centaur);
+ sensor_update(&g_amec->proc[0].tempdimmthrm,l_hot_dimm);
+ AMEC_DBG("HotCentaur=[%d] HotDimm=[%d]",l_hot_centaur, l_hot_dimm);
}
// Function Specification
diff --git a/src/occ_405/amec/amec_slave_smh.c b/src/occ_405/amec/amec_slave_smh.c
index 1cfe3ea..0772fd7 100755
--- a/src/occ_405/amec/amec_slave_smh.c
+++ b/src/occ_405/amec/amec_slave_smh.c
@@ -493,7 +493,8 @@ void amec_slv_state_0(void)
//-------------------------------------------------------
// Update Centaur sensors (for this tick)
//-------------------------------------------------------
- amec_update_centaur_sensors(CENTAUR_0);
+ if (MEM_TYPE_CUMULUS == G_sysConfigData.mem_type)
+ amec_update_centaur_sensors(CENTAUR_0);
//-------------------------------------------------------
// Update vector sensors
@@ -526,12 +527,15 @@ void amec_slv_state_1(void)
//-------------------------------------------------------
// Update Centaur sensors (for this tick)
//-------------------------------------------------------
- amec_update_centaur_sensors(CENTAUR_1);
+ if (MEM_TYPE_CUMULUS == G_sysConfigData.mem_type)
+ {
+ amec_update_centaur_sensors(CENTAUR_1);
- //-------------------------------------------------------
- // Update Proc Level Centaur/DIMM Temperature sensors
- //-------------------------------------------------------
- amec_update_centaur_temp_sensors();
+ //-------------------------------------------------------
+ // Update Proc Level Centaur/DIMM Temperature sensors
+ //-------------------------------------------------------
+ amec_update_centaur_temp_sensors();
+ }
}
@@ -549,7 +553,8 @@ void amec_slv_state_2(void)
//-------------------------------------------------------
// Update Centaur sensors (for this tick)
//-------------------------------------------------------
- amec_update_centaur_sensors(CENTAUR_2);
+ if (MEM_TYPE_CUMULUS == G_sysConfigData.mem_type)
+ amec_update_centaur_sensors(CENTAUR_2);
// Call VRM Vdd thermal controller
amec_controller_vrm_vdd_thermal();
@@ -572,7 +577,8 @@ void amec_slv_state_3(void)
//-------------------------------------------------------
// Update Centaur sensors (for this tick)
//-------------------------------------------------------
- amec_update_centaur_sensors(CENTAUR_3);
+ if (MEM_TYPE_CUMULUS == G_sysConfigData.mem_type)
+ amec_update_centaur_sensors(CENTAUR_3);
}
@@ -592,7 +598,8 @@ void amec_slv_state_4(void)
//-------------------------------------------------------
// Update Centaur sensors (for this tick)
//-------------------------------------------------------
- amec_update_centaur_sensors(CENTAUR_4);
+ if (MEM_TYPE_CUMULUS == G_sysConfigData.mem_type)
+ amec_update_centaur_sensors(CENTAUR_4);
//-------------------------------------------------------
// Run WOF Algorithm
@@ -617,7 +624,8 @@ void amec_slv_state_5(void)
//-------------------------------------------------------
// Update Centaur sensors (for this tick)
//-------------------------------------------------------
- amec_update_centaur_sensors(CENTAUR_5);
+ if (MEM_TYPE_CUMULUS == G_sysConfigData.mem_type)
+ amec_update_centaur_sensors(CENTAUR_5);
//-------------------------------------------------------
// Update partition sensors for DPS algorithms (for this tick)
@@ -643,7 +651,8 @@ void amec_slv_state_6(void)
//-------------------------------------------------------
// Update Centaur sensors (for this tick)
//-------------------------------------------------------
- amec_update_centaur_sensors(CENTAUR_6);
+ if (MEM_TYPE_CUMULUS == G_sysConfigData.mem_type)
+ amec_update_centaur_sensors(CENTAUR_6);
}
@@ -661,7 +670,8 @@ void amec_slv_state_7(void)
//-------------------------------------------------------
// Update Centaur sensors (for this tick)
//-------------------------------------------------------
- amec_update_centaur_sensors(CENTAUR_7);
+ if (MEM_TYPE_CUMULUS == G_sysConfigData.mem_type)
+ amec_update_centaur_sensors(CENTAUR_7);
}
// Function Specification
diff --git a/src/occ_405/occbuildname.c b/src/occ_405/occbuildname.c
index 80b1b27..53e0b88 100755
--- a/src/occ_405/occbuildname.c
+++ b/src/occ_405/occbuildname.c
@@ -34,6 +34,6 @@ volatile const char G_occ_buildname[16] __attribute__((section(".buildname"))) =
#else
-volatile const char G_occ_buildname[16] __attribute__((section(".buildname"))) = /*<BuildName>*/ "op_occ_181029a\0" /*</BuildName>*/ ;
+volatile const char G_occ_buildname[16] __attribute__((section(".buildname"))) = /*<BuildName>*/ "op_occ_181108a\0" /*</BuildName>*/ ;
#endif
OpenPOWER on IntegriCloud