diff options
author | Patrick Williams <iawillia@us.ibm.com> | 2013-01-25 11:36:52 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2013-02-04 13:30:48 -0600 |
commit | 0782c6e3bb7ccd9b7e4e963a1aa6b2521e6b275d (patch) | |
tree | dc2de4b79288cb160d539a7d37cf10f181227187 /src/usr/initservice/baseinitsvc | |
parent | 6ba9a7790919fc430ddf1539579fdb4e9e7bba0d (diff) | |
download | blackbird-hostboot-0782c6e3bb7ccd9b7e4e963a1aa6b2521e6b275d.tar.gz blackbird-hostboot-0782c6e3bb7ccd9b7e4e963a1aa6b2521e6b275d.zip |
Turn InitService::doShutdown into a NO_RETURN
There are a few places outside of initservice where Hostboot
shutdown needs to be called. Currently the doShutdown returns
so each of these places have a while(1); style loop. In the
case of start_payload, their implementation of this loop was
incorrect and causes us to take longer than desired to actually
shutdown.
I have changed doShutdown into a NO_RETURN function that keeps
the correct loop done in a common way.
See defect SW183911 for more background.
Change-Id: I819eecadcddd2436f1c52571e48258316b43f38c
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/3028
Tested-by: Jenkins Server
Reviewed-by: ADAM R. MUHLE <armuhle@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/initservice/baseinitsvc')
-rw-r--r-- | src/usr/initservice/baseinitsvc/initservice.C | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/usr/initservice/baseinitsvc/initservice.C b/src/usr/initservice/baseinitsvc/initservice.C index 7267a5dd1..98b9a6a2c 100644 --- a/src/usr/initservice/baseinitsvc/initservice.C +++ b/src/usr/initservice/baseinitsvc/initservice.C @@ -5,7 +5,7 @@ /* */ /* IBM CONFIDENTIAL */ /* */ -/* COPYRIGHT International Business Machines Corp. 2011,2012 */ +/* COPYRIGHT International Business Machines Corp. 2011,2013 */ /* */ /* p1 */ /* */ @@ -551,7 +551,7 @@ void InitService::init( void *io_ptr ) // Set the shutdown status to be the plid to force a TI l_shutdownStatus = l_errl->plid(); - errlCommit( l_errl, INITSVC_COMP_ID ); + errlCommit( l_errl, INITSVC_COMP_ID ); } @@ -619,6 +619,11 @@ void doShutdown ( uint64_t i_status, Singleton<InitService>::instance().doShutdown( i_status, i_payload_base, i_payload_entry ); + + while(1) + { + task_yield(); + }; } void InitService::doShutdown(uint64_t i_status, @@ -673,7 +678,7 @@ void InitService::doShutdown(uint64_t i_status, } l_rb_iter++; } - + shutdown(i_status, i_payload_base, i_payload_entry); } |