Lines Matching refs:ibmr

87 static void rdsv3_ib_teardown_mr(struct rdsv3_ib_mr *ibmr);
92 struct rdsv3_ib_mr *ibmr, struct buf *bp, unsigned int nents);
336 struct rdsv3_ib_mr *ibmr = NULL;
350 ibmr = rdsv3_ib_alloc_fmr(rds_ibdev);
351 if (IS_ERR(ibmr))
352 return (ibmr);
362 kmem_free((void *) ibmr, sizeof (*ibmr));
363 ibmr = ERR_PTR(-ret);
364 return (ibmr);
371 ret = rdsv3_ib_map_fmr(rds_ibdev, ibmr, bp, nents);
374 ibmr->umem_cookie = umem_cookie;
375 *key_ret = (uint32_t)ibmr->rc_mem_desc.pmd_rkey;
376 ibmr->m_device = rds_ibdev;
377 ibmr->m_pool = rds_ibdev->fmr_pool;
379 "Return: ibmr: %p umem_cookie %p", ibmr, ibmr->umem_cookie);
380 return (ibmr);
385 kmem_free((void *)ibmr, sizeof (*ibmr));
393 struct rdsv3_ib_mr *ibmr;
398 ibmr = (struct rdsv3_ib_mr *)kmem_zalloc(sizeof (*ibmr),
400 ibmr->rc_hca_hdl = ib_get_ibt_hca_hdl(rds_ibdev->dev);
401 ibmr->fmr_pool_hdl = rds_ibdev->fmr_pool_hdl;
402 return (ibmr);
408 rdsv3_ib_map_fmr(struct rdsv3_ib_device *rds_ibdev, struct rdsv3_ib_mr *ibmr,
419 RDSV3_DPRINTF4("rdsv3_ib_map_fmr", "Enter: ibmr: %p", ibmr);
431 ibt_status = ibt_map_mem_area(ibmr->rc_hca_hdl,
432 &va_attr, paddr_list_len, &reg_req, &ibmr->rc_ma_hdl);
438 ibt_status = ibt_register_physical_fmr(ibmr->rc_hca_hdl,
439 ibmr->fmr_pool_hdl,
440 &reg_req.fn_arg, &ibmr->rc_fmr_hdl, &ibmr->rc_mem_desc);
444 (void) ibt_unmap_mem_area(ibmr->rc_hca_hdl,
445 ibmr->rc_ma_hdl);
451 RDSV3_DPRINTF4("rdsv3_ib_map_fmr", "Return: ibmr: %p rkey: 0x%x",
452 ibmr, (uint32_t)ibmr->rc_mem_desc.pmd_rkey);
485 rdsv3_ib_drop_mr(struct rdsv3_ib_mr *ibmr)
488 (void) ibt_deregister_fmr(ibmr->rc_hca_hdl, ibmr->rc_fmr_hdl);
489 (void) ibt_unmap_mem_area(ibmr->rc_hca_hdl, ibmr->rc_ma_hdl);
490 (void) ddi_umem_unlock(ibmr->umem_cookie);
491 kmem_free((void *) ibmr, sizeof (*ibmr));
501 struct rdsv3_ib_mr *ibmr;
510 ibmr = (struct rdsv3_ib_mr *)list_remove_head(listp);
511 if (ibmr)
514 if (!ibmr)
516 if ((inval == 0) && ibmr->m_inval) {
518 hca_hdl = ibmr->rc_hca_hdl;
519 fmr_pool_hdl = ibmr->fmr_pool_hdl;
522 rdsv3_ib_drop_mr(ibmr);
531 struct rdsv3_ib_mr *ibmr = trans_private;
534 RDSV3_DPRINTF4("rdsv3_ib_free_mr", "Enter: ibmr: %p inv: %d",
535 ibmr, invalidate);
537 /* save af_thr at local as ibmr might be freed at mutex_exit */
538 af_thr = ibmr->m_device->fmr_soft_cq;
539 ibmr->m_inval = (unsigned int) invalidate;
540 mutex_enter(&ibmr->m_pool->f_lock);
541 list_insert_tail(&ibmr->m_pool->f_list, ibmr);
542 ibmr->m_pool->f_listcnt++;
543 mutex_exit(&ibmr->m_pool->f_lock);