RDMA/mlx5: Remove iova from struct mlx5_core_mkey
iova is already stored in ibmr->iova, no need to store it here. Signed-off-by: Aharon Landau <aharonl@nvidia.com> Reviewed-by: Shay Drory <shayd@nvidia.com> Acked-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
This commit is contained in:
Родитель
519d81956e
Коммит
cf6a8b1b24
|
@ -1303,7 +1303,6 @@ static int devx_handle_mkey_indirect(struct devx_obj *obj,
|
|||
mkey->key = mlx5_idx_to_mkey(
|
||||
MLX5_GET(create_mkey_out, out, mkey_index)) | key;
|
||||
mkey->type = MLX5_MKEY_INDIRECT_DEVX;
|
||||
mkey->iova = MLX5_GET64(mkc, mkc, start_addr);
|
||||
mkey->size = MLX5_GET64(mkc, mkc, len);
|
||||
mkey->pd = MLX5_GET(mkc, mkc, pd);
|
||||
devx_mr->ndescs = MLX5_GET(mkc, mkc, translations_octword_size);
|
||||
|
|
|
@ -911,12 +911,13 @@ static struct mlx5_cache_ent *mr_cache_ent_from_order(struct mlx5_ib_dev *dev,
|
|||
}
|
||||
|
||||
static void set_mr_fields(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr,
|
||||
u64 length, int access_flags)
|
||||
u64 length, int access_flags, u64 iova)
|
||||
{
|
||||
mr->ibmr.lkey = mr->mmkey.key;
|
||||
mr->ibmr.rkey = mr->mmkey.key;
|
||||
mr->ibmr.length = length;
|
||||
mr->ibmr.device = &dev->ib_dev;
|
||||
mr->ibmr.iova = iova;
|
||||
mr->access_flags = access_flags;
|
||||
}
|
||||
|
||||
|
@ -974,11 +975,10 @@ static struct mlx5_ib_mr *alloc_cacheable_mr(struct ib_pd *pd,
|
|||
|
||||
mr->ibmr.pd = pd;
|
||||
mr->umem = umem;
|
||||
mr->mmkey.iova = iova;
|
||||
mr->mmkey.size = umem->length;
|
||||
mr->mmkey.pd = to_mpd(pd)->pdn;
|
||||
mr->page_shift = order_base_2(page_size);
|
||||
set_mr_fields(dev, mr, umem->length, access_flags);
|
||||
set_mr_fields(dev, mr, umem->length, access_flags, iova);
|
||||
|
||||
return mr;
|
||||
}
|
||||
|
@ -1088,7 +1088,7 @@ static void *mlx5_ib_create_xlt_wr(struct mlx5_ib_mr *mr,
|
|||
wr->pd = mr->ibmr.pd;
|
||||
wr->mkey = mr->mmkey.key;
|
||||
wr->length = mr->mmkey.size;
|
||||
wr->virt_addr = mr->mmkey.iova;
|
||||
wr->virt_addr = mr->ibmr.iova;
|
||||
wr->access_flags = mr->access_flags;
|
||||
wr->page_shift = mr->page_shift;
|
||||
wr->xlt_size = sg->length;
|
||||
|
@ -1341,7 +1341,7 @@ static struct mlx5_ib_mr *reg_create(struct ib_pd *pd, struct ib_umem *umem,
|
|||
mr->mmkey.type = MLX5_MKEY_MR;
|
||||
mr->desc_size = sizeof(struct mlx5_mtt);
|
||||
mr->umem = umem;
|
||||
set_mr_fields(dev, mr, umem->length, access_flags);
|
||||
set_mr_fields(dev, mr, umem->length, access_flags, iova);
|
||||
kvfree(in);
|
||||
|
||||
mlx5_ib_dbg(dev, "mkey = 0x%x\n", mr->mmkey.key);
|
||||
|
@ -1388,7 +1388,7 @@ static struct ib_mr *mlx5_ib_get_dm_mr(struct ib_pd *pd, u64 start_addr,
|
|||
|
||||
kfree(in);
|
||||
|
||||
set_mr_fields(dev, mr, length, acc);
|
||||
set_mr_fields(dev, mr, length, acc, start_addr);
|
||||
|
||||
return &mr->ibmr;
|
||||
|
||||
|
@ -1763,7 +1763,7 @@ static int umr_rereg_pas(struct mlx5_ib_mr *mr, struct ib_pd *pd,
|
|||
}
|
||||
|
||||
mr->ibmr.length = new_umem->length;
|
||||
mr->mmkey.iova = iova;
|
||||
mr->ibmr.iova = iova;
|
||||
mr->mmkey.size = new_umem->length;
|
||||
mr->page_shift = order_base_2(page_size);
|
||||
mr->umem = new_umem;
|
||||
|
@ -1834,7 +1834,7 @@ struct ib_mr *mlx5_ib_rereg_user_mr(struct ib_mr *ib_mr, int flags, u64 start,
|
|||
mr->umem = NULL;
|
||||
atomic_sub(ib_umem_num_pages(umem), &dev->mdev->priv.reg_pages);
|
||||
|
||||
return create_real_mr(new_pd, umem, mr->mmkey.iova,
|
||||
return create_real_mr(new_pd, umem, mr->ibmr.iova,
|
||||
new_access_flags);
|
||||
}
|
||||
|
||||
|
|
|
@ -430,7 +430,7 @@ static struct mlx5_ib_mr *implicit_get_child_mr(struct mlx5_ib_mr *imr,
|
|||
mr->umem = &odp->umem;
|
||||
mr->ibmr.lkey = mr->mmkey.key;
|
||||
mr->ibmr.rkey = mr->mmkey.key;
|
||||
mr->mmkey.iova = idx * MLX5_IMR_MTT_SIZE;
|
||||
mr->ibmr.iova = idx * MLX5_IMR_MTT_SIZE;
|
||||
mr->parent = imr;
|
||||
odp->private = mr;
|
||||
|
||||
|
@ -500,7 +500,7 @@ struct mlx5_ib_mr *mlx5_ib_alloc_implicit_mr(struct mlx5_ib_pd *pd,
|
|||
}
|
||||
|
||||
imr->ibmr.pd = &pd->ibpd;
|
||||
imr->mmkey.iova = 0;
|
||||
imr->ibmr.iova = 0;
|
||||
imr->umem = &umem_odp->umem;
|
||||
imr->ibmr.lkey = imr->mmkey.key;
|
||||
imr->ibmr.rkey = imr->mmkey.key;
|
||||
|
@ -738,7 +738,7 @@ static int pagefault_mr(struct mlx5_ib_mr *mr, u64 io_virt, size_t bcnt,
|
|||
{
|
||||
struct ib_umem_odp *odp = to_ib_umem_odp(mr->umem);
|
||||
|
||||
if (unlikely(io_virt < mr->mmkey.iova))
|
||||
if (unlikely(io_virt < mr->ibmr.iova))
|
||||
return -EFAULT;
|
||||
|
||||
if (mr->umem->is_dmabuf)
|
||||
|
@ -747,7 +747,7 @@ static int pagefault_mr(struct mlx5_ib_mr *mr, u64 io_virt, size_t bcnt,
|
|||
if (!odp->is_implicit_odp) {
|
||||
u64 user_va;
|
||||
|
||||
if (check_add_overflow(io_virt - mr->mmkey.iova,
|
||||
if (check_add_overflow(io_virt - mr->ibmr.iova,
|
||||
(u64)odp->umem.address, &user_va))
|
||||
return -EFAULT;
|
||||
if (unlikely(user_va >= ib_umem_end(odp) ||
|
||||
|
|
|
@ -52,7 +52,6 @@ int mlx5_core_create_mkey(struct mlx5_core_dev *dev,
|
|||
|
||||
mkc = MLX5_ADDR_OF(create_mkey_in, in, memory_key_mkey_entry);
|
||||
mkey_index = MLX5_GET(create_mkey_out, lout, mkey_index);
|
||||
mkey->iova = MLX5_GET64(mkc, mkc, start_addr);
|
||||
mkey->size = MLX5_GET64(mkc, mkc, len);
|
||||
mkey->key = (u32)mlx5_mkey_variant(mkey->key) | mlx5_idx_to_mkey(mkey_index);
|
||||
mkey->pd = MLX5_GET(mkc, mkc, pd);
|
||||
|
|
|
@ -215,7 +215,6 @@ int mlx5_vdpa_create_mkey(struct mlx5_vdpa_dev *mvdev, struct mlx5_core_mkey *mk
|
|||
|
||||
mkc = MLX5_ADDR_OF(create_mkey_in, in, memory_key_mkey_entry);
|
||||
mkey_index = MLX5_GET(create_mkey_out, lout, mkey_index);
|
||||
mkey->iova = MLX5_GET64(mkc, mkc, start_addr);
|
||||
mkey->size = MLX5_GET64(mkc, mkc, len);
|
||||
mkey->key |= mlx5_idx_to_mkey(mkey_index);
|
||||
mkey->pd = MLX5_GET(mkc, mkc, pd);
|
||||
|
|
|
@ -364,7 +364,6 @@ enum {
|
|||
};
|
||||
|
||||
struct mlx5_core_mkey {
|
||||
u64 iova;
|
||||
u64 size;
|
||||
u32 key;
|
||||
u32 pd;
|
||||
|
|
Загрузка…
Ссылка в новой задаче