diff options
author | Jay Azurin <jmazurin@us.ibm.com> | 2015-01-30 11:28:10 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2015-02-06 13:47:44 -0600 |
commit | 0fff90436458f6381dfe82892f8339ce334d5921 (patch) | |
tree | d263e496aa4d383a243c4ea88b495b4816bc6979 /src | |
parent | 4faa8140cb446ea259f68d50a1c9d7ad7a3e6135 (diff) | |
download | blackbird-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.C | 25 | ||||
-rw-r--r-- | src/usr/initservice/istepdispatcher/istepdispatcher.H | 6 |
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 |