diff options
author | mbroyles <mbroyles@us.ibm.com> | 2018-06-28 12:23:30 -0500 |
---|---|---|
committer | Martha Broyles <mbroyles@us.ibm.com> | 2018-06-29 14:07:25 -0400 |
commit | bc0c2332263be3b8615c7ff04a3373cfd57f7a57 (patch) | |
tree | d16174f34f14bcb5d3b34e9d7ca7f47d6d7f21e9 /src/occ_405/amec/amec_sensors_fw.c | |
parent | 18583159ffc2ca1b75a5c1491485c7befad93b72 (diff) | |
download | talos-occ-bc0c2332263be3b8615c7ff04a3373cfd57f7a57.tar.gz talos-occ-bc0c2332263be3b8615c7ff04a3373cfd57f7a57.zip |
Prevent calling out DIMMs and Centaurs due to GPE issues
Change-Id: If977941c59a60c4e4fcd0d9759a83b3b0d0c5dd9
CQ: SW433604
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/61579
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: William A. Bryan <wilbryan@us.ibm.com>
Reviewed-by: Andres A. Lugo-Reyes <aalugore@us.ibm.com>
Reviewed-by: Martha Broyles <mbroyles@us.ibm.com>
Diffstat (limited to 'src/occ_405/amec/amec_sensors_fw.c')
-rw-r--r-- | src/occ_405/amec/amec_sensors_fw.c | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/src/occ_405/amec/amec_sensors_fw.c b/src/occ_405/amec/amec_sensors_fw.c index 6c5a1c0..e4d524b 100644 --- a/src/occ_405/amec/amec_sensors_fw.c +++ b/src/occ_405/amec/amec_sensors_fw.c @@ -49,6 +49,7 @@ /* Globals */ /******************************************************************************/ extern bool G_24x7_disabled; +bool G_log_gpe1_error = FALSE; //************************************************************************* // Code @@ -203,8 +204,10 @@ void task_gpe_timings(task_t * i_task) else { INCREMENT_ERR_HISTORY(ERRH_GPE1_NOT_IDLE); + // Log error and request reset if GPE1 issue has gone on long enough to cause real issues + // i.e. timeout collecting memory temperatures - if(L_consec_trace_count[1] < MAX_CONSEC_TRACE) + if( (L_consec_trace_count[1] < MAX_CONSEC_TRACE) || (G_log_gpe1_error) ) { xsr_sprg0.fields.xsr = in32(GPE_GPE1XIXSR); xsr_sprg0.fields.sprg0 = in32(GPE_GPE1XISPRG0); @@ -216,6 +219,31 @@ void task_gpe_timings(task_t * i_task) xsr_sprg0.fields.xsr, iar_xsr.fields.iar, ir_edr.fields.ir, ir_edr.fields.edr, xsr_sprg0.fields.sprg0); L_consec_trace_count[1]++; + + if(G_log_gpe1_error) + { + TRAC_ERR("GPE1 not idle causing timeouts, need to reset!!!"); + /* @ + * @errortype + * @moduleid AMEC_UPDATE_FW_SENSORS + * @reasoncode GPE_REQUEST_TASK_TIMEOUT + * @userdata1 0 + * @userdata2 0 + * @userdata4 ERC_AMEC_GPE1_TIMEOUT + * @devdesc Tasks on GPE1 failing to complete + */ + l_err = createErrl(AMEC_UPDATE_FW_SENSORS, //modId + GPE_REQUEST_TASK_TIMEOUT, //reasoncode + ERC_AMEC_GPE1_TIMEOUT, //Extended reason code + ERRL_SEV_UNRECOVERABLE, //Severity + NULL, //Trace Buf + DEFAULT_TRACE_SIZE, //Trace Size + 0, //userdata1 + 0); //userdata2 + + // Commit error log and request reset + REQUEST_RESET(l_err); + } } } } |