diff options
author | mbroyles <mbroyles@us.ibm.com> | 2017-07-12 08:49:44 -0500 |
---|---|---|
committer | Christopher J. Cain <cjcain@us.ibm.com> | 2017-07-25 14:49:58 -0400 |
commit | a84955963839b3a035dd339d3ba13e0acb88547a (patch) | |
tree | db8c5891abf3d1ea7b0ea839d8ce7b6c6b75f9cb /src/occ_405/dcom/dcomMasterTx.c | |
parent | ca84830b6d1811a78c538f51bde34c269806f00a (diff) | |
download | talos-occ-a84955963839b3a035dd339d3ba13e0acb88547a.tar.gz talos-occ-a84955963839b3a035dd339d3ba13e0acb88547a.zip |
Increase RTL to 500us
Stop waiting for APSS data when detected complete but failed
Add history counts for GPEs not idle and APSS collection errors
Change-Id: I2bfaf36ee0b736a958fd41c1c2145f537fc883c5
RTC: 172963
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/43052
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Andres A. Lugo-Reyes <aalugore@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/dcomMasterTx.c')
-rw-r--r-- | src/occ_405/dcom/dcomMasterTx.c | 43 |
1 files changed, 36 insertions, 7 deletions
diff --git a/src/occ_405/dcom/dcomMasterTx.c b/src/occ_405/dcom/dcomMasterTx.c index e1a46bc..a65dc31 100644 --- a/src/occ_405/dcom/dcomMasterTx.c +++ b/src/occ_405/dcom/dcomMasterTx.c @@ -89,7 +89,7 @@ uint32_t dcom_build_slv_inbox(void) // interrupt context. if(G_pbax_rc) { - INCREMENT_ERR_HISTORY(ERR_DCOM_MASTER_PBAX_SEND_FAIL); + INCREMENT_ERR_HISTORY(ERRH_DCOM_MASTER_PBAX_SEND_FAIL); if (!L_traced) { @@ -232,6 +232,7 @@ void task_dcom_tx_slv_inbox( task_t *i_self) uint32_t l_orc_ext = OCC_NO_EXTENDED_RC; uint64_t l_start = ssx_timebase_get(); bool l_pwr_meas = FALSE; + bool l_pwr_meas_complete_invalid = FALSE; bool l_request_reset = FALSE; bool l_ssx_failure = FALSE; // Use a static local bool to track whether the BCE request used @@ -250,8 +251,9 @@ void task_dcom_tx_slv_inbox( task_t *i_self) } l_pwr_meas = G_ApssPwrMeasCompleted; + l_pwr_meas_complete_invalid = G_ApssPwrMeasDoneInvalid; - // Did APSS power complete? + // Did APSS power complete AND valid? if( l_pwr_meas == TRUE ) { #if !defined(DEBUG_APSS_SEQ) && defined(DCOM_DEBUG) @@ -405,13 +407,42 @@ void task_dcom_tx_slv_inbox( task_t *i_self) else { L_bce_not_ready_count++; - INCREMENT_ERR_HISTORY(ERR_DCOM_TX_SLV_INBOX); + INCREMENT_ERR_HISTORY(ERRH_DCOM_TX_SLV_INBOX); } // Moved the break statement here in case we decide not to // schedule the BCE request. break; } + // Is APSS power collection done but failed? Stop waiting since no valid data will be coming + else if(l_pwr_meas_complete_invalid == TRUE) + { + //Failure occurred, step up the FAIL_COUNT + APSS_FAIL(); + + if (G_apss_fail_updown_count >= APSS_DATA_FAIL_MAX) + { + if (FALSE == isSafeStateRequested()) + { + /* @ + * @errortype + * @moduleid DCOM_MID_TASK_TX_SLV_INBOX + * @reasoncode APSS_HARD_FAILURE + * @userdata1 N/A + * @userdata4 ERC_APSS_NO_VALID_DATA + * @devdesc No valid APSS data (hard time-out) + */ + TRAC_ERR("No valid apss data: #complete errors = %i #invalid = %i", + G_error_history[ERRH_APSS_COMPLETE_ERROR], + G_error_history[ERRH_INVALID_APSS_DATA]); + l_orc = APSS_HARD_FAILURE; + l_orc_ext = ERC_APSS_NO_VALID_DATA; + l_request_reset = TRUE; + } + } + + break; + } else { // check time and break out if we reached limit @@ -421,7 +452,7 @@ void task_dcom_tx_slv_inbox( task_t *i_self) } else { - INCREMENT_ERR_HISTORY(ERR_DCOM_APSS_COMPLETE_TIMEOUT); + INCREMENT_ERR_HISTORY(ERRH_APSS_COMPLETE_TIMEOUT); //Failure occurred, step up the FAIL_COUNT APSS_FAIL(); @@ -430,9 +461,6 @@ void task_dcom_tx_slv_inbox( task_t *i_self) { 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 @@ -450,6 +478,7 @@ void task_dcom_tx_slv_inbox( task_t *i_self) l_request_reset = TRUE; } } + break; } } |