Lines Matching refs:ev_file

35 	struct devx_async_cmd_event_file *ev_file;  member
76 struct devx_async_event_file *ev_file; member
1668 struct devx_async_cmd_event_file *ev_file; in UVERBS_HANDLER() local
1674 ev_file = container_of(uobj, struct devx_async_cmd_event_file, in UVERBS_HANDLER()
1676 devx_init_event_queue(&ev_file->ev_queue); in UVERBS_HANDLER()
1677 mlx5_cmd_init_async_ctx(mdev->mdev, &ev_file->async_ctx); in UVERBS_HANDLER()
1686 struct devx_async_event_file *ev_file; in UVERBS_HANDLER() local
1700 ev_file = container_of(uobj, struct devx_async_event_file, in UVERBS_HANDLER()
1702 spin_lock_init(&ev_file->lock); in UVERBS_HANDLER()
1703 INIT_LIST_HEAD(&ev_file->event_list); in UVERBS_HANDLER()
1704 init_waitqueue_head(&ev_file->poll_wait); in UVERBS_HANDLER()
1706 ev_file->omit_data = 1; in UVERBS_HANDLER()
1707 INIT_LIST_HEAD(&ev_file->subscribed_events_list); in UVERBS_HANDLER()
1708 ev_file->dev = dev; in UVERBS_HANDLER()
1717 struct devx_async_cmd_event_file *ev_file = async_data->ev_file; in devx_query_callback() local
1718 struct devx_async_event_queue *ev_queue = &ev_file->ev_queue; in devx_query_callback()
1750 struct devx_async_cmd_event_file *ev_file; in UVERBS_HANDLER() local
1776 ev_file = container_of(fd_uobj, struct devx_async_cmd_event_file, in UVERBS_HANDLER()
1779 if (atomic_add_return(cmd_out_len, &ev_file->ev_queue.bytes_in_use) > in UVERBS_HANDLER()
1781 atomic_sub(cmd_out_len, &ev_file->ev_queue.bytes_in_use); in UVERBS_HANDLER()
1799 async_data->ev_file = ev_file; in UVERBS_HANDLER()
1802 err = mlx5_cmd_exec_cb(&ev_file->async_ctx, cmd_in, in UVERBS_HANDLER()
1817 atomic_sub(cmd_out_len, &ev_file->ev_queue.bytes_in_use); in UVERBS_HANDLER()
1975 struct devx_async_event_file *ev_file; in UVERBS_HANDLER() local
2004 ev_file = container_of(fd_uobj, struct devx_async_event_file, in UVERBS_HANDLER()
2073 uverbs_uobject_get(&ev_file->uobj); in UVERBS_HANDLER()
2086 event_sub->ev_file = ev_file; in UVERBS_HANDLER()
2103 spin_lock_irq(&ev_file->lock); in UVERBS_HANDLER()
2105 &ev_file->subscribed_events_list); in UVERBS_HANDLER()
2106 spin_unlock_irq(&ev_file->lock); in UVERBS_HANDLER()
2140 uverbs_uobject_put(&event_sub->ev_file->uobj); in UVERBS_HANDLER()
2398 struct devx_async_event_file *ev_file; in deliver_event() local
2402 ev_file = event_sub->ev_file; in deliver_event()
2404 if (ev_file->omit_data) { in deliver_event()
2405 spin_lock_irqsave(&ev_file->lock, flags); in deliver_event()
2407 ev_file->is_destroyed) { in deliver_event()
2408 spin_unlock_irqrestore(&ev_file->lock, flags); in deliver_event()
2412 list_add_tail(&event_sub->event_list, &ev_file->event_list); in deliver_event()
2413 spin_unlock_irqrestore(&ev_file->lock, flags); in deliver_event()
2414 wake_up_interruptible(&ev_file->poll_wait); in deliver_event()
2421 spin_lock_irqsave(&ev_file->lock, flags); in deliver_event()
2422 ev_file->is_overflow_err = 1; in deliver_event()
2423 spin_unlock_irqrestore(&ev_file->lock, flags); in deliver_event()
2430 spin_lock_irqsave(&ev_file->lock, flags); in deliver_event()
2431 if (!ev_file->is_destroyed) in deliver_event()
2432 list_add_tail(&event_data->list, &ev_file->event_list); in deliver_event()
2435 spin_unlock_irqrestore(&ev_file->lock, flags); in deliver_event()
2436 wake_up_interruptible(&ev_file->poll_wait); in deliver_event()
2629 struct devx_async_event_file *ev_file = filp->private_data; in devx_async_event_read() local
2637 omit_data = ev_file->omit_data; in devx_async_event_read()
2639 spin_lock_irq(&ev_file->lock); in devx_async_event_read()
2641 if (ev_file->is_overflow_err) { in devx_async_event_read()
2642 ev_file->is_overflow_err = 0; in devx_async_event_read()
2643 spin_unlock_irq(&ev_file->lock); in devx_async_event_read()
2648 while (list_empty(&ev_file->event_list)) { in devx_async_event_read()
2649 spin_unlock_irq(&ev_file->lock); in devx_async_event_read()
2654 if (wait_event_interruptible(ev_file->poll_wait, in devx_async_event_read()
2655 (!list_empty(&ev_file->event_list) || in devx_async_event_read()
2656 ev_file->is_destroyed))) { in devx_async_event_read()
2660 spin_lock_irq(&ev_file->lock); in devx_async_event_read()
2661 if (ev_file->is_destroyed) { in devx_async_event_read()
2662 spin_unlock_irq(&ev_file->lock); in devx_async_event_read()
2668 event_sub = list_first_entry(&ev_file->event_list, in devx_async_event_read()
2674 event = list_first_entry(&ev_file->event_list, in devx_async_event_read()
2682 spin_unlock_irq(&ev_file->lock); in devx_async_event_read()
2691 spin_unlock_irq(&ev_file->lock); in devx_async_event_read()
2707 struct devx_async_event_file *ev_file = filp->private_data; in devx_async_event_poll() local
2710 poll_wait(filp, &ev_file->poll_wait, wait); in devx_async_event_poll()
2712 spin_lock_irq(&ev_file->lock); in devx_async_event_poll()
2713 if (ev_file->is_destroyed) in devx_async_event_poll()
2715 else if (!list_empty(&ev_file->event_list)) in devx_async_event_poll()
2717 spin_unlock_irq(&ev_file->lock); in devx_async_event_poll()
2729 uverbs_uobject_put(&event_sub->ev_file->uobj); in devx_free_subscription()
2769 struct devx_async_event_file *ev_file = in devx_async_event_destroy_uobj() local
2773 struct mlx5_ib_dev *dev = ev_file->dev; in devx_async_event_destroy_uobj()
2775 spin_lock_irq(&ev_file->lock); in devx_async_event_destroy_uobj()
2776 ev_file->is_destroyed = 1; in devx_async_event_destroy_uobj()
2779 if (ev_file->omit_data) { in devx_async_event_destroy_uobj()
2782 list_for_each_entry_safe(event_sub, tmp, &ev_file->event_list, in devx_async_event_destroy_uobj()
2789 list_for_each_entry_safe(entry, tmp, &ev_file->event_list, in devx_async_event_destroy_uobj()
2796 spin_unlock_irq(&ev_file->lock); in devx_async_event_destroy_uobj()
2797 wake_up_interruptible(&ev_file->poll_wait); in devx_async_event_destroy_uobj()
2802 &ev_file->subscribed_events_list, file_list) { in devx_async_event_destroy_uobj()