summaryrefslogtreecommitdiffstats
path: root/src/sbefw
diff options
context:
space:
mode:
authorSachin Gupta <sgupta2m@in.ibm.com>2016-11-14 00:24:45 -0600
committerAMIT J. TENDOLKAR <amit.tendolkar@in.ibm.com>2016-11-14 03:54:58 -0500
commitc78869d4678eea4332fda6fa9fe3d17e4f8ea9b2 (patch)
treecff62c11528ced2cc374a1b5c7ac419ee677f088 /src/sbefw
parent29a0cc1e3a5e493cd600ac1924380371d151e82b (diff)
downloadtalos-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.C24
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);
OpenPOWER on IntegriCloud