Lines Matching refs:uctx

263 static int ocrdma_add_mmap(struct ocrdma_ucontext *uctx, u64 phy_addr,  in ocrdma_add_mmap()  argument
275 mutex_lock(&uctx->mm_list_lock); in ocrdma_add_mmap()
276 list_add_tail(&mm->entry, &uctx->mm_head); in ocrdma_add_mmap()
277 mutex_unlock(&uctx->mm_list_lock); in ocrdma_add_mmap()
281 static void ocrdma_del_mmap(struct ocrdma_ucontext *uctx, u64 phy_addr, in ocrdma_del_mmap() argument
286 mutex_lock(&uctx->mm_list_lock); in ocrdma_del_mmap()
287 list_for_each_entry_safe(mm, tmp, &uctx->mm_head, entry) { in ocrdma_del_mmap()
295 mutex_unlock(&uctx->mm_list_lock); in ocrdma_del_mmap()
298 static bool ocrdma_search_mmap(struct ocrdma_ucontext *uctx, u64 phy_addr, in ocrdma_search_mmap() argument
304 mutex_lock(&uctx->mm_list_lock); in ocrdma_search_mmap()
305 list_for_each_entry(mm, &uctx->mm_head, entry) { in ocrdma_search_mmap()
312 mutex_unlock(&uctx->mm_list_lock); in ocrdma_search_mmap()
418 struct ocrdma_ucontext *uctx, in _ocrdma_alloc_pd() argument
428 if (udata && uctx && dev->attr.max_dpp_pds) { in _ocrdma_alloc_pd()
462 static inline int is_ucontext_pd(struct ocrdma_ucontext *uctx, in is_ucontext_pd() argument
465 return (uctx->cntxt_pd == pd ? true : false); in is_ucontext_pd()
483 struct ocrdma_ucontext *uctx, in ocrdma_alloc_ucontext_pd() argument
488 uctx->cntxt_pd = _ocrdma_alloc_pd(dev, uctx, udata); in ocrdma_alloc_ucontext_pd()
489 if (IS_ERR(uctx->cntxt_pd)) { in ocrdma_alloc_ucontext_pd()
490 status = PTR_ERR(uctx->cntxt_pd); in ocrdma_alloc_ucontext_pd()
491 uctx->cntxt_pd = NULL; in ocrdma_alloc_ucontext_pd()
495 uctx->cntxt_pd->uctx = uctx; in ocrdma_alloc_ucontext_pd()
496 uctx->cntxt_pd->ibpd.device = &dev->ibdev; in ocrdma_alloc_ucontext_pd()
501 static int ocrdma_dealloc_ucontext_pd(struct ocrdma_ucontext *uctx) in ocrdma_dealloc_ucontext_pd() argument
503 struct ocrdma_pd *pd = uctx->cntxt_pd; in ocrdma_dealloc_ucontext_pd()
506 if (uctx->pd_in_use) { in ocrdma_dealloc_ucontext_pd()
510 uctx->cntxt_pd = NULL; in ocrdma_dealloc_ucontext_pd()
515 static struct ocrdma_pd *ocrdma_get_ucontext_pd(struct ocrdma_ucontext *uctx) in ocrdma_get_ucontext_pd() argument
519 mutex_lock(&uctx->mm_list_lock); in ocrdma_get_ucontext_pd()
520 if (!uctx->pd_in_use) { in ocrdma_get_ucontext_pd()
521 uctx->pd_in_use = true; in ocrdma_get_ucontext_pd()
522 pd = uctx->cntxt_pd; in ocrdma_get_ucontext_pd()
524 mutex_unlock(&uctx->mm_list_lock); in ocrdma_get_ucontext_pd()
529 static void ocrdma_release_ucontext_pd(struct ocrdma_ucontext *uctx) in ocrdma_release_ucontext_pd() argument
531 mutex_lock(&uctx->mm_list_lock); in ocrdma_release_ucontext_pd()
532 uctx->pd_in_use = false; in ocrdma_release_ucontext_pd()
533 mutex_unlock(&uctx->mm_list_lock); in ocrdma_release_ucontext_pd()
601 struct ocrdma_ucontext *uctx = get_ocrdma_ucontext(ibctx); in ocrdma_dealloc_ucontext() local
605 status = ocrdma_dealloc_ucontext_pd(uctx); in ocrdma_dealloc_ucontext()
607 ocrdma_del_mmap(uctx, uctx->ah_tbl.pa, uctx->ah_tbl.len); in ocrdma_dealloc_ucontext()
608 dma_free_coherent(&pdev->dev, uctx->ah_tbl.len, uctx->ah_tbl.va, in ocrdma_dealloc_ucontext()
609 uctx->ah_tbl.pa); in ocrdma_dealloc_ucontext()
611 list_for_each_entry_safe(mm, tmp, &uctx->mm_head, entry) { in ocrdma_dealloc_ucontext()
615 kfree(uctx); in ocrdma_dealloc_ucontext()
671 struct ocrdma_ucontext *uctx = get_ocrdma_ucontext(ib_ctx); in ocrdma_copy_pd_uresp() local
679 status = ocrdma_add_mmap(uctx, db_page_addr, db_page_size); in ocrdma_copy_pd_uresp()
686 status = ocrdma_add_mmap(uctx, dpp_page_addr, in ocrdma_copy_pd_uresp()
698 pd->uctx = uctx; in ocrdma_copy_pd_uresp()
703 ocrdma_del_mmap(pd->uctx, dpp_page_addr, PAGE_SIZE); in ocrdma_copy_pd_uresp()
705 ocrdma_del_mmap(pd->uctx, db_page_addr, db_page_size); in ocrdma_copy_pd_uresp()
715 struct ocrdma_ucontext *uctx = NULL; in ocrdma_alloc_pd() local
720 uctx = get_ocrdma_ucontext(context); in ocrdma_alloc_pd()
721 pd = ocrdma_get_ucontext_pd(uctx); in ocrdma_alloc_pd()
728 pd = _ocrdma_alloc_pd(dev, uctx, udata); in ocrdma_alloc_pd()
744 ocrdma_release_ucontext_pd(uctx); in ocrdma_alloc_pd()
756 struct ocrdma_ucontext *uctx = NULL; in ocrdma_dealloc_pd() local
760 uctx = pd->uctx; in ocrdma_dealloc_pd()
761 if (uctx) { in ocrdma_dealloc_pd()
765 ocrdma_del_mmap(pd->uctx, dpp_db, PAGE_SIZE); in ocrdma_dealloc_pd()
767 ocrdma_del_mmap(pd->uctx, usr_db, dev->nic_info.db_page_size); in ocrdma_dealloc_pd()
769 if (is_ucontext_pd(uctx, pd)) { in ocrdma_dealloc_pd()
770 ocrdma_release_ucontext_pd(uctx); in ocrdma_dealloc_pd()
1037 struct ocrdma_ucontext *uctx = get_ocrdma_ucontext(ib_ctx); in ocrdma_copy_cq_uresp() local
1046 uresp.db_page_addr = ocrdma_get_db_addr(dev, uctx->cntxt_pd->id); in ocrdma_copy_cq_uresp()
1055 status = ocrdma_add_mmap(uctx, uresp.db_page_addr, uresp.db_page_size); in ocrdma_copy_cq_uresp()
1058 status = ocrdma_add_mmap(uctx, uresp.page_addr[0], uresp.page_size); in ocrdma_copy_cq_uresp()
1060 ocrdma_del_mmap(uctx, uresp.db_page_addr, uresp.db_page_size); in ocrdma_copy_cq_uresp()
1063 cq->ucontext = uctx; in ocrdma_copy_cq_uresp()
1076 struct ocrdma_ucontext *uctx = NULL; in ocrdma_create_cq() local
1100 uctx = get_ocrdma_ucontext(ib_ctx); in ocrdma_create_cq()
1101 pd_id = uctx->cntxt_pd->id; in ocrdma_create_cq()
1326 status = ocrdma_add_mmap(pd->uctx, uresp.sq_page_addr[0], in ocrdma_copy_qp_uresp()
1332 status = ocrdma_add_mmap(pd->uctx, uresp.rq_page_addr[0], in ocrdma_copy_qp_uresp()
1339 ocrdma_del_mmap(pd->uctx, uresp.sq_page_addr[0], uresp.sq_page_size); in ocrdma_copy_qp_uresp()
1829 if (!pd->uctx) { in ocrdma_destroy_qp()
1835 if (pd->uctx) { in ocrdma_destroy_qp()
1836 ocrdma_del_mmap(pd->uctx, (u64) qp->sq.pa, in ocrdma_destroy_qp()
1839 ocrdma_del_mmap(pd->uctx, (u64) qp->rq.pa, in ocrdma_destroy_qp()
1877 status = ocrdma_add_mmap(srq->pd->uctx, uresp.rq_page_addr[0], in ocrdma_copy_srq_uresp()
1984 if (srq->pd->uctx) in ocrdma_destroy_srq()
1985 ocrdma_del_mmap(srq->pd->uctx, (u64) srq->rq.pa, in ocrdma_destroy_srq()