Loading drivers/infiniband/hw/mlx5/mr.c +10 −30 Original line number Original line Diff line number Diff line Loading @@ -47,8 +47,8 @@ enum { #define MLX5_UMR_ALIGN 2048 #define MLX5_UMR_ALIGN 2048 static int clean_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr); static void clean_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr); static int dereg_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr); static void dereg_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr); static int mr_cache_max_order(struct mlx5_ib_dev *dev); static int mr_cache_max_order(struct mlx5_ib_dev *dev); static int unreg_umr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr); static int unreg_umr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr); Loading Loading @@ -1385,15 +1385,10 @@ int mlx5_ib_rereg_user_mr(struct ib_mr *ib_mr, int flags, u64 start, /* /* * UMR can't be used - MKey needs to be replaced. * UMR can't be used - MKey needs to be replaced. */ */ if (mr->allocated_from_cache) { if (mr->allocated_from_cache) err = unreg_umr(dev, mr); err = unreg_umr(dev, mr); if (err) else mlx5_ib_warn(dev, "Failed to unregister MR\n"); } else { err = destroy_mkey(dev, mr); err = destroy_mkey(dev, mr); if (err) mlx5_ib_warn(dev, "Failed to destroy MKey\n"); } if (err) if (err) goto err; goto err; Loading Loading @@ -1498,10 +1493,9 @@ mlx5_free_priv_descs(struct mlx5_ib_mr *mr) } } } } static int clean_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr) static void clean_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr) { { int allocated_from_cache = mr->allocated_from_cache; int allocated_from_cache = mr->allocated_from_cache; int err; if (mr->sig) { if (mr->sig) { if (mlx5_core_destroy_psv(dev->mdev, if (mlx5_core_destroy_psv(dev->mdev, Loading @@ -1518,21 +1512,11 @@ static int clean_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr) mlx5_free_priv_descs(mr); mlx5_free_priv_descs(mr); if (!allocated_from_cache) { if (!allocated_from_cache) u32 key = mr->mmkey.key; destroy_mkey(dev, mr); err = destroy_mkey(dev, mr); if (err) { mlx5_ib_warn(dev, "failed to destroy mkey 0x%x (%d)\n", key, err); return err; } } } return 0; static void dereg_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr) } static int dereg_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr) { { int npages = mr->npages; int npages = mr->npages; struct ib_umem *umem = mr->umem; struct ib_umem *umem = mr->umem; Loading Loading @@ -1573,16 +1557,12 @@ static int dereg_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr) kfree(mr); kfree(mr); else else mlx5_mr_cache_free(dev, mr); mlx5_mr_cache_free(dev, mr); return 0; } } int mlx5_ib_dereg_mr(struct ib_mr *ibmr) int mlx5_ib_dereg_mr(struct ib_mr *ibmr) { { struct mlx5_ib_dev *dev = to_mdev(ibmr->device); dereg_mr(to_mdev(ibmr->device), to_mmr(ibmr)); struct mlx5_ib_mr *mr = to_mmr(ibmr); return 0; return dereg_mr(dev, mr); } } struct ib_mr *mlx5_ib_alloc_mr(struct ib_pd *pd, struct ib_mr *mlx5_ib_alloc_mr(struct ib_pd *pd, Loading Loading
drivers/infiniband/hw/mlx5/mr.c +10 −30 Original line number Original line Diff line number Diff line Loading @@ -47,8 +47,8 @@ enum { #define MLX5_UMR_ALIGN 2048 #define MLX5_UMR_ALIGN 2048 static int clean_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr); static void clean_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr); static int dereg_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr); static void dereg_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr); static int mr_cache_max_order(struct mlx5_ib_dev *dev); static int mr_cache_max_order(struct mlx5_ib_dev *dev); static int unreg_umr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr); static int unreg_umr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr); Loading Loading @@ -1385,15 +1385,10 @@ int mlx5_ib_rereg_user_mr(struct ib_mr *ib_mr, int flags, u64 start, /* /* * UMR can't be used - MKey needs to be replaced. * UMR can't be used - MKey needs to be replaced. */ */ if (mr->allocated_from_cache) { if (mr->allocated_from_cache) err = unreg_umr(dev, mr); err = unreg_umr(dev, mr); if (err) else mlx5_ib_warn(dev, "Failed to unregister MR\n"); } else { err = destroy_mkey(dev, mr); err = destroy_mkey(dev, mr); if (err) mlx5_ib_warn(dev, "Failed to destroy MKey\n"); } if (err) if (err) goto err; goto err; Loading Loading @@ -1498,10 +1493,9 @@ mlx5_free_priv_descs(struct mlx5_ib_mr *mr) } } } } static int clean_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr) static void clean_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr) { { int allocated_from_cache = mr->allocated_from_cache; int allocated_from_cache = mr->allocated_from_cache; int err; if (mr->sig) { if (mr->sig) { if (mlx5_core_destroy_psv(dev->mdev, if (mlx5_core_destroy_psv(dev->mdev, Loading @@ -1518,21 +1512,11 @@ static int clean_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr) mlx5_free_priv_descs(mr); mlx5_free_priv_descs(mr); if (!allocated_from_cache) { if (!allocated_from_cache) u32 key = mr->mmkey.key; destroy_mkey(dev, mr); err = destroy_mkey(dev, mr); if (err) { mlx5_ib_warn(dev, "failed to destroy mkey 0x%x (%d)\n", key, err); return err; } } } return 0; static void dereg_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr) } static int dereg_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr) { { int npages = mr->npages; int npages = mr->npages; struct ib_umem *umem = mr->umem; struct ib_umem *umem = mr->umem; Loading Loading @@ -1573,16 +1557,12 @@ static int dereg_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr) kfree(mr); kfree(mr); else else mlx5_mr_cache_free(dev, mr); mlx5_mr_cache_free(dev, mr); return 0; } } int mlx5_ib_dereg_mr(struct ib_mr *ibmr) int mlx5_ib_dereg_mr(struct ib_mr *ibmr) { { struct mlx5_ib_dev *dev = to_mdev(ibmr->device); dereg_mr(to_mdev(ibmr->device), to_mmr(ibmr)); struct mlx5_ib_mr *mr = to_mmr(ibmr); return 0; return dereg_mr(dev, mr); } } struct ib_mr *mlx5_ib_alloc_mr(struct ib_pd *pd, struct ib_mr *mlx5_ib_alloc_mr(struct ib_pd *pd, Loading