summaryrefslogtreecommitdiffstats
path: root/src/usr/mbox
diff options
context:
space:
mode:
authorDean Sanner <dsanner@us.ibm.com>2018-02-04 08:31:59 -0600
committerWilliam G. Hoffa <wghoffa@us.ibm.com>2018-02-06 12:04:48 -0500
commit7b2ee59900c674255f559034535923709b4ae070 (patch)
treefb8e798816e1f52d46ce3f2c5674b48720449ffe /src/usr/mbox
parent9225a7cd9cfa3d29d32d46f2fd9a76ff3e53df37 (diff)
downloadtalos-hostboot-7b2ee59900c674255f559034535923709b4ae070.tar.gz
talos-hostboot-7b2ee59900c674255f559034535923709b4ae070.zip
Fixes for multinode istep 21.1
-Reordered start_payload to ensure that common things like disabling special wakeup, closing down SBE windows, core xstop, and clearing PM bars are executed as part of our shutdown path -Due to above, needed to correct shared libs loaded on non master HB instance -Added back in the P8 code to pass the payload base to slave HB Instances on populate attr IPC message Change-Id: I5371b9daf7a4e1aadd1743badcd4219604a38ce7 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/53343 Tested-by: William G. Hoffa <wghoffa@us.ibm.com> Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com>
Diffstat (limited to 'src/usr/mbox')
-rw-r--r--src/usr/mbox/ipcSp.C54
1 files changed, 36 insertions, 18 deletions
diff --git a/src/usr/mbox/ipcSp.C b/src/usr/mbox/ipcSp.C
index 2004c6f91..f38b92454 100644
--- a/src/usr/mbox/ipcSp.C
+++ b/src/usr/mbox/ipcSp.C
@@ -113,6 +113,10 @@ void IpcSp::msgHandler()
if(!err)
{
+ // msg->extra_data contains PAYLOAD Base
+ RUNTIME::setPayloadBaseAddress(
+ reinterpret_cast<uint64_t>(msg->extra_data));
+
// msg->data[0] contains the node number
err = RUNTIME::populate_HbRsvMem( msg->data[0] );
}
@@ -170,22 +174,32 @@ void IpcSp::msgHandler()
break;
case IPC_START_PAYLOAD:
-
- if ( !VFS::module_is_loaded( "libstart_payload.so" ) )
+ {
+ const int NUM_MOD = 3;
+ const char * mods[NUM_MOD] =
+ {"libp9_cpuWkup.so", "libistep21.so", "libpm.so"};
+ bool loaded_mods[NUM_MOD] = {false, false, false};
+ for (auto cnt = 0; cnt < NUM_MOD; ++cnt)
{
- err = VFS::module_load( "libstart_payload.so" );
-
- if ( err )
- {
- TRACFCOMP( g_trac_ipc,
- "Could not load runtime module" );
- }
- else
+ if ( !VFS::module_is_loaded( mods[cnt] ) )
{
- mod_loaded = true;
+ err = VFS::module_load( mods[cnt] );
+
+ if ( err )
+ {
+ TRACFCOMP( g_trac_ipc,
+ "Could not load %s module", mods[cnt] );
+ break;
+ }
+ else
+ {
+ loaded_mods[cnt] = true;
+ }
}
}
+ if (err) break;
+
if(!err)
{
// Function will not return unless error
@@ -199,21 +213,25 @@ void IpcSp::msgHandler()
INITSERVICE::doShutdown(l_errPlid, true);
}
- if(mod_loaded)
+ for (auto cnt = 0; cnt < NUM_MOD; ++cnt)
{
- err = VFS::module_unload( "libstart_payload.so" );
-
- if (err)
+ if ( loaded_mods[cnt] )
{
- errlCommit(err, IPC_COMP_ID);
+ err = VFS::module_unload( mods[cnt] );
+
+ if (err)
+ {
+ errlCommit(err, IPC_COMP_ID);
+ }
+ loaded_mods[cnt] = false;
}
- mod_loaded = false;
+
}
msg_free(msg);
break;
-
+ }
default:
TRACFCOMP( g_trac_ipc,
OpenPOWER on IntegriCloud