From 1eac1bea6c0960e47d3929f519cbb78071e40b7f Mon Sep 17 00:00:00 2001 From: Dean Sanner Date: Thu, 15 Feb 2018 07:04:43 -0600 Subject: 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 Tested-by: Jenkins Server Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Tested-by: FSP CI Jenkins Reviewed-by: William G. Hoffa --- src/include/kernel/intmsghandler.H | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/include/kernel/intmsghandler.H') 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; }; -- cgit v1.2.1