summaryrefslogtreecommitdiffstats
path: root/src/occ_405/dcom
diff options
context:
space:
mode:
authormbroyles <mbroyles@us.ibm.com>2017-07-12 08:49:44 -0500
committerChristopher J. Cain <cjcain@us.ibm.com>2017-07-25 14:49:58 -0400
commita84955963839b3a035dd339d3ba13e0acb88547a (patch)
treedb8c5891abf3d1ea7b0ea839d8ce7b6c6b75f9cb /src/occ_405/dcom
parentca84830b6d1811a78c538f51bde34c269806f00a (diff)
downloadtalos-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.c4
-rw-r--r--src/occ_405/dcom/dcomMasterTx.c43
-rw-r--r--src/occ_405/dcom/dcomSlaveRx.c8
-rwxr-xr-xsrc/occ_405/dcom/dcomSlaveTx.c4
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);
OpenPOWER on IntegriCloud