diff options
author | Bill Hoffa <wghoffa@us.ibm.com> | 2016-01-13 14:06:31 -0600 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2016-05-06 11:03:22 -0400 |
commit | b42194c6063f64d59fe1c360fa4ae4edd85ad2f3 (patch) | |
tree | b055e27081164600409203f31c3eac93f32397cb /src/kernel/misc.C | |
parent | daf95f9b2b66313079186c2d8669ffa75155056f (diff) | |
download | talos-hostboot-b42194c6063f64d59fe1c360fa4ae4edd85ad2f3.tar.gz talos-hostboot-b42194c6063f64d59fe1c360fa4ae4edd85ad2f3.zip |
Doorbell Interrupt Base Support for Core/Thread Wakeup
This change includes:
- Implementation of a generic KernelWorkItem Class
- Kernel functionality for doorbell send to specific PIRs
- Kernel changes to send core/thread Wakeup doorbells using
doorbell_send() + placing KernelWorkItems on a cpu stack obj
to be executed during doorbell wakeup
- Kernel Interrupt Message handler changes to send wakeup msgs
- Interrupt Resource Provider (INTRRP) Changes to handle
wakeup msgs and monitor for timeouts
- Changes to the IPL flow to invoke proper Core/Thread Wakeup
- A basic outline (commented out) for how IPC messages can be
implemented in the future
Change-Id: I547fb8719bac657def561565ae11ab18cde72096
CMVC-Prereq: 992722
RTC:137564
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/22815
Tested-by: Jenkins Server
Tested-by: FSP CI Jenkins
Reviewed-by: Andrew J. Geissler <andrewg@us.ibm.com>
Reviewed-by: Prachi Gupta <pragupta@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/kernel/misc.C')
-rw-r--r-- | src/kernel/misc.C | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/kernel/misc.C b/src/kernel/misc.C index 080c0adf3..3b25ae705 100644 --- a/src/kernel/misc.C +++ b/src/kernel/misc.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2011,2015 */ +/* Contributors Listed Below - COPYRIGHT 2011,2016 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -41,7 +41,7 @@ #include <kernel/ipc.H> #include <kernel/timemgr.H> #include <util/singleton.H> - +#include <kernel/doorbell.H> extern "C" void kernel_shutdown(size_t, uint64_t, uint64_t, uint64_t, @@ -340,8 +340,10 @@ namespace KernelMisc //Issue sbe master workaround InterruptMsgHdlr::issueSbeMboxWA(); + // NOTE: The cpu_t structures for theads 1:3 were created // during init (CpuManager::init). + // #ifdef HOSTBOOT_REAL_WINKLE // @todo- RTC 141924 Start the other threads 1:3 in a new manner @@ -349,6 +351,7 @@ namespace KernelMisc // Maybe something like: sendIPI(..) or addCpuCore(..) // Need interrupt code in place for this. + #else // get other 3 threads going in SIMICs for now MAGIC_INSTRUCTION(MAGIC_WAKE_OTHER_THREADS); @@ -371,6 +374,7 @@ namespace KernelMisc // get new core going in SIMICS MAGIC_INSTRUCTION(MAGIC_WAKE_FUSED_THREADS); #endif + } // end if fused core mode } @@ -440,7 +444,7 @@ namespace KernelMisc { if (slave->winkled) { - InterruptMsgHdlr::sendIPI(i); + InterruptMsgHdlr::sendThreadWakeupMsg(i); } } } |