diff options
author | Sachin Gupta <sgupta2m@in.ibm.com> | 2016-11-14 00:24:45 -0600 |
---|---|---|
committer | AMIT J. TENDOLKAR <amit.tendolkar@in.ibm.com> | 2016-11-14 03:54:58 -0500 |
commit | c78869d4678eea4332fda6fa9fe3d17e4f8ea9b2 (patch) | |
tree | cff62c11528ced2cc374a1b5c7ac419ee677f088 /src/sbefw | |
parent | 29a0cc1e3a5e493cd600ac1924380371d151e82b (diff) | |
download | talos-sbe-c78869d4678eea4332fda6fa9fe3d17e4f8ea9b2.tar.gz talos-sbe-c78869d4678eea4332fda6fa9fe3d17e4f8ea9b2.zip |
Add sleep only for simics for FIFO operations
Change-Id: I193bb015bf269da512921278db8b9ea03efc0e50
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/32569
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Shakeeb A. Pasha B K <shakeebbk@in.ibm.com>
Reviewed-by: RAJA DAS <rajadas2@in.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: AMIT J. TENDOLKAR <amit.tendolkar@in.ibm.com>
Diffstat (limited to 'src/sbefw')
-rw-r--r-- | src/sbefw/sbeFifoMsgUtils.C | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/src/sbefw/sbeFifoMsgUtils.C b/src/sbefw/sbeFifoMsgUtils.C index 26515077..26085022 100644 --- a/src/sbefw/sbeFifoMsgUtils.C +++ b/src/sbefw/sbeFifoMsgUtils.C @@ -162,7 +162,13 @@ uint32_t sbeUpFifoDeq_mult (uint32_t &io_len, // We can reach here because FIFO was empty. We can not trust // empty flag because empty flag tells the status of FIFO after // operation not at the time of operation - pk_sleep(PK_MILLISECONDS(FIFO_WAIT_SLEEP_TIME)); + if( SBE::isSimicsRunning() ) + { + // sleep if simics is running. Otherwise simics becomes + // 99 % busy and fsp does not get a chance to do operation + // over FIFO. + pk_sleep(PK_MILLISECONDS(FIFO_WAIT_SLEEP_TIME)); + } continue; } @@ -221,7 +227,13 @@ uint32_t sbeDownFifoEnq_mult (uint32_t &io_len, if (l_status.downfifo_status.fifo_full) { // Downstream FIFO is full - pk_sleep(PK_MILLISECONDS(FIFO_WAIT_SLEEP_TIME)); + if( SBE::isSimicsRunning() ) + { + // sleep if simics is running. Otherwise simics becomes + // 99 % busy and fsp does not get a chance to do operation + // over FIFO. + pk_sleep(PK_MILLISECONDS(FIFO_WAIT_SLEEP_TIME)); + } continue; } @@ -282,7 +294,13 @@ uint32_t sbeDownFifoSignalEot (void) // Check if downstream FIFO is full if (l_status.downfifo_status.fifo_full) { - pk_sleep(PK_MILLISECONDS(FIFO_WAIT_SLEEP_TIME)); + if( SBE::isSimicsRunning() ) + { + // sleep if simics is running. Otherwise simics becomes + // 99 % busy and fsp does not get a chance to do operation + // over FIFO. + pk_sleep(PK_MILLISECONDS(FIFO_WAIT_SLEEP_TIME)); + } continue; } l_rc = putscom_abs(SBE_DOWNSTREAM_FIFO_SIGNAL_EOT, DOWNSTREAM_EOT_DATA); |