• Hoang-Nam Nguyen's avatar
    IB/ehca: Fix sync between completion handler and destroy cq · 31726798
    Hoang-Nam Nguyen authored
    This patch fixes two issues reported by Roland Dreier and Christoph Hellwig:
    
    - Mismatched sync/locking between completion handler and destroy cq We
      introduced a counter nr_events per cq to track number of irq events
      seen. This counter is incremented when an event queue entry is seen
      and decremented after completion handler has been called regardless
      if scaling code is active or not. Note that nr_callbacks tracks
      number of events assigned to a cpu and both counters can potentially
      diverge.
    
      The sync between running completion handler and destroy cq is done
      by using the global spin lock ehca_cq_idr_lock.
    
    - Replace yield by wait_event on the counter above to become zero.
    Signed-off-by: default avatarHoang-Nam Nguyen <hnguyen@de.ibm.com>
    Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
    31726798
ehca_irq.c 20.9 KB