summaryrefslogtreecommitdiffstats
path: root/src/usr/mbox/ipcSp.C
diff options
context:
space:
mode:
authorDoug Gilbert <dgilbert@us.ibm.com>2013-11-15 12:45:52 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-01-10 18:06:54 -0600
commiteffa0e2c6eccb199caa6179a0618c75c6182aa4b (patch)
treecfbd0f070ad74eaf3a08f6f545de8fc633efc688 /src/usr/mbox/ipcSp.C
parent613d36e02e5ce4e5b69cbb02483e9fa352666ecd (diff)
downloadtalos-hostboot-effa0e2c6eccb199caa6179a0618c75c6182aa4b.tar.gz
talos-hostboot-effa0e2c6eccb199caa6179a0618c75c6182aa4b.zip
implement start_payload for multi-drawer
RTC: 71994 Change-Id: I422f349d5588731a5e7cfc504d96e497958d6b95 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/7426 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/mbox/ipcSp.C')
-rw-r--r--src/usr/mbox/ipcSp.C54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/usr/mbox/ipcSp.C b/src/usr/mbox/ipcSp.C
index e0b2a3449..ac45be232 100644
--- a/src/usr/mbox/ipcSp.C
+++ b/src/usr/mbox/ipcSp.C
@@ -29,6 +29,12 @@
#include <errl/errlmanager.H>
#include <mbox/mbox_reasoncodes.H>
+namespace START_PAYLOAD
+{
+ extern errlHndl_t callShutdown ( uint64_t i_hbInstance,
+ bool i_masterInstance );
+};
+
trace_desc_t* g_trac_ipc = NULL;
TRAC_INIT(&g_trac_ipc, IPC_TRACE_NAME, KILOBYTE);
@@ -118,6 +124,7 @@ void IpcSp::msgHandler()
{
errlCommit(err, IPC_COMP_ID);
}
+ mod_loaded = false;
}
// Respond
@@ -143,6 +150,51 @@ void IpcSp::msgHandler()
errlCommit(err,IPC_COMP_ID);
}
break;
+
+ case IPC_START_PAYLOAD:
+
+ if ( !VFS::module_is_loaded( "libstart_payload.so" ) )
+ {
+ err = VFS::module_load( "libstart_payload.so" );
+
+ if ( err )
+ {
+ TRACFCOMP( g_trac_ipc,
+ "Could not load runtime module" );
+ }
+ else
+ {
+ mod_loaded = true;
+ }
+ }
+
+ if(!err)
+ {
+ // Function will not return unless error
+ err = START_PAYLOAD::callShutdown(msg->data[0],false);
+ }
+
+ if(err)
+ {
+ errlCommit(err, IPC_COMP_ID);
+ }
+
+ if(mod_loaded)
+ {
+ err = VFS::module_unload( "libstart_payload.so" );
+
+ if (err)
+ {
+ errlCommit(err, IPC_COMP_ID);
+ }
+ mod_loaded = false;
+ }
+
+ msg_free(msg);
+
+ break;
+
+
default:
TRACFCOMP( g_trac_ipc,
@@ -181,6 +233,8 @@ void IpcSp::msgHandler()
errlCommit(err, IPC_COMP_ID);
+ msg_free(msg);
+
break;
}
}
OpenPOWER on IntegriCloud