mlx5_ib_mr
static inline struct mlx5_ib_dev *mr_to_mdev(struct mlx5_ib_mr *mr)
static inline struct mlx5_ib_mr *to_mmr(struct ib_mr *ibmr)
return container_of(ibmr, struct mlx5_ib_mr, ibmr);
struct mlx5_ib_mr *mlx5_ib_alloc_implicit_mr(struct mlx5_ib_pd *pd,
void mlx5_ib_free_odp_mr(struct mlx5_ib_mr *mr);
struct mlx5_ib_mr *mlx5_mr_cache_alloc(struct mlx5_ib_dev *dev,
struct mlx5_ib_mr *mr, int flags);
int mlx5_ib_init_odp_mr(struct mlx5_ib_mr *mr);
int mlx5_ib_init_dmabuf_mr(struct mlx5_ib_mr *mr);
struct mlx5_ib_mr *mr, int flags)
static inline int mlx5_ib_init_odp_mr(struct mlx5_ib_mr *mr)
static inline int mlx5_ib_init_dmabuf_mr(struct mlx5_ib_mr *mr)
struct mlx5_ib_mr *pi_mr;
struct mlx5_ib_mr *klm_mr;
struct mlx5_ib_mr *mtt_mr;
struct mlx5_ib_mr *parent;
struct mlx5_ib_mr *dd_crossed_mr;
static inline bool is_odp_mr(struct mlx5_ib_mr *mr)
static inline bool is_dmabuf_mr(struct mlx5_ib_mr *mr)
struct mlx5_ib_mr *mr;
static void set_mr_fields(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr,
static struct mlx5_ib_mr *alloc_cacheable_mr(struct ib_pd *pd,
struct mlx5_ib_mr *mr;
struct mlx5_ib_mr *mr;
static struct mlx5_ib_mr *reg_create(struct ib_pd *pd, struct ib_umem *umem,
struct mlx5_ib_mr *mr;
static int destroy_mkey(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr)
struct mlx5_ib_mr *mr;
struct mlx5_ib_mr *mr = NULL;
struct mlx5_ib_mr *mr;
struct mlx5_ib_mr *mr = umem_dmabuf->private;
struct mlx5_ib_mr *mr = NULL;
static bool can_use_umr_rereg_pas(struct mlx5_ib_mr *mr,
static int umr_rereg_pas(struct mlx5_ib_mr *mr, struct ib_pd *pd,
struct mlx5_ib_mr *mr = to_mmr(ib_mr);
struct mlx5_ib_mr *mr,
mlx5_free_priv_descs(struct mlx5_ib_mr *mr)
struct mlx5_ib_mr *mr)
static int mlx5_ib_revoke_data_direct_mr(struct mlx5_ib_mr *mr)
struct mlx5_ib_mr *mr, *next;
static int mlx5_umr_revoke_mr_with_lock(struct mlx5_ib_mr *mr)
static int mlx5r_handle_mkey_cleanup(struct mlx5_ib_mr *mr)
struct mlx5_ib_mr *mr = to_mmr(ibmr);
struct mlx5_ib_mr *mr)
struct mlx5_ib_mr *dd_crossed_mr = mr->dd_crossed_mr;
struct mlx5_ib_mr *mr = to_mmr(ibmr);
static int _mlx5_alloc_mkey_descs(struct ib_pd *pd, struct mlx5_ib_mr *mr,
static struct mlx5_ib_mr *mlx5_ib_alloc_pi_mr(struct ib_pd *pd,
struct mlx5_ib_mr *mr;
static int mlx5_alloc_mem_reg_descs(struct ib_pd *pd, struct mlx5_ib_mr *mr,
static int mlx5_alloc_sg_gaps_descs(struct ib_pd *pd, struct mlx5_ib_mr *mr,
static int mlx5_alloc_integrity_descs(struct ib_pd *pd, struct mlx5_ib_mr *mr,
struct mlx5_ib_mr *mr;
struct mlx5_ib_mr *mmr = to_mmr(ibmr);
struct mlx5_ib_mr *mr = to_mmr(ibmr);
mlx5_ib_sg_to_klms(struct mlx5_ib_mr *mr,
struct mlx5_ib_mr *mr = to_mmr(ibmr);
struct mlx5_ib_mr *mr = to_mmr(ibmr);
struct mlx5_ib_mr *mr = to_mmr(ibmr);
struct mlx5_ib_mr *pi_mr = mr->mtt_mr;
struct mlx5_ib_mr *mr = to_mmr(ibmr);
struct mlx5_ib_mr *pi_mr = mr->klm_mr;
struct mlx5_ib_mr *mr = to_mmr(ibmr);
struct mlx5_ib_mr *pi_mr = NULL;
struct mlx5_ib_mr *mr = to_mmr(ibmr);
static struct mlx5_ib_mr *reg_create(struct ib_pd *pd, struct ib_umem *umem,
static struct mlx5_ib_mr *_mlx5_mr_cache_alloc(struct mlx5_ib_dev *dev,
struct mlx5_ib_mr *mr;
struct mlx5_ib_mr *mlx5_mr_cache_alloc(struct mlx5_ib_dev *dev,
struct mlx5_ib_mr *mr;
mr = container_of(mmkey, struct mlx5_ib_mr, mmkey);
struct mlx5_ib_mr *imr, int flags)
struct mlx5_ib_mr *mtt = xa_load(&imr->implicit_children, idx);
struct mlx5_ib_mr *mr, *child_mr;
child_mr = container_of(mmkey, struct mlx5_ib_mr, mmkey);
mr = container_of(mmkey, struct mlx5_ib_mr, null_mmkey);
mr = container_of(mmkey, struct mlx5_ib_mr, mmkey);
struct mlx5_ib_mr *mr, int flags)
struct mlx5_ib_mr *mr, int flags)
struct mlx5_ib_mr *mr;
static struct mlx5_ib_mr *
struct mlx5_ib_mr *mr = NULL;
mr = container_of(mmkey, struct mlx5_ib_mr, mmkey);
struct mlx5_ib_mr *mr;
struct mlx5_ib_mr *mr;
struct mlx5_ib_mr *mr =
container_of(work, struct mlx5_ib_mr, odp_destroy.work);
struct mlx5_ib_mr *imr = mr->parent;
static void destroy_unused_implicit_child_mr(struct mlx5_ib_mr *mr)
struct mlx5_ib_mr *imr = mr->parent;
struct mlx5_ib_mr *mr;
static struct mlx5_ib_mr *implicit_get_child_mr(struct mlx5_ib_mr *imr,
struct mlx5_ib_mr *mr;
struct mlx5_ib_mr *ret;
struct mlx5_ib_mr *imr,
struct mlx5_ib_mr *mlx5_ib_alloc_implicit_mr(struct mlx5_ib_pd *pd,
struct mlx5_ib_mr *imr;
void mlx5_ib_free_odp_mr(struct mlx5_ib_mr *mr)
struct mlx5_ib_mr *mtt;
static int pagefault_real_mr(struct mlx5_ib_mr *mr, struct ib_umem_odp *odp,
static int pagefault_implicit_mr(struct mlx5_ib_mr *imr,
struct mlx5_ib_mr *mtt;
static int pagefault_dmabuf_mr(struct mlx5_ib_mr *mr, size_t bcnt,
static int pagefault_mr(struct mlx5_ib_mr *mr, u64 io_virt, size_t bcnt,
int mlx5_ib_init_odp_mr(struct mlx5_ib_mr *mr)
int mlx5_ib_init_dmabuf_mr(struct mlx5_ib_mr *mr)
struct mlx5_ib_mr *mr = to_mmr(ibmr);
struct mlx5_ib_mr *mr = to_mmr(ibmr);
struct mlx5_ib_mr *mr = to_mmr(ibmr);
int mlx5r_umr_dmabuf_update_pgsz(struct mlx5_ib_mr *mr, u32 xlt_flags,
int mlx5r_umr_revoke_mr(struct mlx5_ib_mr *mr)
int mlx5r_umr_rereg_pd_access(struct mlx5_ib_mr *mr, struct ib_pd *pd,
struct mlx5_ib_mr *mr,
struct mlx5_ib_mr *mr, struct ib_sge *sg,
_mlx5r_umr_init_wqe(struct mlx5_ib_mr *mr, struct mlx5r_umr_wqe *wqe,
_mlx5r_umr_update_mr_pas(struct mlx5_ib_mr *mr, unsigned int flags, bool dd,
int mlx5r_umr_update_data_direct_ksm_pas_range(struct mlx5_ib_mr *mr,
int mlx5r_umr_update_data_direct_ksm_pas(struct mlx5_ib_mr *mr,
int mlx5r_umr_update_mr_pas_range(struct mlx5_ib_mr *mr, unsigned int flags,
int mlx5r_umr_update_mr_pas(struct mlx5_ib_mr *mr, unsigned int flags)
int mlx5r_umr_update_xlt(struct mlx5_ib_mr *mr, u64 idx, int npages,
int mlx5r_umr_update_mr_page_shift(struct mlx5_ib_mr *mr,
_mlx5r_dmabuf_umr_update_pas(struct mlx5_ib_mr *mr, unsigned int flags,
static int _mlx5r_umr_zap_mkey(struct mlx5_ib_mr *mr,
int mlx5r_umr_update_data_direct_ksm_pas(struct mlx5_ib_mr *mr, unsigned int flags);
int mlx5r_umr_update_mr_pas_range(struct mlx5_ib_mr *mr, unsigned int flags,
int mlx5r_umr_update_mr_pas(struct mlx5_ib_mr *mr, unsigned int flags);
int mlx5r_umr_update_xlt(struct mlx5_ib_mr *mr, u64 idx, int npages,
int mlx5r_umr_update_mr_page_shift(struct mlx5_ib_mr *mr,
int mlx5r_umr_dmabuf_update_pgsz(struct mlx5_ib_mr *mr, u32 xlt_flags,
int mlx5r_umr_revoke_mr(struct mlx5_ib_mr *mr);
int mlx5r_umr_rereg_pd_access(struct mlx5_ib_mr *mr, struct ib_pd *pd,
int mlx5r_umr_update_data_direct_ksm_pas_range(struct mlx5_ib_mr *mr,
struct mlx5_ib_mr *mr, u8 flags, bool atomic)
struct mlx5_ib_mr *mr,
struct mlx5_ib_mr *mr,
struct mlx5_ib_mr *mr = to_mmr(sig_mr);
struct mlx5_ib_mr *pi_mr = mr->pi_mr;
struct mlx5_ib_mr *sig_mr = to_mmr(wr->mr);
struct mlx5_ib_mr *pi_mr = sig_mr->pi_mr;
struct mlx5_ib_mr *mr = to_mmr(wr->mr);
struct mlx5_ib_mr *mr;
struct mlx5_ib_mr *pi_mr;
struct mlx5_ib_mr pa_pi_mr;
memset(&pa_pi_mr, 0, sizeof(struct mlx5_ib_mr));