diff options
Diffstat (limited to 'src/include/kernel')
-rw-r--r-- | src/include/kernel/doorbell.H | 10 | ||||
-rw-r--r-- | src/include/kernel/intmsghandler.H | 16 | ||||
-rw-r--r-- | src/include/kernel/workitem.H | 7 |
3 files changed, 23 insertions, 10 deletions
diff --git a/src/include/kernel/doorbell.H b/src/include/kernel/doorbell.H index 8275c4fc7..1d01ce119 100644 --- a/src/include/kernel/doorbell.H +++ b/src/include/kernel/doorbell.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2015,2016 */ +/* Contributors Listed Below - COPYRIGHT 2015,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -50,11 +50,11 @@ void doorbell_send(uint64_t i_pir); */ void send_doorbell_wakeup(uint64_t i_pir); -/* TODO RTC 150861 - * send_doorbell_ipc +/** Send an IPC message using a doorbell * - * void send_doorbell_ipc(cpu_t *i_cpu, uint64_t pir); -**/ + * @param i_pir - PIR to send IPC message to + */ +void send_doorbell_ipc(uint64_t i_pir); enum { diff --git a/src/include/kernel/intmsghandler.H b/src/include/kernel/intmsghandler.H index 8f7c08559..9e5a001ed 100644 --- a/src/include/kernel/intmsghandler.H +++ b/src/include/kernel/intmsghandler.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2011,2016 */ +/* Contributors Listed Below - COPYRIGHT 2011,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -73,8 +73,11 @@ class InterruptMsgHdlr : public MessageHandler ACK_HYPERVISOR_INT_REG_OFFSET = 0x830, INTP_BAR_VALUE = 0xFFFFE000, // upper 32 bits of IPCBAR - INTERPROC_XISR = 2, //IPI XISR is 2 + + MSG_KEY_THREAD_WKUP = 0x8000000000000000ul, + MSG_KEY_ADD_CPU_CORE = 0x4000000000000000ul, + MSG_KEY_IPC_MSG = 0x2000000000000000ul, }; /** @@ -156,6 +159,15 @@ class InterruptMsgHdlr : public MessageHandler static void sendThreadWakeupMsg(uint64_t i_pir); /** + * Send message to interrupt resource provider (intrrP) in userspace to + * indicate it was sent an IPC message. The intrrp will re-route the + * message to the appropriate handler. + * + * @param[in] i_pir - The PIR of the CPU to send doorbell to. + */ + static void sendIpcMsg(uint64_t i_pir); + + /** * Issue the sbe/mailbox workaround (issue a mbox EOI to mailbox) * */ diff --git a/src/include/kernel/workitem.H b/src/include/kernel/workitem.H index 3a41cc526..6d2f4b6b1 100644 --- a/src/include/kernel/workitem.H +++ b/src/include/kernel/workitem.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2016 */ +/* Contributors Listed Below - COPYRIGHT 2016,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -54,7 +54,6 @@ class CpuWakeupDoorbellWorkItem : public KernelWorkItem }; -/* TODO RTC 150861 //A work item to be created/executed during an IPC scenario class IPCDoorbellWorkItem : public KernelWorkItem @@ -62,7 +61,9 @@ class IPCDoorbellWorkItem : public KernelWorkItem public: //Implement operator() function void operator() (void); + + //No data to clean up, use default destructor + ~IPCDoorbellWorkItem() = default; }; -**/ #endif |