Lines Matching refs:ibmr
1096 mr->ibmr.lkey = mr->mmkey.key;
1097 mr->ibmr.rkey = mr->mmkey.key;
1100 return &mr->ibmr;
1132 mr->ibmr.lkey = mr->mmkey.key;
1133 mr->ibmr.rkey = mr->mmkey.key;
1134 mr->ibmr.length = length;
1135 mr->ibmr.device = &dev->ib_dev;
1136 mr->ibmr.iova = iova;
1193 mr->ibmr.pd = pd;
1202 * If ibmr is NULL it will be allocated by reg_create.
1203 * Else, the given ibmr will be used.
1224 mr->ibmr.pd = pd;
1328 return &mr->ibmr;
1424 mlx5_ib_dereg_mr(&mr->ibmr, NULL);
1428 return &mr->ibmr;
1455 return &mr->ibmr;
1482 return &mr->ibmr;
1485 mlx5_ib_dereg_mr(&mr->ibmr, NULL);
1579 return &mr->ibmr;
1582 mlx5_ib_dereg_mr(&mr->ibmr, NULL);
1608 struct mlx5_ib_dev *dev = to_mdev(mr->ibmr.device);
1628 struct mlx5_ib_dev *dev = to_mdev(mr->ibmr.device);
1643 mr->ibmr.pd = pd;
1651 mr->ibmr.iova = iova;
1652 mr->ibmr.length = new_umem->length;
1723 return create_real_mr(new_pd, umem, mr->ibmr.iova,
1809 struct ib_device *device = mr->ibmr.device;
1863 int mlx5_ib_dereg_mr(struct ib_mr *ibmr, struct ib_udata *udata)
1865 struct mlx5_ib_mr *mr = to_mmr(ibmr);
1866 struct mlx5_ib_dev *dev = to_mdev(ibmr->device);
1879 if (ibmr->type == IB_MR_TYPE_INTEGRITY) {
1884 rc = mlx5_ib_dereg_mr(&mr->mtt_mr->ibmr, NULL);
1890 rc = mlx5_ib_dereg_mr(&mr->klm_mr->ibmr, NULL);
1914 rc = destroy_mkey(to_mdev(mr->ibmr.device), mr);
1976 mr->ibmr.lkey = mr->mmkey.key;
1977 mr->ibmr.rkey = mr->mmkey.key;
2001 mr->ibmr.pd = pd;
2002 mr->ibmr.device = pd->device;
2105 mlx5_ib_dereg_mr(&mr->mtt_mr->ibmr, NULL);
2108 mlx5_ib_dereg_mr(&mr->klm_mr->ibmr, NULL);
2144 mr->ibmr.device = pd->device;
2168 return &mr->ibmr;
2282 int mlx5_ib_check_mr_status(struct ib_mr *ibmr, u32 check_mask,
2285 struct mlx5_ib_mr *mmr = to_mmr(ibmr);
2306 if (ibmr->lkey == mmr->sig->err_item.key)
2324 mlx5_ib_map_pa_mr_sg_pi(struct ib_mr *ibmr, struct scatterlist *data_sg,
2329 struct mlx5_ib_mr *mr = to_mmr(ibmr);
2351 ibmr->length = mr->data_length + mr->meta_length;
2369 u32 lkey = mr->ibmr.pd->local_dma_lkey;
2372 mr->ibmr.iova = sg_dma_address(sg) + sg_offset;
2373 mr->ibmr.length = 0;
2381 mr->ibmr.length += sg_dma_len(sg) - sg_offset;
2390 mr->data_length = mr->ibmr.length;
2403 mr->ibmr.length += sg_dma_len(sg) - sg_offset;
2411 mr->meta_length = mr->ibmr.length - mr->data_length;
2417 static int mlx5_set_page(struct ib_mr *ibmr, u64 addr)
2419 struct mlx5_ib_mr *mr = to_mmr(ibmr);
2431 static int mlx5_set_page_pi(struct ib_mr *ibmr, u64 addr)
2433 struct mlx5_ib_mr *mr = to_mmr(ibmr);
2447 mlx5_ib_map_mtt_mr_sg_pi(struct ib_mr *ibmr, struct scatterlist *data_sg,
2452 struct mlx5_ib_mr *mr = to_mmr(ibmr);
2460 ib_dma_sync_single_for_cpu(ibmr->device, pi_mr->desc_map,
2464 pi_mr->ibmr.page_size = ibmr->page_size;
2465 n = ib_sg_to_pages(&pi_mr->ibmr, data_sg, data_sg_nents, data_sg_offset,
2470 pi_mr->data_iova = pi_mr->ibmr.iova;
2471 pi_mr->data_length = pi_mr->ibmr.length;
2472 pi_mr->ibmr.length = pi_mr->data_length;
2473 ibmr->length = pi_mr->data_length;
2476 u64 page_mask = ~((u64)ibmr->page_size - 1);
2479 n += ib_sg_to_pages(&pi_mr->ibmr, meta_sg, meta_sg_nents,
2482 pi_mr->meta_length = pi_mr->ibmr.length;
2490 pi_mr->mmkey.ndescs * ibmr->page_size +
2491 (pi_mr->ibmr.iova & ~page_mask);
2499 pi_mr->ibmr.length = pi_mr->pi_iova + pi_mr->meta_length - iova;
2500 pi_mr->ibmr.iova = iova;
2501 ibmr->length += pi_mr->meta_length;
2504 ib_dma_sync_single_for_device(ibmr->device, pi_mr->desc_map,
2512 mlx5_ib_map_klm_mr_sg_pi(struct ib_mr *ibmr, struct scatterlist *data_sg,
2517 struct mlx5_ib_mr *mr = to_mmr(ibmr);
2525 ib_dma_sync_single_for_cpu(ibmr->device, pi_mr->desc_map,
2532 ib_dma_sync_single_for_device(ibmr->device, pi_mr->desc_map,
2538 pi_mr->ibmr.iova = 0;
2540 ibmr->length = pi_mr->ibmr.length;
2545 int mlx5_ib_map_mr_sg_pi(struct ib_mr *ibmr, struct scatterlist *data_sg,
2550 struct mlx5_ib_mr *mr = to_mmr(ibmr);
2554 WARN_ON(ibmr->type != IB_MR_TYPE_INTEGRITY);
2567 n = mlx5_ib_map_pa_mr_sg_pi(ibmr, data_sg, data_sg_nents,
2581 n = mlx5_ib_map_mtt_mr_sg_pi(ibmr, data_sg, data_sg_nents,
2588 n = mlx5_ib_map_klm_mr_sg_pi(ibmr, data_sg, data_sg_nents,
2596 ibmr->iova = 0;
2599 ibmr->sig_attrs->meta_length = pi_mr->meta_length;
2601 ibmr->sig_attrs->meta_length = mr->meta_length;
2606 int mlx5_ib_map_mr_sg(struct ib_mr *ibmr, struct scatterlist *sg, int sg_nents,
2609 struct mlx5_ib_mr *mr = to_mmr(ibmr);
2614 ib_dma_sync_single_for_cpu(ibmr->device, mr->desc_map,
2622 n = ib_sg_to_pages(ibmr, sg, sg_nents, sg_offset,
2625 ib_dma_sync_single_for_device(ibmr->device, mr->desc_map,