summaryrefslogtreecommitdiffstats
path: root/src/kernel/misc.C
diff options
context:
space:
mode:
authorBill Hoffa <wghoffa@us.ibm.com>2016-01-13 14:06:31 -0600
committerDaniel M. Crowell <dcrowell@us.ibm.com>2016-05-06 11:03:22 -0400
commitb42194c6063f64d59fe1c360fa4ae4edd85ad2f3 (patch)
treeb055e27081164600409203f31c3eac93f32397cb /src/kernel/misc.C
parentdaf95f9b2b66313079186c2d8669ffa75155056f (diff)
downloadtalos-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.C10
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);
}
}
}
OpenPOWER on IntegriCloud