summaryrefslogtreecommitdiffstats
path: root/src/usr/mbox/mailboxsp.C
diff options
context:
space:
mode:
authorDean Sanner <dsanner@us.ibm.com>2014-08-26 14:43:07 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-09-11 10:24:27 -0500
commitc8b129aa555e27b5be7fb3f296e8f15f9a3348f1 (patch)
tree9a674c30ef0d1ad73455242b2531856085756382 /src/usr/mbox/mailboxsp.C
parent634b0762373b2f33226ddd706db5c1f13c3ea9d2 (diff)
downloadtalos-hostboot-c8b129aa555e27b5be7fb3f296e8f15f9a3348f1.tar.gz
talos-hostboot-c8b129aa555e27b5be7fb3f296e8f15f9a3348f1.zip
Use non blocking messages in intRP to prevent trace deadlock
Change-Id: I14cd978a7a102f75e4829d5daa369946e766e874 CQ: SW274049 Backport: release-fips820 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/13025 Tested-by: Jenkins Server Reviewed-by: Douglas R. Gilbert <dgilbert@us.ibm.com> Reviewed-by: Thi N. Tran <thi@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/mbox/mailboxsp.C')
-rw-r--r--src/usr/mbox/mailboxsp.C14
1 files changed, 5 insertions, 9 deletions
diff --git a/src/usr/mbox/mailboxsp.C b/src/usr/mbox/mailboxsp.C
index e8a9c8865..abcc93b76 100644
--- a/src/usr/mbox/mailboxsp.C
+++ b/src/usr/mbox/mailboxsp.C
@@ -239,9 +239,7 @@ void MailboxSp::msgHandler()
err = handleInterrupt();
// Respond to the interrupt handler regardless of err
- msg->data[0] = 0;
- msg->data[1] = 0;
- msg_respond(iv_msgQ,msg);
+ INTR::sendEOI(iv_msgQ,msg);
// err will be set if scom failed in mbox DD
// or MBOX_DATA_WRITE_ERR - serious - assert
@@ -408,16 +406,14 @@ void MailboxSp::msgHandler()
isync();
*ipc_msg = KernelIpc::ipc_data_area.msg_payload;
lwsync();
- // Signal message has been read, but keep area locked
- // until eoi has been sent
+ // EOI has already been sent by intrp. Simply clear
+ // ipc area so another message can be sent
KernelIpc::ipc_data_area.msg_queue_id =
- IPC_DATA_AREA_READ;
+ IPC_DATA_AREA_CLEAR;
handleIPC(static_cast<queue_id_t>(msg_q_id), ipc_msg);
}
- msg->data[0] = 0;
- msg->data[1] = 0;
- msg_respond(iv_msgQ,msg);
+ INTR::sendEOI(iv_msgQ,msg);
}
break;
OpenPOWER on IntegriCloud