Skip to content

Commit 55c2885

Browse files
authored
Merge pull request #6916 from Artemy-Mellanox/topic/fix-event-cb-2
GTEST: Synch last_wqe callback with main thread
2 parents 034b238 + d492e5c commit 55c2885

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

test/gtest/uct/ib/test_ib_event.cc

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,20 @@ class uct_test_event_base : public uct_p2p_test {
5757
struct event_ctx {
5858
uct_ib_async_event_wait_t super;
5959
volatile bool got;
60+
uct_ib_device_t *dev;
6061
};
6162

6263
static unsigned last_wqe_check_cb(void *arg) {
6364
event_ctx *event = (event_ctx *)arg;
64-
event->got = true;
65-
ucs_callbackq_remove_safe(event->super.cbq, event->super.cb_id);
65+
int cb_id;
66+
67+
ucs_spin_lock(&event->dev->async_event_lock);
68+
cb_id = event->super.cb_id;
6669
event->super.cb_id = UCS_CALLBACKQ_ID_NULL;
70+
ucs_spin_unlock(&event->dev->async_event_lock);
71+
72+
event->got = true;
73+
ucs_callbackq_remove_safe(event->super.cbq, cb_id);
6774
return 1;
6875
}
6976

@@ -81,6 +88,7 @@ class uct_test_event_base : public uct_p2p_test {
8188
m_event.got = false;
8289
m_event.super.cb = last_wqe_check_cb;
8390
m_event.super.cbq = &e.worker()->progress_q;
91+
m_event.dev = dev(e);
8492

8593
if (before) {
8694
/* move QP to error state before scheduling event callback */

0 commit comments

Comments
 (0)