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/cpu.H | |
| 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/include/kernel/cpu.H')
| -rw-r--r-- | src/include/kernel/cpu.H | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/include/kernel/cpu.H b/src/include/kernel/cpu.H index 963063b34..b967c1319 100644 --- a/src/include/kernel/cpu.H +++ b/src/include/kernel/cpu.H @@ -5,7 +5,9 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* COPYRIGHT International Business Machines Corp. 2010,2014 */ +/* Contributors Listed Below - COPYRIGHT 2010,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. */ @@ -29,9 +31,11 @@ #define __KERNEL_CPU_H #include <kernel/types.h> +#include <kernel/workitem.H> #include <arch/ppc.H> #include <builtins.h> #include <sys/sync.h> +#include <util/lockfree/stack.H> // See BookIV PIR definition. #define KERNEL_MAX_SUPPORTED_NODES 8 @@ -97,6 +101,8 @@ struct cpu_t /** Sequence ID of CPU initialization. */ uint64_t cpu_start_seqid; + /** Stack of WorkItems to be executed during doorbell wakeup */ + Util::Lockfree::Stack<KernelWorkItem> doorbell_actions; }; /** @fn getCpuId |

