Lines Matching refs:ibmr
842 mr->ibmr.lkey = mr->mmkey.key;
843 mr->ibmr.rkey = mr->mmkey.key;
846 return &mr->ibmr;
1005 mr->ibmr.pd = pd;
1106 wr.pd = mr->ibmr.pd;
1166 * If ibmr is NULL it will be allocated by reg_create.
1167 * Else, the given ibmr will be used.
1169 static struct mlx5_ib_mr *reg_create(struct ib_mr *ibmr, struct ib_pd *pd,
1184 mr = ibmr ? to_mmr(ibmr) : kzalloc(sizeof(*mr), GFP_KERNEL);
1188 mr->ibmr.pd = pd;
1248 if (!ibmr)
1257 mr->ibmr.lkey = mr->mmkey.key;
1258 mr->ibmr.rkey = mr->mmkey.key;
1259 mr->ibmr.length = length;
1298 return &mr->ibmr;
1393 return &mr->ibmr;
1463 return &mr->ibmr;
1597 mr->ibmr.pd = pd;
1667 struct ib_device *device = mr->ibmr.device;
1720 int mlx5_ib_dereg_mr(struct ib_mr *ibmr, struct ib_udata *udata)
1722 struct mlx5_ib_mr *mmr = to_mmr(ibmr);
1724 if (ibmr->type == IB_MR_TYPE_INTEGRITY) {
1725 dereg_mr(to_mdev(mmr->mtt_mr->ibmr.device), mmr->mtt_mr);
1726 dereg_mr(to_mdev(mmr->klm_mr->ibmr.device), mmr->klm_mr);
1734 dereg_mr(to_mdev(ibmr->device), mmr);
1778 mr->ibmr.lkey = mr->mmkey.key;
1779 mr->ibmr.rkey = mr->mmkey.key;
1803 mr->ibmr.pd = pd;
1804 mr->ibmr.device = pd->device;
1907 dereg_mr(to_mdev(mr->mtt_mr->ibmr.device), mr->mtt_mr);
1910 dereg_mr(to_mdev(mr->klm_mr->ibmr.device), mr->klm_mr);
1946 mr->ibmr.device = pd->device;
1970 return &mr->ibmr;
2089 int mlx5_ib_check_mr_status(struct ib_mr *ibmr, u32 check_mask,
2092 struct mlx5_ib_mr *mmr = to_mmr(ibmr);
2113 if (ibmr->lkey == mmr->sig->err_item.key)
2131 mlx5_ib_map_pa_mr_sg_pi(struct ib_mr *ibmr, struct scatterlist *data_sg,
2136 struct mlx5_ib_mr *mr = to_mmr(ibmr);
2158 ibmr->length = mr->data_length + mr->meta_length;
2176 u32 lkey = mr->ibmr.pd->local_dma_lkey;
2179 mr->ibmr.iova = sg_dma_address(sg) + sg_offset;
2180 mr->ibmr.length = 0;
2188 mr->ibmr.length += sg_dma_len(sg) - sg_offset;
2197 mr->data_length = mr->ibmr.length;
2210 mr->ibmr.length += sg_dma_len(sg) - sg_offset;
2218 mr->meta_length = mr->ibmr.length - mr->data_length;
2224 static int mlx5_set_page(struct ib_mr *ibmr, u64 addr)
2226 struct mlx5_ib_mr *mr = to_mmr(ibmr);
2238 static int mlx5_set_page_pi(struct ib_mr *ibmr, u64 addr)
2240 struct mlx5_ib_mr *mr = to_mmr(ibmr);
2254 mlx5_ib_map_mtt_mr_sg_pi(struct ib_mr *ibmr, struct scatterlist *data_sg,
2259 struct mlx5_ib_mr *mr = to_mmr(ibmr);
2267 ib_dma_sync_single_for_cpu(ibmr->device, pi_mr->desc_map,
2271 pi_mr->ibmr.page_size = ibmr->page_size;
2272 n = ib_sg_to_pages(&pi_mr->ibmr, data_sg, data_sg_nents, data_sg_offset,
2277 pi_mr->data_iova = pi_mr->ibmr.iova;
2278 pi_mr->data_length = pi_mr->ibmr.length;
2279 pi_mr->ibmr.length = pi_mr->data_length;
2280 ibmr->length = pi_mr->data_length;
2283 u64 page_mask = ~((u64)ibmr->page_size - 1);
2286 n += ib_sg_to_pages(&pi_mr->ibmr, meta_sg, meta_sg_nents,
2289 pi_mr->meta_length = pi_mr->ibmr.length;
2297 pi_mr->ndescs * ibmr->page_size +
2298 (pi_mr->ibmr.iova & ~page_mask);
2306 pi_mr->ibmr.length = pi_mr->pi_iova + pi_mr->meta_length - iova;
2307 pi_mr->ibmr.iova = iova;
2308 ibmr->length += pi_mr->meta_length;
2311 ib_dma_sync_single_for_device(ibmr->device, pi_mr->desc_map,
2319 mlx5_ib_map_klm_mr_sg_pi(struct ib_mr *ibmr, struct scatterlist *data_sg,
2324 struct mlx5_ib_mr *mr = to_mmr(ibmr);
2332 ib_dma_sync_single_for_cpu(ibmr->device, pi_mr->desc_map,
2339 ib_dma_sync_single_for_device(ibmr->device, pi_mr->desc_map,
2345 pi_mr->ibmr.iova = 0;
2347 ibmr->length = pi_mr->ibmr.length;
2352 int mlx5_ib_map_mr_sg_pi(struct ib_mr *ibmr, struct scatterlist *data_sg,
2357 struct mlx5_ib_mr *mr = to_mmr(ibmr);
2361 WARN_ON(ibmr->type != IB_MR_TYPE_INTEGRITY);
2374 n = mlx5_ib_map_pa_mr_sg_pi(ibmr, data_sg, data_sg_nents,
2388 n = mlx5_ib_map_mtt_mr_sg_pi(ibmr, data_sg, data_sg_nents,
2395 n = mlx5_ib_map_klm_mr_sg_pi(ibmr, data_sg, data_sg_nents,
2403 ibmr->iova = 0;
2406 ibmr->sig_attrs->meta_length = pi_mr->meta_length;
2408 ibmr->sig_attrs->meta_length = mr->meta_length;
2413 int mlx5_ib_map_mr_sg(struct ib_mr *ibmr, struct scatterlist *sg, int sg_nents,
2416 struct mlx5_ib_mr *mr = to_mmr(ibmr);
2421 ib_dma_sync_single_for_cpu(ibmr->device, mr->desc_map,
2429 n = ib_sg_to_pages(ibmr, sg, sg_nents, sg_offset,
2432 ib_dma_sync_single_for_device(ibmr->device, mr->desc_map,