Revision: 2298
Author:
regra...@gmail.com
Date: Thu Mar 12 15:55:21 2015 UTC
Log: Fix for CTs not triggering at the correct thresholds for wiating
triggered operations
https://code.google.com/p/portals4/source/detail?r=2298
Modified:
/trunk/src/ib/ptl_ct.c
/trunk/src/ib/ptl_me.c
=======================================
--- /trunk/src/ib/ptl_ct.c Tue Mar 10 17:41:54 2015 UTC
+++ /trunk/src/ib/ptl_ct.c Thu Mar 12 15:55:21 2015 UTC
@@ -519,7 +519,8 @@
}
#ifdef WITH_TRIG_ME_OPS
} else if (buf->type == BUF_TRIGGERED_ME) {
- if (ct->info.interrupt) {
+ ptl_info("check for triggered ME ops\n");
+ if (ct->info.interrupt) {
list_del(l);
atomic_dec(&ct->list_size);
@@ -531,7 +532,8 @@
PTL_FASTLOCK_LOCK(&ct->lock);
} else if ((ct->info.event.success + ct->info.event.failure) >=
buf->ct_threshold) {
- ptl_info("ME operation triggered: %i \n", buf->op);
+ ptl_info("ME operation triggered: %i on ct of: %i and
threshold %i\n",
+ buf->op,ct->info.event.success,buf->ct_threshold);
list_del(l);
atomic_dec(&ct->list_size);
@@ -543,7 +545,7 @@
} else {
ptl_info("ME operation not triggered %i:%i
threshold: %i\n",
(int)ct->info.event.success,
- (int)ct->info.event.failure, (int)buf->threshold);
+ (int)ct->info.event.failure,
(int)buf->ct_threshold);
}
#endif
} else {
=======================================
--- /trunk/src/ib/ptl_me.c Tue Mar 10 17:41:54 2015 UTC
+++ /trunk/src/ib/ptl_me.c Thu Mar 12 15:55:21 2015 UTC
@@ -549,7 +549,7 @@
/* 1st check to see whether the condition is already met. */
if ((me_ct->info.event.failure + me_ct->info.event.success) >=
- buf->threshold) {
+ buf->ct_threshold) {
PTL_FASTLOCK_UNLOCK(&me_ct->lock);
do_trig_me_op(buf,me_ct);
@@ -561,7 +561,7 @@
/* We must check again to avoid a race with
make_ct_event/ct_inc_ct_set. */
if ((me_ct->info.event.success + me_ct->info.event.failure) >=
- buf->threshold) {
+ buf->ct_threshold) {
/* Something arrived while we were adding the buffer. */
PTL_FASTLOCK_UNLOCK(&me_ct->lock);
ct_check(me_ct);