Lines Matching refs:mr

421 			   int page_shift, struct mlx4_mr *mr)  in mlx4_mr_alloc_reserved()  argument
423 mr->iova = iova; in mlx4_mr_alloc_reserved()
424 mr->size = size; in mlx4_mr_alloc_reserved()
425 mr->pd = pd; in mlx4_mr_alloc_reserved()
426 mr->access = access; in mlx4_mr_alloc_reserved()
427 mr->enabled = MLX4_MPT_DISABLED; in mlx4_mr_alloc_reserved()
428 mr->key = hw_index_to_key(mridx); in mlx4_mr_alloc_reserved()
430 return mlx4_mtt_init(dev, npages, page_shift, &mr->mtt); in mlx4_mr_alloc_reserved()
530 int npages, int page_shift, struct mlx4_mr *mr) in mlx4_mr_alloc() argument
540 access, npages, page_shift, mr); in mlx4_mr_alloc()
548 static int mlx4_mr_free_reserved(struct mlx4_dev *dev, struct mlx4_mr *mr) in mlx4_mr_free_reserved() argument
552 if (mr->enabled == MLX4_MPT_EN_HW) { in mlx4_mr_free_reserved()
554 key_to_hw_index(mr->key) & in mlx4_mr_free_reserved()
562 mr->enabled = MLX4_MPT_EN_SW; in mlx4_mr_free_reserved()
564 mlx4_mtt_cleanup(dev, &mr->mtt); in mlx4_mr_free_reserved()
569 int mlx4_mr_free(struct mlx4_dev *dev, struct mlx4_mr *mr) in mlx4_mr_free() argument
573 ret = mlx4_mr_free_reserved(dev, mr); in mlx4_mr_free()
576 if (mr->enabled) in mlx4_mr_free()
577 mlx4_mpt_free_icm(dev, key_to_hw_index(mr->key)); in mlx4_mr_free()
578 mlx4_mpt_release(dev, key_to_hw_index(mr->key)); in mlx4_mr_free()
584 void mlx4_mr_rereg_mem_cleanup(struct mlx4_dev *dev, struct mlx4_mr *mr) in mlx4_mr_rereg_mem_cleanup() argument
586 mlx4_mtt_cleanup(dev, &mr->mtt); in mlx4_mr_rereg_mem_cleanup()
587 mr->mtt.order = -1; in mlx4_mr_rereg_mem_cleanup()
591 int mlx4_mr_rereg_mem_write(struct mlx4_dev *dev, struct mlx4_mr *mr, in mlx4_mr_rereg_mem_write() argument
597 err = mlx4_mtt_init(dev, npages, page_shift, &mr->mtt); in mlx4_mr_rereg_mem_write()
606 if (mr->mtt.order < 0) { in mlx4_mr_rereg_mem_write()
611 &mr->mtt)); in mlx4_mr_rereg_mem_write()
612 if (mr->mtt.page_shift == 0) in mlx4_mr_rereg_mem_write()
613 mpt_entry->mtt_sz = cpu_to_be32(1 << mr->mtt.order); in mlx4_mr_rereg_mem_write()
615 if (mr->mtt.order >= 0 && mr->mtt.page_shift == 0) { in mlx4_mr_rereg_mem_write()
623 mr->enabled = MLX4_MPT_EN_SW; in mlx4_mr_rereg_mem_write()
629 int mlx4_mr_enable(struct mlx4_dev *dev, struct mlx4_mr *mr) in mlx4_mr_enable() argument
635 err = mlx4_mpt_alloc_icm(dev, key_to_hw_index(mr->key), GFP_KERNEL); in mlx4_mr_enable()
647 mr->access); in mlx4_mr_enable()
649 mpt_entry->key = cpu_to_be32(key_to_hw_index(mr->key)); in mlx4_mr_enable()
650 mpt_entry->pd_flags = cpu_to_be32(mr->pd | MLX4_MPT_PD_FLAG_EN_INV); in mlx4_mr_enable()
651 mpt_entry->start = cpu_to_be64(mr->iova); in mlx4_mr_enable()
652 mpt_entry->length = cpu_to_be64(mr->size); in mlx4_mr_enable()
653 mpt_entry->entity_size = cpu_to_be32(mr->mtt.page_shift); in mlx4_mr_enable()
655 if (mr->mtt.order < 0) { in mlx4_mr_enable()
660 &mr->mtt)); in mlx4_mr_enable()
663 if (mr->mtt.order >= 0 && mr->mtt.page_shift == 0) { in mlx4_mr_enable()
668 mpt_entry->mtt_sz = cpu_to_be32(1 << mr->mtt.order); in mlx4_mr_enable()
674 key_to_hw_index(mr->key) & (dev->caps.num_mpts - 1)); in mlx4_mr_enable()
679 mr->enabled = MLX4_MPT_EN_HW; in mlx4_mr_enable()
689 mlx4_mpt_free_icm(dev, key_to_hw_index(mr->key)); in mlx4_mr_enable()
1011 key = key_to_hw_index(fmr->mr.key); in mlx4_map_phys_fmr()
1013 *lkey = *rkey = fmr->mr.key = hw_index_to_key(key); in mlx4_map_phys_fmr()
1068 page_shift, &fmr->mr); in mlx4_fmr_alloc()
1073 fmr->mr.mtt.offset, in mlx4_fmr_alloc()
1084 (void) mlx4_mr_free(dev, &fmr->mr); in mlx4_fmr_alloc()
1094 err = mlx4_mr_enable(dev, &fmr->mr); in mlx4_fmr_enable()
1099 key_to_hw_index(fmr->mr.key), NULL); in mlx4_fmr_enable()
1126 key_to_hw_index(fmr->mr.key) & in mlx4_fmr_unmap()
1133 fmr->mr.enabled = MLX4_MPT_EN_SW; in mlx4_fmr_unmap()
1144 ret = mlx4_mr_free(dev, &fmr->mr); in mlx4_fmr_free()
1147 fmr->mr.enabled = MLX4_MPT_DISABLED; in mlx4_fmr_free()