summaryrefslogtreecommitdiffstats
path: root/src/usr/initservice/istepdispatcher/istepdispatcher.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/initservice/istepdispatcher/istepdispatcher.C')
-rw-r--r--src/usr/initservice/istepdispatcher/istepdispatcher.C52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/usr/initservice/istepdispatcher/istepdispatcher.C b/src/usr/initservice/istepdispatcher/istepdispatcher.C
index 14416487d..e76fdc331 100644
--- a/src/usr/initservice/istepdispatcher/istepdispatcher.C
+++ b/src/usr/initservice/istepdispatcher/istepdispatcher.C
@@ -750,6 +750,7 @@ void IStepDispatcher::msgHndlr()
{
msg_t * pMsg = NULL;
pMsg = msg_wait(iv_msgQ);
+ errlHndl_t l_errLog = NULL;
switch(pMsg->type)
{
@@ -773,6 +774,26 @@ void IStepDispatcher::msgHndlr()
TRACFCOMP(g_trac_initsvc, ERR_MRK"msgHndlr: Ignoring IStep msg in non-IStep mode!");
}
break;
+ case COALESCE_HOST:
+ TRACFCOMP(g_trac_initsvc, INFO_MRK"msgHndlr: COALESCE_HOST");
+ l_errLog = handleCoalesceHostMsg();
+ if (l_errLog)
+ {
+ errlCommit(l_errLog, INITSVC_COMP_ID);
+
+ // Send the message back as a response
+ pMsg->data[0] = HWSVR_MSG_ERROR;
+ }
+ else
+ {
+ pMsg->data[0] = HWSVR_MSG_SUCCESS;
+ }
+
+ msg_respond(iv_msgQ, pMsg);
+ pMsg = NULL;
+
+ break;
+
case SHUTDOWN:
// Shutdown requested from Fsp
TRACFCOMP(g_trac_initsvc, INFO_MRK"msgHndlr: SHUTDOWN");
@@ -1381,4 +1402,35 @@ void IStepDispatcher::getIstepInfo ( uint8_t & o_iStep,
mutex_unlock( &iv_mutex );
}
+// ----------------------------------------------------------------------------
+// IStepDispatcher::handleCoalesceHostMsg()
+// ----------------------------------------------------------------------------
+errlHndl_t IStepDispatcher::handleCoalesceHostMsg()
+{
+ TRACFCOMP(g_trac_initsvc, ENTER_MRK"IStepDispatcher::handleCoalesceHostMsg");
+
+ // Ensure the library is loaded
+ errlHndl_t err = VFS::module_load("libestablish_system_smp.so");
+
+ if (err)
+ {
+ TRACFCOMP(g_trac_initsvc, "handleCoalesceHostMsg: Error loading module, PLID = 0x%x",
+ err->plid());
+ }
+ else
+ {
+ err = ESTABLISH_SYSTEM_SMP::call_host_coalesce_host();
+ if (err)
+ {
+ TRACFCOMP(g_trac_initsvc, "handleCoalesceHostMsg: Error with "
+ "call_host_coalese_host function LID = 0x%x",
+ err->plid());
+ }
+ }
+
+ TRACFCOMP( g_trac_initsvc, EXIT_MRK"IStepDispatcher::handleCoalesceHostMsg");
+
+ return err;
+}
+
} // namespace
OpenPOWER on IntegriCloud