diff options
author | Prachi Gupta <pragupta@us.ibm.com> | 2018-02-05 11:08:17 -0600 |
---|---|---|
committer | William G. Hoffa <wghoffa@us.ibm.com> | 2018-02-06 15:33:40 -0500 |
commit | abc7d754b770b7322340bf1b3429260614ca0907 (patch) | |
tree | 970c2e602edd406c3bad017398fe374c788679d1 /src/usr/initservice/istepdispatcher | |
parent | 77224965fc6cb49efbfed76a0f4c480ddb010c5e (diff) | |
download | talos-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.C | 37 |
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) { |