summaryrefslogtreecommitdiffstats
path: root/src/kernel/syscall.C
diff options
context:
space:
mode:
authorDean Sanner <dsanner@us.ibm.com>2018-02-01 09:53:30 -0600
committerDean Sanner <dsanner@us.ibm.com>2018-02-13 06:38:43 -0500
commit305fcd051d535220f5372051cace8968d25f8491 (patch)
treee89ac2d7331a2c495735e9f45ba1af8a5767ea0a /src/kernel/syscall.C
parentb3073568dbd8ec534ad77e0ed89c03e2cedfb160 (diff)
downloadtalos-hostboot-305fcd051d535220f5372051cace8968d25f8491.tar.gz
talos-hostboot-305fcd051d535220f5372051cace8968d25f8491.zip
Updates to make multinode IPC work
-Fixed node/group id calculations -Reduced dbell printk to prevent printk overflow -Fixed architectual hole in how internode IPC works Workitems won't work, instead just always check for IPC on any doorbells to master thread -Changed PIR tracing to print out in hex Change-Id: I25eb7f87fd812a90f98a7724b1ac1100f764fe7b Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/53187 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Prachi Gupta <pragupta@us.ibm.com> Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Dean Sanner <dsanner@us.ibm.com>
Diffstat (limited to 'src/kernel/syscall.C')
-rw-r--r--src/kernel/syscall.C12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/kernel/syscall.C b/src/kernel/syscall.C
index d4df30733..04c65eb10 100644
--- a/src/kernel/syscall.C
+++ b/src/kernel/syscall.C
@@ -67,6 +67,18 @@ void kernel_execute_hype_doorbell()
l_work = t->cpu->doorbell_actions.pop();
}
+ //IPC messages come in only on the master, so
+ //If this is a doorbell to the master -- check
+ cpu_t* master = CpuManager::getMasterCPU();
+ if(t->cpu == master)
+ {
+ size_t pir = getPIR();
+ printk("IPC msg pir %lx incoming\n", pir);
+ //Send message to the intrrp in userspace indicating it has
+ // potential a pending IPC message.
+ InterruptMsgHdlr::sendIpcMsg(pir);
+ }
+
if (t->cpu->idle_task == t)
{
t->cpu->scheduler->returnRunnable();
OpenPOWER on IntegriCloud