Lines Matching refs:uctx

203 static int ocrdma_add_mmap(struct ocrdma_ucontext *uctx, u64 phy_addr,  in ocrdma_add_mmap()  argument
215 mutex_lock(&uctx->mm_list_lock); in ocrdma_add_mmap()
216 list_add_tail(&mm->entry, &uctx->mm_head); in ocrdma_add_mmap()
217 mutex_unlock(&uctx->mm_list_lock); in ocrdma_add_mmap()
221 static void ocrdma_del_mmap(struct ocrdma_ucontext *uctx, u64 phy_addr, in ocrdma_del_mmap() argument
226 mutex_lock(&uctx->mm_list_lock); in ocrdma_del_mmap()
227 list_for_each_entry_safe(mm, tmp, &uctx->mm_head, entry) { in ocrdma_del_mmap()
235 mutex_unlock(&uctx->mm_list_lock); in ocrdma_del_mmap()
238 static bool ocrdma_search_mmap(struct ocrdma_ucontext *uctx, u64 phy_addr, in ocrdma_search_mmap() argument
244 mutex_lock(&uctx->mm_list_lock); in ocrdma_search_mmap()
245 list_for_each_entry(mm, &uctx->mm_head, entry) { in ocrdma_search_mmap()
252 mutex_unlock(&uctx->mm_list_lock); in ocrdma_search_mmap()
358 struct ocrdma_ucontext *uctx, in _ocrdma_alloc_pd() argument
368 if (udata && uctx && dev->attr.max_dpp_pds) { in _ocrdma_alloc_pd()
397 static inline int is_ucontext_pd(struct ocrdma_ucontext *uctx, in is_ucontext_pd() argument
400 return (uctx->cntxt_pd == pd ? true : false); in is_ucontext_pd()
418 struct ocrdma_ucontext *uctx, in ocrdma_alloc_ucontext_pd() argument
423 uctx->cntxt_pd = _ocrdma_alloc_pd(dev, uctx, udata); in ocrdma_alloc_ucontext_pd()
424 if (IS_ERR(uctx->cntxt_pd)) { in ocrdma_alloc_ucontext_pd()
425 status = PTR_ERR(uctx->cntxt_pd); in ocrdma_alloc_ucontext_pd()
426 uctx->cntxt_pd = NULL; in ocrdma_alloc_ucontext_pd()
430 uctx->cntxt_pd->uctx = uctx; in ocrdma_alloc_ucontext_pd()
431 uctx->cntxt_pd->ibpd.device = &dev->ibdev; in ocrdma_alloc_ucontext_pd()
436 static int ocrdma_dealloc_ucontext_pd(struct ocrdma_ucontext *uctx) in ocrdma_dealloc_ucontext_pd() argument
438 struct ocrdma_pd *pd = uctx->cntxt_pd; in ocrdma_dealloc_ucontext_pd()
441 if (uctx->pd_in_use) { in ocrdma_dealloc_ucontext_pd()
445 uctx->cntxt_pd = NULL; in ocrdma_dealloc_ucontext_pd()
450 static struct ocrdma_pd *ocrdma_get_ucontext_pd(struct ocrdma_ucontext *uctx) in ocrdma_get_ucontext_pd() argument
454 mutex_lock(&uctx->mm_list_lock); in ocrdma_get_ucontext_pd()
455 if (!uctx->pd_in_use) { in ocrdma_get_ucontext_pd()
456 uctx->pd_in_use = true; in ocrdma_get_ucontext_pd()
457 pd = uctx->cntxt_pd; in ocrdma_get_ucontext_pd()
459 mutex_unlock(&uctx->mm_list_lock); in ocrdma_get_ucontext_pd()
464 static void ocrdma_release_ucontext_pd(struct ocrdma_ucontext *uctx) in ocrdma_release_ucontext_pd() argument
466 mutex_lock(&uctx->mm_list_lock); in ocrdma_release_ucontext_pd()
467 uctx->pd_in_use = false; in ocrdma_release_ucontext_pd()
468 mutex_unlock(&uctx->mm_list_lock); in ocrdma_release_ucontext_pd()
536 struct ocrdma_ucontext *uctx = get_ocrdma_ucontext(ibctx); in ocrdma_dealloc_ucontext() local
540 status = ocrdma_dealloc_ucontext_pd(uctx); in ocrdma_dealloc_ucontext()
542 ocrdma_del_mmap(uctx, uctx->ah_tbl.pa, uctx->ah_tbl.len); in ocrdma_dealloc_ucontext()
543 dma_free_coherent(&pdev->dev, uctx->ah_tbl.len, uctx->ah_tbl.va, in ocrdma_dealloc_ucontext()
544 uctx->ah_tbl.pa); in ocrdma_dealloc_ucontext()
546 list_for_each_entry_safe(mm, tmp, &uctx->mm_head, entry) { in ocrdma_dealloc_ucontext()
550 kfree(uctx); in ocrdma_dealloc_ucontext()
606 struct ocrdma_ucontext *uctx = get_ocrdma_ucontext(ib_ctx); in ocrdma_copy_pd_uresp() local
614 status = ocrdma_add_mmap(uctx, db_page_addr, db_page_size); in ocrdma_copy_pd_uresp()
621 status = ocrdma_add_mmap(uctx, dpp_page_addr, in ocrdma_copy_pd_uresp()
633 pd->uctx = uctx; in ocrdma_copy_pd_uresp()
638 ocrdma_del_mmap(pd->uctx, dpp_page_addr, PAGE_SIZE); in ocrdma_copy_pd_uresp()
640 ocrdma_del_mmap(pd->uctx, db_page_addr, db_page_size); in ocrdma_copy_pd_uresp()
650 struct ocrdma_ucontext *uctx = NULL; in ocrdma_alloc_pd() local
655 uctx = get_ocrdma_ucontext(context); in ocrdma_alloc_pd()
656 pd = ocrdma_get_ucontext_pd(uctx); in ocrdma_alloc_pd()
663 pd = _ocrdma_alloc_pd(dev, uctx, udata); in ocrdma_alloc_pd()
679 ocrdma_release_ucontext_pd(uctx); in ocrdma_alloc_pd()
691 struct ocrdma_ucontext *uctx = NULL; in ocrdma_dealloc_pd() local
695 uctx = pd->uctx; in ocrdma_dealloc_pd()
696 if (uctx) { in ocrdma_dealloc_pd()
700 ocrdma_del_mmap(pd->uctx, dpp_db, PAGE_SIZE); in ocrdma_dealloc_pd()
702 ocrdma_del_mmap(pd->uctx, usr_db, dev->nic_info.db_page_size); in ocrdma_dealloc_pd()
704 if (is_ucontext_pd(uctx, pd)) { in ocrdma_dealloc_pd()
705 ocrdma_release_ucontext_pd(uctx); in ocrdma_dealloc_pd()
971 struct ocrdma_ucontext *uctx = get_ocrdma_ucontext(ib_ctx); in ocrdma_copy_cq_uresp() local
980 uresp.db_page_addr = ocrdma_get_db_addr(dev, uctx->cntxt_pd->id); in ocrdma_copy_cq_uresp()
989 status = ocrdma_add_mmap(uctx, uresp.db_page_addr, uresp.db_page_size); in ocrdma_copy_cq_uresp()
992 status = ocrdma_add_mmap(uctx, uresp.page_addr[0], uresp.page_size); in ocrdma_copy_cq_uresp()
994 ocrdma_del_mmap(uctx, uresp.db_page_addr, uresp.db_page_size); in ocrdma_copy_cq_uresp()
997 cq->ucontext = uctx; in ocrdma_copy_cq_uresp()
1008 struct ocrdma_ucontext *uctx = NULL; in ocrdma_create_cq() local
1029 uctx = get_ocrdma_ucontext(ib_ctx); in ocrdma_create_cq()
1030 pd_id = uctx->cntxt_pd->id; in ocrdma_create_cq()
1255 status = ocrdma_add_mmap(pd->uctx, uresp.sq_page_addr[0], in ocrdma_copy_qp_uresp()
1261 status = ocrdma_add_mmap(pd->uctx, uresp.rq_page_addr[0], in ocrdma_copy_qp_uresp()
1268 ocrdma_del_mmap(pd->uctx, uresp.sq_page_addr[0], uresp.sq_page_size); in ocrdma_copy_qp_uresp()
1758 if (!pd->uctx) { in ocrdma_destroy_qp()
1764 if (pd->uctx) { in ocrdma_destroy_qp()
1765 ocrdma_del_mmap(pd->uctx, (u64) qp->sq.pa, in ocrdma_destroy_qp()
1768 ocrdma_del_mmap(pd->uctx, (u64) qp->rq.pa, in ocrdma_destroy_qp()
1806 status = ocrdma_add_mmap(srq->pd->uctx, uresp.rq_page_addr[0], in ocrdma_copy_srq_uresp()
1913 if (srq->pd->uctx) in ocrdma_destroy_srq()
1914 ocrdma_del_mmap(srq->pd->uctx, (u64) srq->rq.pa, in ocrdma_destroy_srq()