Lines Matching refs:umem

55 static struct mlx5_ib_mr *reg_create(struct ib_pd *pd, struct ib_umem *umem,
1084 mr->umem = NULL; in mlx5_ib_get_dma_mr()
1126 static unsigned int mlx5_umem_dmabuf_default_pgsz(struct ib_umem *umem, in mlx5_umem_dmabuf_default_pgsz() argument
1133 umem->iova = iova; in mlx5_umem_dmabuf_default_pgsz()
1138 struct ib_umem *umem, u64 iova, in alloc_cacheable_mr() argument
1149 if (umem->is_dmabuf) in alloc_cacheable_mr()
1150 page_size = mlx5_umem_dmabuf_default_pgsz(umem, iova); in alloc_cacheable_mr()
1152 page_size = mlx5_umem_find_best_pgsz(umem, mkc, log_page_size, in alloc_cacheable_mr()
1157 rb_key.ndescs = ib_umem_num_dma_blocks(umem, page_size); in alloc_cacheable_mr()
1158 rb_key.ats = mlx5_umem_needs_ats(dev, umem, access_flags); in alloc_cacheable_mr()
1167 mr = reg_create(pd, umem, iova, access_flags, page_size, false); in alloc_cacheable_mr()
1180 mr->umem = umem; in alloc_cacheable_mr()
1182 set_mr_fields(dev, mr, umem->length, access_flags, iova); in alloc_cacheable_mr()
1191 static struct mlx5_ib_mr *reg_create(struct ib_pd *pd, struct ib_umem *umem, in reg_create() argument
1217 roundup(ib_umem_num_dma_blocks(umem, page_size), 2); in reg_create()
1229 mlx5_ib_populate_pas(umem, 1UL << mr->page_shift, pas, in reg_create()
1244 MLX5_SET64(mkc, mkc, len, umem->length); in reg_create()
1247 get_octo_len(iova, umem->length, mr->page_shift)); in reg_create()
1249 if (mlx5_umem_needs_ats(dev, umem, access_flags)) in reg_create()
1253 get_octo_len(iova, umem->length, mr->page_shift)); in reg_create()
1262 mr->mmkey.ndescs = get_octo_len(iova, umem->length, mr->page_shift); in reg_create()
1263 mr->umem = umem; in reg_create()
1264 set_mr_fields(dev, mr, umem->length, access_flags, iova); in reg_create()
1373 static struct ib_mr *create_real_mr(struct ib_pd *pd, struct ib_umem *umem, in create_real_mr() argument
1381 xlt_with_umr = mlx5r_umr_can_load_pas(dev, umem->length); in create_real_mr()
1383 mr = alloc_cacheable_mr(pd, umem, iova, access_flags); in create_real_mr()
1386 umem, mkc, log_page_size, 0, iova); in create_real_mr()
1389 mr = reg_create(pd, umem, iova, access_flags, page_size, true); in create_real_mr()
1393 ib_umem_release(umem); in create_real_mr()
1399 atomic_add(ib_umem_num_pages(umem), &dev->mdev->priv.reg_pages); in create_real_mr()
1452 mr = alloc_cacheable_mr(pd, &odp->umem, iova, access_flags); in create_user_odp_mr()
1454 ib_umem_release(&odp->umem); in create_user_odp_mr()
1479 struct ib_umem *umem; in mlx5_ib_reg_user_mr() local
1490 umem = ib_umem_get(&dev->ib_dev, start, length, access_flags); in mlx5_ib_reg_user_mr()
1491 if (IS_ERR(umem)) in mlx5_ib_reg_user_mr()
1492 return ERR_CAST(umem); in mlx5_ib_reg_user_mr()
1493 return create_real_mr(pd, umem, iova, access_flags); in mlx5_ib_reg_user_mr()
1546 mr = alloc_cacheable_mr(pd, &umem_dmabuf->umem, virt_addr, in mlx5_ib_reg_user_mr_dmabuf()
1549 ib_umem_release(&umem_dmabuf->umem); in mlx5_ib_reg_user_mr_dmabuf()
1555 atomic_add(ib_umem_num_pages(mr->umem), &dev->mdev->priv.reg_pages); in mlx5_ib_reg_user_mr_dmabuf()
1615 struct ib_umem *old_umem = mr->umem; in umr_rereg_pas()
1639 mr->umem = new_umem; in umr_rereg_pas()
1646 mr->umem = old_umem; in umr_rereg_pas()
1682 struct ib_umem *umem; in mlx5_ib_rereg_user_mr() local
1694 if (!mr->umem || is_odp_mr(mr) || is_dmabuf_mr(mr)) in mlx5_ib_rereg_user_mr()
1704 umem = mr->umem; in mlx5_ib_rereg_user_mr()
1705 mr->umem = NULL; in mlx5_ib_rereg_user_mr()
1706 atomic_sub(ib_umem_num_pages(umem), &dev->mdev->priv.reg_pages); in mlx5_ib_rereg_user_mr()
1708 return create_real_mr(new_pd, umem, mr->ibmr.iova, in mlx5_ib_rereg_user_mr()
1716 if (!mr->umem || is_odp_mr(mr) || is_dmabuf_mr(mr)) in mlx5_ib_rereg_user_mr()
1788 if (!mr->umem && mr->descs) { in mlx5_free_priv_descs()
1888 if (mr->umem && mlx5r_umr_can_load_pas(dev, mr->umem->length)) in mlx5_ib_dereg_mr()
1899 if (mr->umem) { in mlx5_ib_dereg_mr()
1903 atomic_sub(ib_umem_num_pages(mr->umem), in mlx5_ib_dereg_mr()
1905 ib_umem_release(mr->umem); in mlx5_ib_dereg_mr()
1998 mr->umem = NULL; in mlx5_ib_alloc_pi_mr()
2125 mr->umem = NULL; in __mlx5_ib_alloc_mr()