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/include/kernel/workitem.H | |
| parent | daf95f9b2b66313079186c2d8669ffa75155056f (diff) | |
| download | blackbird-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.H | 68 |
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 + |

