summaryrefslogtreecommitdiffstats
path: root/src/include/kernel
diff options
context:
space:
mode:
authorDean Sanner <dsanner@us.ibm.com>2018-02-15 07:04:43 -0600
committerWilliam G. Hoffa <wghoffa@us.ibm.com>2018-02-16 10:02:29 -0500
commit1eac1bea6c0960e47d3929f519cbb78071e40b7f (patch)
tree72ad4a39fa44534a8e896fcf1c4583b65b1a3102 /src/include/kernel
parentfe7571698e857cdcafceac0f120e66293892d00e (diff)
downloadtalos-hostboot-1eac1bea6c0960e47d3929f519cbb78071e40b7f.tar.gz
talos-hostboot-1eac1bea6c0960e47d3929f519cbb78071e40b7f.zip
Close race condition in multi instance IPC
P9 Doorbells operate differently than P8 IPI mechanism, creating a race condition. Basically because the HB kernel turns a doorbell into a message, and then is ready for another one -- it can lose the next one since repeated messages with same key are dropped (IPC handling clears memory comm area, other HB instances notice, fill and drop a doorbell before getting back into kernel) Change-Id: I8eb6f010600afb9de365c8942fcd24227903436f Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/54118 Reviewed-by: Prachi Gupta <pragupta@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com>
Diffstat (limited to 'src/include/kernel')
-rw-r--r--src/include/kernel/intmsghandler.H2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/include/kernel/intmsghandler.H b/src/include/kernel/intmsghandler.H
index 9e5a001ed..2dad00c2b 100644
--- a/src/include/kernel/intmsghandler.H
+++ b/src/include/kernel/intmsghandler.H
@@ -78,6 +78,7 @@ class InterruptMsgHdlr : public MessageHandler
MSG_KEY_THREAD_WKUP = 0x8000000000000000ul,
MSG_KEY_ADD_CPU_CORE = 0x4000000000000000ul,
MSG_KEY_IPC_MSG = 0x2000000000000000ul,
+ MSG_IPC_SALT = 0x0000000100000000ul,
};
/**
@@ -177,6 +178,7 @@ class InterruptMsgHdlr : public MessageHandler
static InterruptMsgHdlr * cv_instance;
static uint64_t cv_ipc_base_address;
+ static uint64_t cv_ipc_salt;
Spinlock iv_lock;
};
OpenPOWER on IntegriCloud