Lines Matching refs:file
284 ssize_t ib_uverbs_get_context(struct ib_uverbs_file *file, in ib_uverbs_get_context() argument
291 struct ib_device *ibdev = file->device->ib_dev; in ib_uverbs_get_context()
296 struct file *filp; in ib_uverbs_get_context()
305 mutex_lock(&file->mutex); in ib_uverbs_get_context()
307 if (file->ucontext) { in ib_uverbs_get_context()
351 resp.num_comp_vectors = file->device->num_comp_vectors; in ib_uverbs_get_context()
358 filp = ib_uverbs_alloc_event_file(file, 1); in ib_uverbs_get_context()
370 file->async_file = filp->private_data; in ib_uverbs_get_context()
372 INIT_IB_EVENT_HANDLER(&file->event_handler, file->device->ib_dev, in ib_uverbs_get_context()
374 ret = ib_register_event_handler(&file->event_handler); in ib_uverbs_get_context()
378 kref_get(&file->async_file->ref); in ib_uverbs_get_context()
379 kref_get(&file->ref); in ib_uverbs_get_context()
380 file->ucontext = ucontext; in ib_uverbs_get_context()
384 mutex_unlock(&file->mutex); in ib_uverbs_get_context()
399 mutex_unlock(&file->mutex); in ib_uverbs_get_context()
403 static void copy_query_dev_fields(struct ib_uverbs_file *file, in copy_query_dev_fields() argument
408 resp->node_guid = file->device->ib_dev->node_guid; in copy_query_dev_fields()
446 resp->phys_port_cnt = file->device->ib_dev->phys_port_cnt; in copy_query_dev_fields()
449 ssize_t ib_uverbs_query_device(struct ib_uverbs_file *file, in ib_uverbs_query_device() argument
464 ret = ib_query_device(file->device->ib_dev, &attr); in ib_uverbs_query_device()
469 copy_query_dev_fields(file, &resp, &attr); in ib_uverbs_query_device()
478 ssize_t ib_uverbs_query_port(struct ib_uverbs_file *file, in ib_uverbs_query_port() argument
493 ret = ib_query_port(file->device->ib_dev, cmd.port_num, &attr); in ib_uverbs_query_port()
518 resp.link_layer = rdma_port_get_link_layer(file->device->ib_dev, in ib_uverbs_query_port()
528 ssize_t ib_uverbs_alloc_pd(struct ib_uverbs_file *file, in ib_uverbs_alloc_pd() argument
553 init_uobj(uobj, 0, file->ucontext, &pd_lock_class); in ib_uverbs_alloc_pd()
556 pd = file->device->ib_dev->alloc_pd(file->device->ib_dev, in ib_uverbs_alloc_pd()
557 file->ucontext, &udata); in ib_uverbs_alloc_pd()
563 pd->device = file->device->ib_dev; in ib_uverbs_alloc_pd()
581 mutex_lock(&file->mutex); in ib_uverbs_alloc_pd()
582 list_add_tail(&uobj->list, &file->ucontext->pd_list); in ib_uverbs_alloc_pd()
583 mutex_unlock(&file->mutex); in ib_uverbs_alloc_pd()
602 ssize_t ib_uverbs_dealloc_pd(struct ib_uverbs_file *file, in ib_uverbs_dealloc_pd() argument
613 uobj = idr_write_uobj(&ib_uverbs_pd_idr, cmd.pd_handle, file->ucontext); in ib_uverbs_dealloc_pd()
628 mutex_lock(&file->mutex); in ib_uverbs_dealloc_pd()
630 mutex_unlock(&file->mutex); in ib_uverbs_dealloc_pd()
722 ssize_t ib_uverbs_open_xrcd(struct ib_uverbs_file *file, in ib_uverbs_open_xrcd() argument
746 mutex_lock(&file->device->xrcd_tree_mutex); in ib_uverbs_open_xrcd()
751 if (!f.file) { in ib_uverbs_open_xrcd()
756 inode = file_inode(f.file); in ib_uverbs_open_xrcd()
757 xrcd = find_xrcd(file->device, inode); in ib_uverbs_open_xrcd()
776 init_uobj(&obj->uobject, 0, file->ucontext, &xrcd_lock_class); in ib_uverbs_open_xrcd()
781 xrcd = file->device->ib_dev->alloc_xrcd(file->device->ib_dev, in ib_uverbs_open_xrcd()
782 file->ucontext, &udata); in ib_uverbs_open_xrcd()
789 xrcd->device = file->device->ib_dev; in ib_uverbs_open_xrcd()
808 ret = xrcd_table_insert(file->device, inode, xrcd); in ib_uverbs_open_xrcd()
821 if (f.file) in ib_uverbs_open_xrcd()
824 mutex_lock(&file->mutex); in ib_uverbs_open_xrcd()
825 list_add_tail(&obj->uobject.list, &file->ucontext->xrcd_list); in ib_uverbs_open_xrcd()
826 mutex_unlock(&file->mutex); in ib_uverbs_open_xrcd()
831 mutex_unlock(&file->device->xrcd_tree_mutex); in ib_uverbs_open_xrcd()
837 xrcd_table_delete(file->device, inode); in ib_uverbs_open_xrcd()
851 if (f.file) in ib_uverbs_open_xrcd()
854 mutex_unlock(&file->device->xrcd_tree_mutex); in ib_uverbs_open_xrcd()
859 ssize_t ib_uverbs_close_xrcd(struct ib_uverbs_file *file, in ib_uverbs_close_xrcd() argument
874 mutex_lock(&file->device->xrcd_tree_mutex); in ib_uverbs_close_xrcd()
875 uobj = idr_write_uobj(&ib_uverbs_xrcd_idr, cmd.xrcd_handle, file->ucontext); in ib_uverbs_close_xrcd()
906 xrcd_table_delete(file->device, inode); in ib_uverbs_close_xrcd()
909 mutex_lock(&file->mutex); in ib_uverbs_close_xrcd()
911 mutex_unlock(&file->mutex); in ib_uverbs_close_xrcd()
917 mutex_unlock(&file->device->xrcd_tree_mutex); in ib_uverbs_close_xrcd()
936 ssize_t ib_uverbs_reg_mr(struct ib_uverbs_file *file, in ib_uverbs_reg_mr() argument
969 init_uobj(uobj, 0, file->ucontext, &mr_lock_class); in ib_uverbs_reg_mr()
972 pd = idr_read_pd(cmd.pd_handle, file->ucontext); in ib_uverbs_reg_mr()
1021 mutex_lock(&file->mutex); in ib_uverbs_reg_mr()
1022 list_add_tail(&uobj->list, &file->ucontext->mr_list); in ib_uverbs_reg_mr()
1023 mutex_unlock(&file->mutex); in ib_uverbs_reg_mr()
1045 ssize_t ib_uverbs_rereg_mr(struct ib_uverbs_file *file, in ib_uverbs_rereg_mr() argument
1077 file->ucontext); in ib_uverbs_rereg_mr()
1091 pd = idr_read_pd(cmd.pd_handle, file->ucontext); in ib_uverbs_rereg_mr()
1138 ssize_t ib_uverbs_dereg_mr(struct ib_uverbs_file *file, in ib_uverbs_dereg_mr() argument
1150 uobj = idr_write_uobj(&ib_uverbs_mr_idr, cmd.mr_handle, file->ucontext); in ib_uverbs_dereg_mr()
1167 mutex_lock(&file->mutex); in ib_uverbs_dereg_mr()
1169 mutex_unlock(&file->mutex); in ib_uverbs_dereg_mr()
1176 ssize_t ib_uverbs_alloc_mw(struct ib_uverbs_file *file, in ib_uverbs_alloc_mw() argument
1197 init_uobj(uobj, 0, file->ucontext, &mw_lock_class); in ib_uverbs_alloc_mw()
1200 pd = idr_read_pd(cmd.pd_handle, file->ucontext); in ib_uverbs_alloc_mw()
1234 mutex_lock(&file->mutex); in ib_uverbs_alloc_mw()
1235 list_add_tail(&uobj->list, &file->ucontext->mw_list); in ib_uverbs_alloc_mw()
1236 mutex_unlock(&file->mutex); in ib_uverbs_alloc_mw()
1258 ssize_t ib_uverbs_dealloc_mw(struct ib_uverbs_file *file, in ib_uverbs_dealloc_mw() argument
1270 uobj = idr_write_uobj(&ib_uverbs_mw_idr, cmd.mw_handle, file->ucontext); in ib_uverbs_dealloc_mw()
1287 mutex_lock(&file->mutex); in ib_uverbs_dealloc_mw()
1289 mutex_unlock(&file->mutex); in ib_uverbs_dealloc_mw()
1296 ssize_t ib_uverbs_create_comp_channel(struct ib_uverbs_file *file, in ib_uverbs_create_comp_channel() argument
1302 struct file *filp; in ib_uverbs_create_comp_channel()
1316 filp = ib_uverbs_alloc_event_file(file, 0); in ib_uverbs_create_comp_channel()
1333 ssize_t ib_uverbs_create_cq(struct ib_uverbs_file *file, in ib_uverbs_create_cq() argument
1355 if (cmd.comp_vector >= file->device->num_comp_vectors) in ib_uverbs_create_cq()
1362 init_uobj(&obj->uobject, cmd.user_handle, file->ucontext, &cq_lock_class); in ib_uverbs_create_cq()
1373 obj->uverbs_file = file; in ib_uverbs_create_cq()
1379 cq = file->device->ib_dev->create_cq(file->device->ib_dev, cmd.cqe, in ib_uverbs_create_cq()
1381 file->ucontext, &udata); in ib_uverbs_create_cq()
1387 cq->device = file->device->ib_dev; in ib_uverbs_create_cq()
1409 mutex_lock(&file->mutex); in ib_uverbs_create_cq()
1410 list_add_tail(&obj->uobject.list, &file->ucontext->cq_list); in ib_uverbs_create_cq()
1411 mutex_unlock(&file->mutex); in ib_uverbs_create_cq()
1427 ib_uverbs_release_ucq(file, ev_file, obj); in ib_uverbs_create_cq()
1434 ssize_t ib_uverbs_resize_cq(struct ib_uverbs_file *file, in ib_uverbs_resize_cq() argument
1451 cq = idr_read_cq(cmd.cq_handle, file->ucontext, 0); in ib_uverbs_resize_cq()
1497 ssize_t ib_uverbs_poll_cq(struct ib_uverbs_file *file, in ib_uverbs_poll_cq() argument
1512 cq = idr_read_cq(cmd.cq_handle, file->ucontext, 0); in ib_uverbs_poll_cq()
1548 ssize_t ib_uverbs_req_notify_cq(struct ib_uverbs_file *file, in ib_uverbs_req_notify_cq() argument
1558 cq = idr_read_cq(cmd.cq_handle, file->ucontext, 0); in ib_uverbs_req_notify_cq()
1570 ssize_t ib_uverbs_destroy_cq(struct ib_uverbs_file *file, in ib_uverbs_destroy_cq() argument
1585 uobj = idr_write_uobj(&ib_uverbs_cq_idr, cmd.cq_handle, file->ucontext); in ib_uverbs_destroy_cq()
1603 mutex_lock(&file->mutex); in ib_uverbs_destroy_cq()
1605 mutex_unlock(&file->mutex); in ib_uverbs_destroy_cq()
1607 ib_uverbs_release_ucq(file, ev_file, obj); in ib_uverbs_destroy_cq()
1622 ssize_t ib_uverbs_create_qp(struct ib_uverbs_file *file, in ib_uverbs_create_qp() argument
1657 init_uobj(&obj->uevent.uobject, cmd.user_handle, file->ucontext, &qp_lock_class); in ib_uverbs_create_qp()
1661 xrcd = idr_read_xrcd(cmd.pd_handle, file->ucontext, &xrcd_uobj); in ib_uverbs_create_qp()
1672 srq = idr_read_srq(cmd.srq_handle, file->ucontext); in ib_uverbs_create_qp()
1680 rcq = idr_read_cq(cmd.recv_cq_handle, file->ucontext, 0); in ib_uverbs_create_qp()
1688 scq = idr_read_cq(cmd.send_cq_handle, file->ucontext, !!rcq); in ib_uverbs_create_qp()
1690 pd = idr_read_pd(cmd.pd_handle, file->ucontext); in ib_uverbs_create_qp()
1700 attr.qp_context = file; in ib_uverbs_create_qp()
1785 mutex_lock(&file->mutex); in ib_uverbs_create_qp()
1786 list_add_tail(&obj->uevent.uobject.list, &file->ucontext->qp_list); in ib_uverbs_create_qp()
1787 mutex_unlock(&file->mutex); in ib_uverbs_create_qp()
1817 ssize_t ib_uverbs_open_qp(struct ib_uverbs_file *file, in ib_uverbs_open_qp() argument
1844 init_uobj(&obj->uevent.uobject, cmd.user_handle, file->ucontext, &qp_lock_class); in ib_uverbs_open_qp()
1847 xrcd = idr_read_xrcd(cmd.pd_handle, file->ucontext, &xrcd_uobj); in ib_uverbs_open_qp()
1854 attr.qp_context = file; in ib_uverbs_open_qp()
1889 mutex_lock(&file->mutex); in ib_uverbs_open_qp()
1890 list_add_tail(&obj->uevent.uobject.list, &file->ucontext->qp_list); in ib_uverbs_open_qp()
1891 mutex_unlock(&file->mutex); in ib_uverbs_open_qp()
1911 ssize_t ib_uverbs_query_qp(struct ib_uverbs_file *file, in ib_uverbs_query_qp() argument
1932 qp = idr_read_qp(cmd.qp_handle, file->ucontext); in ib_uverbs_query_qp()
2025 ssize_t ib_uverbs_modify_qp(struct ib_uverbs_file *file, in ib_uverbs_modify_qp() argument
2045 qp = idr_read_qp(cmd.qp_handle, file->ucontext); in ib_uverbs_modify_qp()
2121 ssize_t ib_uverbs_destroy_qp(struct ib_uverbs_file *file, in ib_uverbs_destroy_qp() argument
2137 uobj = idr_write_uobj(&ib_uverbs_qp_idr, cmd.qp_handle, file->ucontext); in ib_uverbs_destroy_qp()
2162 mutex_lock(&file->mutex); in ib_uverbs_destroy_qp()
2164 mutex_unlock(&file->mutex); in ib_uverbs_destroy_qp()
2166 ib_uverbs_release_uevent(file, &obj->uevent); in ib_uverbs_destroy_qp()
2179 ssize_t ib_uverbs_post_send(struct ib_uverbs_file *file, in ib_uverbs_post_send() argument
2206 qp = idr_read_qp(cmd.qp_handle, file->ucontext); in ib_uverbs_post_send()
2254 file->ucontext); in ib_uverbs_post_send()
2431 ssize_t ib_uverbs_post_recv(struct ib_uverbs_file *file, in ib_uverbs_post_recv() argument
2450 qp = idr_read_qp(cmd.qp_handle, file->ucontext); in ib_uverbs_post_recv()
2480 ssize_t ib_uverbs_post_srq_recv(struct ib_uverbs_file *file, in ib_uverbs_post_srq_recv() argument
2499 srq = idr_read_srq(cmd.srq_handle, file->ucontext); in ib_uverbs_post_srq_recv()
2529 ssize_t ib_uverbs_create_ah(struct ib_uverbs_file *file, in ib_uverbs_create_ah() argument
2551 init_uobj(uobj, cmd.user_handle, file->ucontext, &ah_lock_class); in ib_uverbs_create_ah()
2554 pd = idr_read_pd(cmd.pd_handle, file->ucontext); in ib_uverbs_create_ah()
2597 mutex_lock(&file->mutex); in ib_uverbs_create_ah()
2598 list_add_tail(&uobj->list, &file->ucontext->ah_list); in ib_uverbs_create_ah()
2599 mutex_unlock(&file->mutex); in ib_uverbs_create_ah()
2621 ssize_t ib_uverbs_destroy_ah(struct ib_uverbs_file *file, in ib_uverbs_destroy_ah() argument
2632 uobj = idr_write_uobj(&ib_uverbs_ah_idr, cmd.ah_handle, file->ucontext); in ib_uverbs_destroy_ah()
2648 mutex_lock(&file->mutex); in ib_uverbs_destroy_ah()
2650 mutex_unlock(&file->mutex); in ib_uverbs_destroy_ah()
2657 ssize_t ib_uverbs_attach_mcast(struct ib_uverbs_file *file, in ib_uverbs_attach_mcast() argument
2670 qp = idr_write_qp(cmd.qp_handle, file->ucontext); in ib_uverbs_attach_mcast()
2704 ssize_t ib_uverbs_detach_mcast(struct ib_uverbs_file *file, in ib_uverbs_detach_mcast() argument
2717 qp = idr_write_qp(cmd.qp_handle, file->ucontext); in ib_uverbs_detach_mcast()
2784 int ib_uverbs_ex_create_flow(struct ib_uverbs_file *file, in ib_uverbs_ex_create_flow() argument
2852 init_uobj(uobj, 0, file->ucontext, &rule_lock_class); in ib_uverbs_ex_create_flow()
2855 qp = idr_read_qp(cmd.qp_handle, file->ucontext); in ib_uverbs_ex_create_flow()
2917 mutex_lock(&file->mutex); in ib_uverbs_ex_create_flow()
2918 list_add_tail(&uobj->list, &file->ucontext->rule_list); in ib_uverbs_ex_create_flow()
2919 mutex_unlock(&file->mutex); in ib_uverbs_ex_create_flow()
2944 int ib_uverbs_ex_destroy_flow(struct ib_uverbs_file *file, in ib_uverbs_ex_destroy_flow() argument
2964 file->ucontext); in ib_uverbs_ex_destroy_flow()
2977 mutex_lock(&file->mutex); in ib_uverbs_ex_destroy_flow()
2979 mutex_unlock(&file->mutex); in ib_uverbs_ex_destroy_flow()
2986 static int __uverbs_create_xsrq(struct ib_uverbs_file *file, in __uverbs_create_xsrq() argument
3002 init_uobj(&obj->uevent.uobject, cmd->user_handle, file->ucontext, &srq_lock_class); in __uverbs_create_xsrq()
3006 attr.ext.xrc.xrcd = idr_read_xrcd(cmd->xrcd_handle, file->ucontext, &xrcd_uobj); in __uverbs_create_xsrq()
3015 attr.ext.xrc.cq = idr_read_cq(cmd->cq_handle, file->ucontext, 0); in __uverbs_create_xsrq()
3022 pd = idr_read_pd(cmd->pd_handle, file->ucontext); in __uverbs_create_xsrq()
3029 attr.srq_context = file; in __uverbs_create_xsrq()
3085 mutex_lock(&file->mutex); in __uverbs_create_xsrq()
3086 list_add_tail(&obj->uevent.uobject.list, &file->ucontext->srq_list); in __uverbs_create_xsrq()
3087 mutex_unlock(&file->mutex); in __uverbs_create_xsrq()
3119 ssize_t ib_uverbs_create_srq(struct ib_uverbs_file *file, in ib_uverbs_create_srq() argument
3147 ret = __uverbs_create_xsrq(file, &xcmd, &udata); in ib_uverbs_create_srq()
3154 ssize_t ib_uverbs_create_xsrq(struct ib_uverbs_file *file, in ib_uverbs_create_xsrq() argument
3172 ret = __uverbs_create_xsrq(file, &cmd, &udata); in ib_uverbs_create_xsrq()
3179 ssize_t ib_uverbs_modify_srq(struct ib_uverbs_file *file, in ib_uverbs_modify_srq() argument
3195 srq = idr_read_srq(cmd.srq_handle, file->ucontext); in ib_uverbs_modify_srq()
3209 ssize_t ib_uverbs_query_srq(struct ib_uverbs_file *file, in ib_uverbs_query_srq() argument
3225 srq = idr_read_srq(cmd.srq_handle, file->ucontext); in ib_uverbs_query_srq()
3249 ssize_t ib_uverbs_destroy_srq(struct ib_uverbs_file *file, in ib_uverbs_destroy_srq() argument
3265 uobj = idr_write_uobj(&ib_uverbs_srq_idr, cmd.srq_handle, file->ucontext); in ib_uverbs_destroy_srq()
3288 mutex_lock(&file->mutex); in ib_uverbs_destroy_srq()
3290 mutex_unlock(&file->mutex); in ib_uverbs_destroy_srq()
3292 ib_uverbs_release_uevent(file, obj); in ib_uverbs_destroy_srq()
3306 int ib_uverbs_ex_query_device(struct ib_uverbs_file *file, in ib_uverbs_ex_query_device() argument
3316 device = file->device->ib_dev; in ib_uverbs_ex_query_device()
3339 copy_query_dev_fields(file, &resp.base, &attr); in ib_uverbs_ex_query_device()