diff options
author | Dean Sanner <dsanner@us.ibm.com> | 2018-02-01 09:53:30 -0600 |
---|---|---|
committer | Dean Sanner <dsanner@us.ibm.com> | 2018-02-13 06:38:43 -0500 |
commit | 305fcd051d535220f5372051cace8968d25f8491 (patch) | |
tree | e89ac2d7331a2c495735e9f45ba1af8a5767ea0a /src/kernel/syscall.C | |
parent | b3073568dbd8ec534ad77e0ed89c03e2cedfb160 (diff) | |
download | talos-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.C | 12 |
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(); |