summaryrefslogtreecommitdiffstats
path: root/src/kernel
diff options
context:
space:
mode:
authorDean Sanner <dsanner@us.ibm.com>2014-02-14 12:24:24 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-02-14 15:41:17 -0600
commite0f95e3ce5adc0156db9e5e735325ebc0c6b0bfc (patch)
tree608e75505caed017eb0e7bf889810c0931b8125a /src/kernel
parent9ea4a28823a5c17d8adc448635fdec1e18c5ce5d (diff)
downloadtalos-hostboot-e0f95e3ce5adc0156db9e5e735325ebc0c6b0bfc.tar.gz
talos-hostboot-e0f95e3ce5adc0156db9e5e735325ebc0c6b0bfc.zip
Fix interrupt msg loss on multiple interrupts
CQ:SW247017 Change-Id: I66b27aeac0c23366deb390963edf5d88fbd8406c Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/8862 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/kernel')
-rw-r--r--src/kernel/intmsghandler.C10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/kernel/intmsghandler.C b/src/kernel/intmsghandler.C
index 1443847e1..1ce9de1b8 100644
--- a/src/kernel/intmsghandler.C
+++ b/src/kernel/intmsghandler.C
@@ -100,10 +100,14 @@ void InterruptMsgHdlr::handleInterrupt()
if(cv_instance)
{
cv_instance->iv_lock.lock();
+
+ //sendMessage needs a unique key, otherwise it
+ //drops messages. PIR is not unique enough, make
+ //it (xirr<<32) | PIR
+ uint64_t l_data0 = pir | (static_cast<uint64_t>(xirr) <<32);
cv_instance->sendMessage(MSG_INTR_EXTERN,
- reinterpret_cast<void*>(pir),
- reinterpret_cast<void*>(
- static_cast<uint64_t>(xirr)),
+ reinterpret_cast<void*>(l_data0),
+ NULL,
NULL);
cv_instance->iv_lock.unlock();
}
OpenPOWER on IntegriCloud