summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJay Azurin <jmazurin@us.ibm.com>2015-01-30 11:28:10 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2015-02-06 13:47:44 -0600
commit0fff90436458f6381dfe82892f8339ce334d5921 (patch)
treed263e496aa4d383a243c4ea88b495b4816bc6979 /src
parent4faa8140cb446ea259f68d50a1c9d7ad7a3e6135 (diff)
downloadblackbird-hostboot-0fff90436458f6381dfe82892f8339ce334d5921.tar.gz
blackbird-hostboot-0fff90436458f6381dfe82892f8339ce334d5921.zip
Support for full stop between isteps for OP
Users can now stop indefinitely between isteps on BMC systems. Tested on Palmetto board. Change-Id: If68bd72464bfe8e43ce1848e72ec7c9f35d1d584 RTC: 122986 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/15447 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src')
-rw-r--r--src/usr/initservice/istepdispatcher/istepdispatcher.C25
-rw-r--r--src/usr/initservice/istepdispatcher/istepdispatcher.H6
2 files changed, 29 insertions, 2 deletions
diff --git a/src/usr/initservice/istepdispatcher/istepdispatcher.C b/src/usr/initservice/istepdispatcher/istepdispatcher.C
index 7aae59bd2..722531b35 100644
--- a/src/usr/initservice/istepdispatcher/istepdispatcher.C
+++ b/src/usr/initservice/istepdispatcher/istepdispatcher.C
@@ -2111,12 +2111,33 @@ void IStepDispatcher::istepPauseSet(uint8_t i_step, uint8_t i_substep)
l_p_pauseCfg->bpTagInfo
);
- // If full stop is requested then send breakpoint message to FSP
- // otherwise sleep for the requested number of seconds
+ // If full stop is requested then send breakpoint message to FSP.
+ // This stop can be resumed via external command from FSP.
if(l_p_pauseCfg->fullStopEn)
{
iStepBreakPoint(l_p_pauseCfg->bpTagInfo);
}
+ // If infinite pause is set then hang in a tight loop indefinitely.
+ // This is a permanent stop that cannot be resumed via any command.
+ else if(l_p_pauseCfg->pauseLen == ISTEP_PAUSE_SET_INFINITE)
+ {
+ TRACFCOMP(g_trac_initsvc, INFO_MRK"istepPauseSet: "
+ "pauseLen=0x%02X, Permanent pause enabled.",
+ l_p_pauseCfg->pauseLen
+ );
+
+#ifdef CONFIG_CONSOLE
+ CONSOLE::displayf(NULL, "istepPauseSet: "
+ "pauseLen=0x%02X, Permanent pause enabled.",
+ l_p_pauseCfg->pauseLen
+ );
+#endif
+ while(1)
+ {
+ nanosleep(1,0);
+ }
+ }
+ // Otherwise sleep for the requested number of seconds
else
{
nanosleep(l_p_pauseCfg->pauseLen,0);
diff --git a/src/usr/initservice/istepdispatcher/istepdispatcher.H b/src/usr/initservice/istepdispatcher/istepdispatcher.H
index 3f5cc551e..918d9a46d 100644
--- a/src/usr/initservice/istepdispatcher/istepdispatcher.H
+++ b/src/usr/initservice/istepdispatcher/istepdispatcher.H
@@ -62,6 +62,12 @@ namespace INITSERVICE
*/
const uint64_t MAX_WAIT_TIME_SEC = 10;
+/**
+ * @brief constant value that defines the infinite pause for the istepPauseSet
+ * method.
+ */
+const uint64_t ISTEP_PAUSE_SET_INFINITE = 0xFF;
+
#ifdef CONFIG_RECONFIG_LOOP_TESTS_ENABLE
/**
* @brief The Maximum number of elements in the ATTR_RECONFIG_LOOP_TESTS
OpenPOWER on IntegriCloud