]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
IB/mlx5: Remove unused mkc bits in mlx5r_umr_update_mr_page_shift()
authorJason Gunthorpe <jgg@nvidia.com>
Thu, 4 Jun 2026 01:27:44 +0000 (22:27 -0300)
committerJason Gunthorpe <jgg@nvidia.com>
Mon, 8 Jun 2026 17:32:43 +0000 (14:32 -0300)
The HW only processes mkc fields selected by mkey_mask.
pd, qpn and mkey_7_0 are never selected so they can be left as zero.

This removes a racy read of mr->pd.

Fixes: e73242aa14d2 ("RDMA/mlx5: Optimize DMABUF mkey page size")
Link: https://patch.msgid.link/r/5-v1-29ebd2c229b5+fd5-ib_mr_pd_jgg@nvidia.com
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/hw/mlx5/umr.c
drivers/infiniband/hw/mlx5/umr.h

index 688d5246f284e8fca6c3c0eb1fa043c058424aa7..f0ba8d91f81d1661993463047ef67a45b77f06a9 100644 (file)
@@ -937,8 +937,7 @@ int mlx5r_umr_update_xlt(struct mlx5_ib_mr *mr, u64 idx, int npages,
  * pinned and the HW can switch from 4K to huge-page alignment).
  */
 int mlx5r_umr_update_mr_page_shift(struct mlx5_ib_mr *mr,
-                                  unsigned int page_shift,
-                                  bool dd)
+                                  unsigned int page_shift)
 {
        struct mlx5_ib_dev *dev = mr_to_mdev(mr);
        struct mlx5r_umr_wqe wqe = {};
@@ -953,16 +952,8 @@ int mlx5r_umr_update_mr_page_shift(struct mlx5_ib_mr *mr,
        /* Fill mkey segment with the new page size, keep the rest unchanged */
        MLX5_SET(mkc, &wqe.mkey_seg, log_page_size, page_shift);
 
-       if (dd)
-               MLX5_SET(mkc, &wqe.mkey_seg, pd, dev->ddr.pdn);
-       else
-               MLX5_SET(mkc, &wqe.mkey_seg, pd, to_mpd(mr->ibmr.pd)->pdn);
-
        MLX5_SET64(mkc, &wqe.mkey_seg, start_addr, mr->ibmr.iova);
        MLX5_SET64(mkc, &wqe.mkey_seg, len, mr->ibmr.length);
-       MLX5_SET(mkc, &wqe.mkey_seg, qpn, 0xffffff);
-       MLX5_SET(mkc, &wqe.mkey_seg, mkey_7_0,
-                mlx5_mkey_variant(mr->mmkey.key));
 
        err = mlx5r_umr_post_send_wait(dev, mr->mmkey.key, &wqe, false);
        if (!err)
@@ -1049,7 +1040,7 @@ static int _mlx5r_umr_zap_mkey(struct mlx5_ib_mr *mr,
         * non-present.
         */
        if (*nblocks) {
-               err = mlx5r_umr_update_mr_page_shift(mr, max_page_shift, dd);
+               err = mlx5r_umr_update_mr_page_shift(mr, max_page_shift);
                if (err) {
                        mr->page_shift = old_page_shift;
                        return err;
@@ -1114,8 +1105,7 @@ int mlx5r_umr_dmabuf_update_pgsz(struct mlx5_ib_mr *mr, u32 xlt_flags,
                        goto err;
        }
 
-       err = mlx5r_umr_update_mr_page_shift(mr, mr->page_shift,
-                                            mr->data_direct);
+       err = mlx5r_umr_update_mr_page_shift(mr, mr->page_shift);
        if (err)
                goto err;
        err = _mlx5r_dmabuf_umr_update_pas(mr, xlt_flags, 0, zapped_blocks,
index 7eeaf6a94c9743ac10f7f62069f603468da75565..59809d4d7d7297b93ffe1b3b54ee4d490a2527ee 100644 (file)
@@ -106,8 +106,7 @@ 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 page_shift, int flags);
 int mlx5r_umr_update_mr_page_shift(struct mlx5_ib_mr *mr,
-                                  unsigned int page_shift,
-                                  bool dd);
+                                  unsigned int page_shift);
 int mlx5r_umr_dmabuf_update_pgsz(struct mlx5_ib_mr *mr, u32 xlt_flags,
                                 unsigned int page_shift);