Lines Matching refs:ev_file

63 	struct devx_async_cmd_event_file *ev_file;  member
104 struct devx_async_event_file *ev_file; member
1609 struct devx_async_cmd_event_file *ev_file; in UVERBS_HANDLER() local
1615 ev_file = container_of(uobj, struct devx_async_cmd_event_file, in UVERBS_HANDLER()
1617 devx_init_event_queue(&ev_file->ev_queue); in UVERBS_HANDLER()
1618 mlx5_cmd_init_async_ctx(mdev->mdev, &ev_file->async_ctx); in UVERBS_HANDLER()
1627 struct devx_async_event_file *ev_file; in UVERBS_HANDLER() local
1641 ev_file = container_of(uobj, struct devx_async_event_file, in UVERBS_HANDLER()
1643 spin_lock_init(&ev_file->lock); in UVERBS_HANDLER()
1644 INIT_LIST_HEAD(&ev_file->event_list); in UVERBS_HANDLER()
1645 init_waitqueue_head(&ev_file->poll_wait); in UVERBS_HANDLER()
1647 ev_file->omit_data = 1; in UVERBS_HANDLER()
1648 INIT_LIST_HEAD(&ev_file->subscribed_events_list); in UVERBS_HANDLER()
1649 ev_file->dev = dev; in UVERBS_HANDLER()
1658 struct devx_async_cmd_event_file *ev_file = async_data->ev_file; in devx_query_callback() local
1659 struct devx_async_event_queue *ev_queue = &ev_file->ev_queue; in devx_query_callback()
1691 struct devx_async_cmd_event_file *ev_file; in UVERBS_HANDLER() local
1717 ev_file = container_of(fd_uobj, struct devx_async_cmd_event_file, in UVERBS_HANDLER()
1720 if (atomic_add_return(cmd_out_len, &ev_file->ev_queue.bytes_in_use) > in UVERBS_HANDLER()
1722 atomic_sub(cmd_out_len, &ev_file->ev_queue.bytes_in_use); in UVERBS_HANDLER()
1740 async_data->ev_file = ev_file; in UVERBS_HANDLER()
1743 err = mlx5_cmd_exec_cb(&ev_file->async_ctx, cmd_in, in UVERBS_HANDLER()
1758 atomic_sub(cmd_out_len, &ev_file->ev_queue.bytes_in_use); in UVERBS_HANDLER()
1916 struct devx_async_event_file *ev_file; in UVERBS_HANDLER() local
1944 ev_file = container_of(fd_uobj, struct devx_async_event_file, in UVERBS_HANDLER()
2010 uverbs_uobject_get(&ev_file->uobj); in UVERBS_HANDLER()
2022 event_sub->ev_file = ev_file; in UVERBS_HANDLER()
2039 spin_lock_irq(&ev_file->lock); in UVERBS_HANDLER()
2041 &ev_file->subscribed_events_list); in UVERBS_HANDLER()
2042 spin_unlock_irq(&ev_file->lock); in UVERBS_HANDLER()
2076 uverbs_uobject_put(&event_sub->ev_file->uobj); in UVERBS_HANDLER()
2293 struct devx_async_event_file *ev_file; in deliver_event() local
2297 ev_file = event_sub->ev_file; in deliver_event()
2299 if (ev_file->omit_data) { in deliver_event()
2300 spin_lock_irqsave(&ev_file->lock, flags); in deliver_event()
2302 ev_file->is_destroyed) { in deliver_event()
2303 spin_unlock_irqrestore(&ev_file->lock, flags); in deliver_event()
2307 list_add_tail(&event_sub->event_list, &ev_file->event_list); in deliver_event()
2308 spin_unlock_irqrestore(&ev_file->lock, flags); in deliver_event()
2309 wake_up_interruptible(&ev_file->poll_wait); in deliver_event()
2316 spin_lock_irqsave(&ev_file->lock, flags); in deliver_event()
2317 ev_file->is_overflow_err = 1; in deliver_event()
2318 spin_unlock_irqrestore(&ev_file->lock, flags); in deliver_event()
2325 spin_lock_irqsave(&ev_file->lock, flags); in deliver_event()
2326 if (!ev_file->is_destroyed) in deliver_event()
2327 list_add_tail(&event_data->list, &ev_file->event_list); in deliver_event()
2330 spin_unlock_irqrestore(&ev_file->lock, flags); in deliver_event()
2331 wake_up_interruptible(&ev_file->poll_wait); in deliver_event()
2514 struct devx_async_event_file *ev_file = filp->private_data; in devx_async_event_read() local
2522 omit_data = ev_file->omit_data; in devx_async_event_read()
2524 spin_lock_irq(&ev_file->lock); in devx_async_event_read()
2526 if (ev_file->is_overflow_err) { in devx_async_event_read()
2527 ev_file->is_overflow_err = 0; in devx_async_event_read()
2528 spin_unlock_irq(&ev_file->lock); in devx_async_event_read()
2533 while (list_empty(&ev_file->event_list)) { in devx_async_event_read()
2534 spin_unlock_irq(&ev_file->lock); in devx_async_event_read()
2539 if (wait_event_interruptible(ev_file->poll_wait, in devx_async_event_read()
2540 (!list_empty(&ev_file->event_list) || in devx_async_event_read()
2541 ev_file->is_destroyed))) { in devx_async_event_read()
2545 spin_lock_irq(&ev_file->lock); in devx_async_event_read()
2546 if (ev_file->is_destroyed) { in devx_async_event_read()
2547 spin_unlock_irq(&ev_file->lock); in devx_async_event_read()
2553 event_sub = list_first_entry(&ev_file->event_list, in devx_async_event_read()
2559 event = list_first_entry(&ev_file->event_list, in devx_async_event_read()
2567 spin_unlock_irq(&ev_file->lock); in devx_async_event_read()
2576 spin_unlock_irq(&ev_file->lock); in devx_async_event_read()
2592 struct devx_async_event_file *ev_file = filp->private_data; in devx_async_event_poll() local
2595 poll_wait(filp, &ev_file->poll_wait, wait); in devx_async_event_poll()
2597 spin_lock_irq(&ev_file->lock); in devx_async_event_poll()
2598 if (ev_file->is_destroyed) in devx_async_event_poll()
2600 else if (!list_empty(&ev_file->event_list)) in devx_async_event_poll()
2602 spin_unlock_irq(&ev_file->lock); in devx_async_event_poll()
2614 uverbs_uobject_put(&event_sub->ev_file->uobj); in devx_free_subscription()
2655 struct devx_async_event_file *ev_file = in devx_async_event_destroy_uobj() local
2659 struct mlx5_ib_dev *dev = ev_file->dev; in devx_async_event_destroy_uobj()
2661 spin_lock_irq(&ev_file->lock); in devx_async_event_destroy_uobj()
2662 ev_file->is_destroyed = 1; in devx_async_event_destroy_uobj()
2665 if (ev_file->omit_data) { in devx_async_event_destroy_uobj()
2668 list_for_each_entry_safe(event_sub, tmp, &ev_file->event_list, in devx_async_event_destroy_uobj()
2675 list_for_each_entry_safe(entry, tmp, &ev_file->event_list, in devx_async_event_destroy_uobj()
2682 spin_unlock_irq(&ev_file->lock); in devx_async_event_destroy_uobj()
2683 wake_up_interruptible(&ev_file->poll_wait); in devx_async_event_destroy_uobj()
2688 &ev_file->subscribed_events_list, file_list) { in devx_async_event_destroy_uobj()