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 | |
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')
-rw-r--r-- | src/occ_405/dcom/dcomMasterRx.c | 4 | ||||
-rw-r--r-- | src/occ_405/dcom/dcomMasterTx.c | 43 | ||||
-rw-r--r-- | src/occ_405/dcom/dcomSlaveRx.c | 8 | ||||
-rwxr-xr-x | src/occ_405/dcom/dcomSlaveTx.c | 4 |
4 files changed, 44 insertions, 15 deletions
diff --git a/src/occ_405/dcom/dcomMasterRx.c b/src/occ_405/dcom/dcomMasterRx.c index 2e26986..faa4dca 100644 --- a/src/occ_405/dcom/dcomMasterRx.c +++ b/src/occ_405/dcom/dcomMasterRx.c @@ -298,7 +298,7 @@ void task_dcom_rx_slv_outboxes( task_t *i_self) else { L_bce_not_ready_count++; - INCREMENT_ERR_HISTORY(ERR_DCOM_RX_SLV_OUTBOX); + INCREMENT_ERR_HISTORY(ERRH_DCOM_RX_SLV_OUTBOX); } } else @@ -383,7 +383,7 @@ uint32_t dcom_rx_slv_outbox_doorbell( void ) if (l_pbarc != 0) { - INCREMENT_ERR_HISTORY(ERR_DCOM_MASTER_PBAX_READ_FAIL); + INCREMENT_ERR_HISTORY(ERRH_DCOM_MASTER_PBAX_READ_FAIL); TRAC_ERR("Master PBAX Read Failure in receiving unicast slave doorbells - RC[%08X]", l_pbarc); 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; } } diff --git a/src/occ_405/dcom/dcomSlaveRx.c b/src/occ_405/dcom/dcomSlaveRx.c index a4b6e2d..7b103ab 100644 --- a/src/occ_405/dcom/dcomSlaveRx.c +++ b/src/occ_405/dcom/dcomSlaveRx.c @@ -278,7 +278,7 @@ void task_dcom_rx_slv_inbox( task_t *i_self) else { L_bce_not_ready_count++; - INCREMENT_ERR_HISTORY(ERR_DCOM_RX_SLV_INBOX); + INCREMENT_ERR_HISTORY(ERRH_DCOM_RX_SLV_INBOX); } } else @@ -372,7 +372,7 @@ uint32_t dcom_rx_slv_inbox_doorbell( void ) // We got an error reading from the PBAX, return to caller if ( l_pbarc != 0 ) { - INCREMENT_ERR_HISTORY(ERR_DCOM_SLAVE_PBAX_READ_FAIL); + INCREMENT_ERR_HISTORY(ERRH_DCOM_SLAVE_PBAX_READ_FAIL); G_dcomTime.slave.doorbellErrorFlags |= DCOM_DOORBELL_HW_ERR; // Failure occurred TRAC_ERR("Slave PBAX Read Failure in receiving multicast doorbell from master - RC[%08X]", l_pbarc); @@ -515,8 +515,8 @@ void task_dcom_wait_for_master( task_t *i_self) if (L_no_master_doorbell_cnt == APSS_DATA_FAIL_PMAX_RAIL) { - // Now only trace every 50th occurrence - L_trace_every_count = 50; + // Now only trace every 1000th occurrence + L_trace_every_count = 1000; // Inform AMEC that Pmax_rail needs to change G_apss_lower_pmax_rail = TRUE; diff --git a/src/occ_405/dcom/dcomSlaveTx.c b/src/occ_405/dcom/dcomSlaveTx.c index 33ef166..837608d 100755 --- a/src/occ_405/dcom/dcomSlaveTx.c +++ b/src/occ_405/dcom/dcomSlaveTx.c @@ -163,7 +163,7 @@ void task_dcom_tx_slv_outbox( task_t *i_self) if(G_slave_pbax_rc) { TRAC_ERR("task_dcom_tx_slv_outbox: PBAX Send Failure in transimitting doorbell - RC[%08X]", G_slave_pbax_rc); - INCREMENT_ERR_HISTORY(ERR_DCOM_SLAVE_PBAX_SEND_FAIL); + INCREMENT_ERR_HISTORY(ERRH_DCOM_SLAVE_PBAX_SEND_FAIL); } // Build/setup outbox @@ -304,7 +304,7 @@ void task_dcom_tx_slv_outbox( task_t *i_self) else { L_bce_not_ready_count++; - INCREMENT_ERR_HISTORY(ERR_DCOM_TX_SLV_OUTBOX); + INCREMENT_ERR_HISTORY(ERRH_DCOM_TX_SLV_OUTBOX); } } while (0); |