diff options
author | mbroyles <mbroyles@us.ibm.com> | 2018-11-07 11:18:31 -0600 |
---|---|---|
committer | Martha Broyles <mbroyles@us.ibm.com> | 2018-11-08 11:05:02 -0600 |
commit | bd6800942d1d6ff69b87e0d6ebd3fb13ba9901c6 (patch) | |
tree | b7ad92ddfd9367a009f5b61349195810ae3648f3 | |
parent | 49d91f3310f2b105b19fc0d3ca1de5f1f7a5e2f0 (diff) | |
download | talos-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.c | 39 | ||||
-rwxr-xr-x | src/occ_405/amec/amec_slave_smh.c | 34 | ||||
-rwxr-xr-x | src/occ_405/occbuildname.c | 2 |
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 |