summaryrefslogtreecommitdiffstats
path: root/src/usr/initservice/istepdispatcher
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/initservice/istepdispatcher')
-rw-r--r--src/usr/initservice/istepdispatcher/istepdispatcher.C37
1 files changed, 32 insertions, 5 deletions
diff --git a/src/usr/initservice/istepdispatcher/istepdispatcher.C b/src/usr/initservice/istepdispatcher/istepdispatcher.C
index 6f74630a7..a59a70399 100644
--- a/src/usr/initservice/istepdispatcher/istepdispatcher.C
+++ b/src/usr/initservice/istepdispatcher/istepdispatcher.C
@@ -2045,27 +2045,40 @@ void IStepDispatcher::handleProcFabIovalidMsg(msg_t * & io_pMsg)
}
// Ensure the libraries needed are loaded
- err = VFS::module_load("libestablish_system_smp.so");
+ err = VFS::module_load("libistep18.so");
if (err)
{
- TRACFCOMP(g_trac_initsvc, "handleProcFabIovalidMsg: Error loading libestablish_system_smp, PLID = 0x%x",
+ TRACFCOMP(g_trac_initsvc, "handleProcFabIovalidMsg: Error loading libistep18,"
+ " PLID = 0x%x",
err->plid());
io_pMsg->data[0] = err->plid();
errlCommit(err, INITSVC_COMP_ID);
break;
}
- err = VFS::module_load("libedi_ei_initialization.so");
+
+ err = VFS::module_load("libfab_iovalid.so");
if (err)
{
- TRACFCOMP(g_trac_initsvc, "handleProcFabIovalidMsg: Error loading libedi_ei_initialization, PLID = 0x%x",
+ TRACFCOMP(g_trac_initsvc, "handleProcFabIovalidMsg: Error loading libfab_iovalid.so,"
+ " PLID = 0x%x",
err->plid());
io_pMsg->data[0] = err->plid();
errlCommit(err, INITSVC_COMP_ID);
break;
}
+ err = VFS::module_load("libp9_cpuWkup.so");
+ if (err)
+ {
+ TRACFCOMP(g_trac_initsvc, "handleProcFabIovalidMsg: Error loading libp9_cpuWkup.so,"
+ " PLID = 0x%x",
+ err->plid());
+ io_pMsg->data[0] = err->plid();
+ errlCommit(err, INITSVC_COMP_ID);
+ break;
+ }
// Create child thread so that if there are problems, the istep
// dispatcher code continues
tid_t l_progTid = task_create(
@@ -2110,6 +2123,20 @@ void IStepDispatcher::handleProcFabIovalidMsg(msg_t * & io_pMsg)
//the interrupt queue
INTR::drainQueue();
+ //Before stopping all the cores, we need to disable interrupts
+ err = ESTABLISH_SYSTEM_SMP::blockInterrupts();
+ if (err)
+ {
+ TRACFCOMP( g_trac_initsvc,
+ "ERROR: ESTABLISH_SYSTEM_SMP::blockInterrupts");
+ errlCommit(err, INITSVC_COMP_ID);
+ }
+
+ //cpu_all_winkle is a system call.. After the system call,
+ //the cpu are all hung at that instruction. After the fsp
+ //wake us up, we will resume execution from the next instruction
+ //in this function as the PC will be pointing to the next
+ //instruction after the cpu_all_winkle function.
TRACFCOMP( g_trac_initsvc, "winkle all cores");
uint32_t l_rc = cpu_all_winkle();
if ( l_rc )
@@ -2536,7 +2563,7 @@ errlHndl_t IStepDispatcher::handleCoalesceHostMsg()
// Ensure the library is loaded
- errlHndl_t err = VFS::module_load("libestablish_system_smp.so");
+ errlHndl_t err = VFS::module_load("libistep18.so");
if (err)
{
OpenPOWER on IntegriCloud