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 {
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 */ 
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments