diff options
author | Chris Cain <cjcain@us.ibm.com> | 2016-10-21 11:57:27 -0500 |
---|---|---|
committer | Christopher J. Cain <cjcain@us.ibm.com> | 2016-10-24 09:54:38 -0400 |
commit | f5f808eb2918e96bcdf324bd2dd90853bf9b5f3c (patch) | |
tree | 6d6736416107505e87963d4d4e1a38172cf22c01 /src/occ_405/dcom | |
parent | 9af547bcc5ff79e711d1e497a3ff56b30d313448 (diff) | |
download | talos-occ-f5f808eb2918e96bcdf324bd2dd90853bf9b5f3c.tar.gz talos-occ-f5f808eb2918e96bcdf324bd2dd90853bf9b5f3c.zip |
Prevent flood of errors on APSS failure
Change-Id: Ifd7741e863168584edadb7136aa90e4ec8227997
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/31651
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Martha Broyles <mbroyles@us.ibm.com>
Reviewed-by: William A. Bryan <wilbryan@us.ibm.com>
Reviewed-by: Christopher J. Cain <cjcain@us.ibm.com>
Diffstat (limited to 'src/occ_405/dcom')
-rw-r--r-- | src/occ_405/dcom/dcomMasterTx.c | 76 |
1 files changed, 40 insertions, 36 deletions
diff --git a/src/occ_405/dcom/dcomMasterTx.c b/src/occ_405/dcom/dcomMasterTx.c index 08edef8..160e661 100644 --- a/src/occ_405/dcom/dcomMasterTx.c +++ b/src/occ_405/dcom/dcomMasterTx.c @@ -236,7 +236,7 @@ uint32_t dcom_which_buffer(void) // End Function Specification void task_dcom_tx_slv_inbox( task_t *i_self) { - static bool l_error = FALSE; + static bool L_error = FALSE; uint32_t l_orc = OCC_SUCCESS_REASON_CODE; uint32_t l_orc_ext = OCC_NO_EXTENDED_RC; uint64_t l_start = ssx_timebase_get(); @@ -269,8 +269,8 @@ void task_dcom_tx_slv_inbox( task_t *i_self) #endif #if defined(DEBUG_APSS_SEQ) && !defined(DCOM_DEBUG) uint64_t l_end = ssx_timebase_get(); - DCOM_DBG("Got APSS after waiting %d us (complete seq %d)\n", - (int)( (l_end-l_start) / ( SSX_TIMEBASE_FREQUENCY_HZ / 1000000 ) ), G_savedCompleteSeq); + TRAC_INFO("Got APSS after waiting %d us (complete seq %d)\n", + (int)( (l_end-l_start) / ( SSX_TIMEBASE_FREQUENCY_HZ / 1000000 ) ), G_savedCompleteSeq); #endif APSS_SUCCESS(); @@ -417,28 +417,29 @@ void task_dcom_tx_slv_inbox( task_t *i_self) //Failure occurred, step up the FAIL_COUNT APSS_FAIL(); - if (G_apss_fail_updown_count >= APSS_DATA_FAIL_MAX) { - TRAC_ERR("task_dcom_tx_slv_inbox: APSS data collection failure exceeded threshold. fail_count=%i, threshold:%i", - G_apss_fail_updown_count, APSS_DATA_FAIL_MAX); - - /* @ - * @errortype - * @moduleid DCOM_MID_TASK_TX_SLV_INBOX - * @reasoncode APSS_HARD_FAILURE - * @userdata1 N/A - * @userdata4 OCC_NO_EXTENDED_RC - * @devdesc Time out waiting on power measurement completion (hard time-out) - */ - TRAC_ERR("Timed out waiting apss meas completion (dcom_start:%d us, apss_start:%d us, apss_end:%d us)", - (int) ((l_start)/(SSX_TIMEBASE_FREQUENCY_HZ/1000000)), - (int) ((G_gpe_apss_time_start)/(SSX_TIMEBASE_FREQUENCY_HZ/1000000)), - (int) ((G_gpe_apss_time_end)/(SSX_TIMEBASE_FREQUENCY_HZ/1000000))); - l_orc = APSS_HARD_FAILURE; - l_orc_ext = OCC_NO_EXTENDED_RC; - l_request_reset = TRUE; - + if (FALSE == isSafeStateRequested()) + { + TRAC_ERR("task_dcom_tx_slv_inbox: APSS data collection failure exceeded threshold. fail_count=%i, threshold:%i", + G_apss_fail_updown_count, APSS_DATA_FAIL_MAX); + + /* @ + * @errortype + * @moduleid DCOM_MID_TASK_TX_SLV_INBOX + * @reasoncode APSS_HARD_FAILURE + * @userdata1 N/A + * @userdata4 OCC_NO_EXTENDED_RC + * @devdesc Time out waiting on power measurement completion (hard time-out) + */ + TRAC_ERR("Timed out waiting apss meas completion (dcom_start:%d us, apss_start:%d us, apss_end:%d us)", + (int) ((l_start)/(SSX_TIMEBASE_FREQUENCY_HZ/1000000)), + (int) ((G_gpe_apss_time_start)/(SSX_TIMEBASE_FREQUENCY_HZ/1000000)), + (int) ((G_gpe_apss_time_end)/(SSX_TIMEBASE_FREQUENCY_HZ/1000000))); + l_orc = APSS_HARD_FAILURE; + l_orc_ext = OCC_NO_EXTENDED_RC; + l_request_reset = TRUE; + } } break; } @@ -446,20 +447,24 @@ void task_dcom_tx_slv_inbox( task_t *i_self) } while (1); - //If an error exists and we have not logged one before or there's a new request to reset, then log error. - if ( (l_orc != OCC_SUCCESS_REASON_CODE) && ((l_error == FALSE) || (l_request_reset == TRUE))) + //If an error exists and + //we have not logged one before or there's a new request to reset, + //and a reset has not already been requested, then log error. + if ( (l_orc != OCC_SUCCESS_REASON_CODE) && + ((L_error == FALSE) || (l_request_reset == TRUE)) && + (FALSE == isSafeStateRequested()) ) { // create and commit error only once. errlHndl_t l_errl = createErrl( - DCOM_MID_TASK_TX_SLV_INBOX, //ModId - l_orc, //Reasoncode - l_orc_ext, //Extended reasoncode - ERRL_SEV_UNRECOVERABLE, //Severity - NULL, //Trace Buf - DEFAULT_TRACE_SIZE, //Trace Size - 0, //Userdata1 - 0 //Userdata2 - ); + DCOM_MID_TASK_TX_SLV_INBOX, //ModId + l_orc, //Reasoncode + l_orc_ext, //Extended reasoncode + ERRL_SEV_UNRECOVERABLE, //Severity + NULL, //Trace Buf + DEFAULT_TRACE_SIZE, //Trace Size + 0, //Userdata1 + 0 //Userdata2 + ); // Callout firmware addCalloutToErrl(l_errl, @@ -491,8 +496,7 @@ void task_dcom_tx_slv_inbox( task_t *i_self) commitErrl(&l_errl); } - l_error = TRUE; - l_request_reset = FALSE; + L_error = TRUE; } } |