summaryrefslogtreecommitdiffstats
path: root/src/include/kernel/workitem.H
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/include/kernel/workitem.H
parentdaf95f9b2b66313079186c2d8669ffa75155056f (diff)
downloadblackbird-hostboot-b42194c6063f64d59fe1c360fa4ae4edd85ad2f3.tar.gz
blackbird-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/include/kernel/workitem.H')
-rw-r--r--src/include/kernel/workitem.H68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/include/kernel/workitem.H b/src/include/kernel/workitem.H
new file mode 100644
index 000000000..3a41cc526
--- /dev/null
+++ b/src/include/kernel/workitem.H
@@ -0,0 +1,68 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/include/kernel/workitem.H $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2016 */
+/* [+] International Business Machines Corp. */
+/* */
+/* */
+/* Licensed under the Apache License, Version 2.0 (the "License"); */
+/* you may not use this file except in compliance with the License. */
+/* You may obtain a copy of the License at */
+/* */
+/* http://www.apache.org/licenses/LICENSE-2.0 */
+/* */
+/* Unless required by applicable law or agreed to in writing, software */
+/* distributed under the License is distributed on an "AS IS" BASIS, */
+/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
+/* implied. See the License for the specific language governing */
+/* permissions and limitations under the License. */
+/* */
+/* IBM_PROLOG_END_TAG */
+
+#ifndef __KERNEL_WORKITEM_H
+#define __KERNEL_WORKITEM_H
+
+//The WorkItem class is a generic base class for a work item.
+class KernelWorkItem
+{
+ public:
+ //Virtual operator to be defined by child classes to define proper
+ // behavior in that situation
+ virtual void operator() (void);
+
+ /** Default destructor */
+ virtual ~KernelWorkItem() = default;
+
+ //Next Pointer is needed to be used with the lockfree::Stack container
+ KernelWorkItem* next;
+};
+
+//A work item to be created/executed during a CPU core/thread
+// wakeup scenario
+class CpuWakeupDoorbellWorkItem : public KernelWorkItem
+{
+ public:
+ //Implement operator() function
+ void operator() (void);
+
+ //No data to clean up, use default destructor
+ ~CpuWakeupDoorbellWorkItem() = default;
+};
+
+
+/* TODO RTC 150861
+
+//A work item to be created/executed during an IPC scenario
+class IPCDoorbellWorkItem : public KernelWorkItem
+{
+ public:
+ //Implement operator() function
+ void operator() (void);
+};
+**/
+#endif
+
OpenPOWER on IntegriCloud