Lines Matching refs:ev_file

35 	struct devx_async_cmd_event_file *ev_file;  member
76 struct devx_async_event_file *ev_file; member
1673 struct devx_async_cmd_event_file *ev_file; in UVERBS_HANDLER() local
1679 ev_file = container_of(uobj, struct devx_async_cmd_event_file, in UVERBS_HANDLER()
1681 devx_init_event_queue(&ev_file->ev_queue); in UVERBS_HANDLER()
1682 mlx5_cmd_init_async_ctx(mdev->mdev, &ev_file->async_ctx); in UVERBS_HANDLER()
1691 struct devx_async_event_file *ev_file; in UVERBS_HANDLER() local
1705 ev_file = container_of(uobj, struct devx_async_event_file, in UVERBS_HANDLER()
1707 spin_lock_init(&ev_file->lock); in UVERBS_HANDLER()
1708 INIT_LIST_HEAD(&ev_file->event_list); in UVERBS_HANDLER()
1709 init_waitqueue_head(&ev_file->poll_wait); in UVERBS_HANDLER()
1711 ev_file->omit_data = 1; in UVERBS_HANDLER()
1712 INIT_LIST_HEAD(&ev_file->subscribed_events_list); in UVERBS_HANDLER()
1713 ev_file->dev = dev; in UVERBS_HANDLER()
1722 struct devx_async_cmd_event_file *ev_file = async_data->ev_file; in devx_query_callback() local
1723 struct devx_async_event_queue *ev_queue = &ev_file->ev_queue; in devx_query_callback()
1755 struct devx_async_cmd_event_file *ev_file; in UVERBS_HANDLER() local
1781 ev_file = container_of(fd_uobj, struct devx_async_cmd_event_file, in UVERBS_HANDLER()
1784 if (atomic_add_return(cmd_out_len, &ev_file->ev_queue.bytes_in_use) > in UVERBS_HANDLER()
1786 atomic_sub(cmd_out_len, &ev_file->ev_queue.bytes_in_use); in UVERBS_HANDLER()
1804 async_data->ev_file = ev_file; in UVERBS_HANDLER()
1807 err = mlx5_cmd_exec_cb(&ev_file->async_ctx, cmd_in, in UVERBS_HANDLER()
1822 atomic_sub(cmd_out_len, &ev_file->ev_queue.bytes_in_use); in UVERBS_HANDLER()
1980 struct devx_async_event_file *ev_file; in UVERBS_HANDLER() local
2009 ev_file = container_of(fd_uobj, struct devx_async_event_file, in UVERBS_HANDLER()
2078 uverbs_uobject_get(&ev_file->uobj); in UVERBS_HANDLER()
2091 event_sub->ev_file = ev_file; in UVERBS_HANDLER()
2108 spin_lock_irq(&ev_file->lock); in UVERBS_HANDLER()
2110 &ev_file->subscribed_events_list); in UVERBS_HANDLER()
2111 spin_unlock_irq(&ev_file->lock); in UVERBS_HANDLER()
2145 uverbs_uobject_put(&event_sub->ev_file->uobj); in UVERBS_HANDLER()
2403 struct devx_async_event_file *ev_file; in deliver_event() local
2407 ev_file = event_sub->ev_file; in deliver_event()
2409 if (ev_file->omit_data) { in deliver_event()
2410 spin_lock_irqsave(&ev_file->lock, flags); in deliver_event()
2412 ev_file->is_destroyed) { in deliver_event()
2413 spin_unlock_irqrestore(&ev_file->lock, flags); in deliver_event()
2417 list_add_tail(&event_sub->event_list, &ev_file->event_list); in deliver_event()
2418 spin_unlock_irqrestore(&ev_file->lock, flags); in deliver_event()
2419 wake_up_interruptible(&ev_file->poll_wait); in deliver_event()
2426 spin_lock_irqsave(&ev_file->lock, flags); in deliver_event()
2427 ev_file->is_overflow_err = 1; in deliver_event()
2428 spin_unlock_irqrestore(&ev_file->lock, flags); in deliver_event()
2435 spin_lock_irqsave(&ev_file->lock, flags); in deliver_event()
2436 if (!ev_file->is_destroyed) in deliver_event()
2437 list_add_tail(&event_data->list, &ev_file->event_list); in deliver_event()
2440 spin_unlock_irqrestore(&ev_file->lock, flags); in deliver_event()
2441 wake_up_interruptible(&ev_file->poll_wait); in deliver_event()
2634 struct devx_async_event_file *ev_file = filp->private_data; in devx_async_event_read() local
2642 omit_data = ev_file->omit_data; in devx_async_event_read()
2644 spin_lock_irq(&ev_file->lock); in devx_async_event_read()
2646 if (ev_file->is_overflow_err) { in devx_async_event_read()
2647 ev_file->is_overflow_err = 0; in devx_async_event_read()
2648 spin_unlock_irq(&ev_file->lock); in devx_async_event_read()
2653 while (list_empty(&ev_file->event_list)) { in devx_async_event_read()
2654 spin_unlock_irq(&ev_file->lock); in devx_async_event_read()
2659 if (wait_event_interruptible(ev_file->poll_wait, in devx_async_event_read()
2660 (!list_empty(&ev_file->event_list) || in devx_async_event_read()
2661 ev_file->is_destroyed))) { in devx_async_event_read()
2665 spin_lock_irq(&ev_file->lock); in devx_async_event_read()
2666 if (ev_file->is_destroyed) { in devx_async_event_read()
2667 spin_unlock_irq(&ev_file->lock); in devx_async_event_read()
2673 event_sub = list_first_entry(&ev_file->event_list, in devx_async_event_read()
2679 event = list_first_entry(&ev_file->event_list, in devx_async_event_read()
2687 spin_unlock_irq(&ev_file->lock); in devx_async_event_read()
2696 spin_unlock_irq(&ev_file->lock); in devx_async_event_read()
2712 struct devx_async_event_file *ev_file = filp->private_data; in devx_async_event_poll() local
2715 poll_wait(filp, &ev_file->poll_wait, wait); in devx_async_event_poll()
2717 spin_lock_irq(&ev_file->lock); in devx_async_event_poll()
2718 if (ev_file->is_destroyed) in devx_async_event_poll()
2720 else if (!list_empty(&ev_file->event_list)) in devx_async_event_poll()
2722 spin_unlock_irq(&ev_file->lock); in devx_async_event_poll()
2734 uverbs_uobject_put(&event_sub->ev_file->uobj); in devx_free_subscription()
2774 struct devx_async_event_file *ev_file = in devx_async_event_destroy_uobj() local
2778 struct mlx5_ib_dev *dev = ev_file->dev; in devx_async_event_destroy_uobj()
2780 spin_lock_irq(&ev_file->lock); in devx_async_event_destroy_uobj()
2781 ev_file->is_destroyed = 1; in devx_async_event_destroy_uobj()
2784 if (ev_file->omit_data) { in devx_async_event_destroy_uobj()
2787 list_for_each_entry_safe(event_sub, tmp, &ev_file->event_list, in devx_async_event_destroy_uobj()
2794 list_for_each_entry_safe(entry, tmp, &ev_file->event_list, in devx_async_event_destroy_uobj()
2801 spin_unlock_irq(&ev_file->lock); in devx_async_event_destroy_uobj()
2802 wake_up_interruptible(&ev_file->poll_wait); in devx_async_event_destroy_uobj()
2807 &ev_file->subscribed_events_list, file_list) { in devx_async_event_destroy_uobj()