summaryrefslogtreecommitdiffstats
path: root/src/kernel
diff options
context:
space:
mode:
authorDoug Gilbert <dgilbert@us.ibm.com>2013-12-19 14:25:06 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-01-10 17:04:25 -0600
commit613d36e02e5ce4e5b69cbb02483e9fa352666ecd (patch)
tree7a17f70f9a5b33ab4ddd6acebb8d0f4ff135594a /src/kernel
parent7df8e6fc5362bb57e49b2e7d8e256cac2785e726 (diff)
downloadtalos-hostboot-613d36e02e5ce4e5b69cbb02483e9fa352666ecd.tar.gz
talos-hostboot-613d36e02e5ce4e5b69cbb02483e9fa352666ecd.zip
IPC deadlock
CQ: SW239987 Change-Id: I2a33e767916cd80ae3b4acc604104963cbc648ac Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/7828 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.C2
-rw-r--r--src/kernel/ipc.C10
2 files changed, 7 insertions, 5 deletions
diff --git a/src/kernel/intmsghandler.C b/src/kernel/intmsghandler.C
index e8fd5e66c..d3e6a8298 100644
--- a/src/kernel/intmsghandler.C
+++ b/src/kernel/intmsghandler.C
@@ -5,7 +5,7 @@
/* */
/* IBM CONFIDENTIAL */
/* */
-/* COPYRIGHT International Business Machines Corp. 2011,2013 */
+/* COPYRIGHT International Business Machines Corp. 2011,2014 */
/* */
/* p1 */
/* */
diff --git a/src/kernel/ipc.C b/src/kernel/ipc.C
index 3f522c4ee..6a63225fc 100644
--- a/src/kernel/ipc.C
+++ b/src/kernel/ipc.C
@@ -5,7 +5,7 @@
/* */
/* IBM CONFIDENTIAL */
/* */
-/* COPYRIGHT International Business Machines Corp. 2013 */
+/* COPYRIGHT International Business Machines Corp. 2013,2014 */
/* */
/* p1 */
/* */
@@ -62,7 +62,7 @@ void KernelIpc::send(uint64_t i_q, msg_t * i_msg)
dest_addr += dest_hrmor;
dest_addr |= 0x8000000000000000ul;
- printkd("IPC Dest addr %lx\n",dest_addr);
+ printkd("IPC Dest addr %lx Q_id:%lx\n",dest_addr,i_q);
// pointer to the ipc_data_area in the destination node
ipc_data_area_t * p_dest =
@@ -70,8 +70,8 @@ void KernelIpc::send(uint64_t i_q, msg_t * i_msg)
// get lock on IPC data area in other node
while(false == __sync_bool_compare_and_swap(&(p_dest->msg_queue_id),
- 0,
- 0xFFFFFFFFFFFFFFFFul))
+ IPC_DATA_AREA_CLEAR,
+ IPC_DATA_AREA_LOCKED))
{
setThreadPriorityLow();
}
@@ -83,6 +83,8 @@ void KernelIpc::send(uint64_t i_q, msg_t * i_msg)
p_dest->msg_queue_id = i_q; // set destination queue id
lwsync();
+ printkd("IPC send from PIR %lx to PIR %x\n",getPIR(),p_dest->pir);
+
// send IPI
InterruptMsgHdlr::sendIPI(p_dest->pir);
OpenPOWER on IntegriCloud