File tree Expand file tree Collapse file tree 1 file changed +10
-2
lines changed Expand file tree Collapse file tree 1 file changed +10
-2
lines changed Original file line number Diff line number Diff line change @@ -57,13 +57,20 @@ class uct_test_event_base : public uct_p2p_test {
57
57
struct event_ctx {
58
58
uct_ib_async_event_wait_t super;
59
59
volatile bool got;
60
+ uct_ib_device_t *dev;
60
61
};
61
62
62
63
static unsigned last_wqe_check_cb (void *arg) {
63
64
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 ;
66
69
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);
67
74
return 1 ;
68
75
}
69
76
@@ -81,6 +88,7 @@ class uct_test_event_base : public uct_p2p_test {
81
88
m_event.got = false ;
82
89
m_event.super .cb = last_wqe_check_cb;
83
90
m_event.super .cbq = &e.worker ()->progress_q ;
91
+ m_event.dev = dev (e);
84
92
85
93
if (before) {
86
94
/* move QP to error state before scheduling event callback */
You can’t perform that action at this time.
0 commit comments