summaryrefslogtreecommitdiffstats
path: root/src/usr/initservice/istepdispatcher
diff options
context:
space:
mode:
authorPrachi Gupta <pragupta@us.ibm.com>2018-02-05 11:08:17 -0600
committerWilliam G. Hoffa <wghoffa@us.ibm.com>2018-02-06 15:33:40 -0500
commitabc7d754b770b7322340bf1b3429260614ca0907 (patch)
tree970c2e602edd406c3bad017398fe374c788679d1 /src/usr/initservice/istepdispatcher
parent77224965fc6cb49efbfed76a0f4c480ddb010c5e (diff)
downloadtalos-hostboot-abc7d754b770b7322340bf1b3429260614ca0907.tar.gz
talos-hostboot-abc7d754b770b7322340bf1b3429260614ca0907.zip
host_coalesce_host: bup updates
- move p9_fab_iovalid to fab_iovalid common lib to avoid conflicts with hwp lib - doorbell_send to wake up the cores in istep18 - move block wakeup interrupts set later in the istep 18 flow after we have suspended the mbox and drained the interrupt queue Change-Id: I241240ca1d1787182c5baaf3bdd10283878d5798 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/52701 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Reviewed-by: SWATHI M. BHATTIPROLU <bhmadhur@in.ibm.com> Reviewed-by: Sakethan R. Kotta <sakkotta@in.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Martin Gloff <mgloff@us.ibm.com> Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com>
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