Skip to content

Commit 77528e2

Browse files
aharonl-nvidiajgunthorpe
authored andcommitted
RDMA/mlx5: Reorder calls to pcie_relaxed_ordering_enabled()
The mkc is the key for the mkey cache, hence, created in each attempt to get a cache mkey, while pcie_relaxed_ordering_enabled() is called during the setting of the mkc, but used only for cases where IB_ACCESS_RELAXED_ORDERING is set. pcie_relaxed_ordering_enabled() is an expensive call (26 us). Reorder the code so the driver will call it only when it is needed. Link: https://lore.kernel.org/r/684be1366cb1d4f05aa3e78986205e4bc410443a.1644947594.git.leonro@nvidia.com Signed-off-by: Aharon Landau <[email protected]> Signed-off-by: Leon Romanovsky <[email protected]> Signed-off-by: Jason Gunthorpe <[email protected]>
1 parent 9ee2516 commit 77528e2

File tree

1 file changed

+7
-7
lines changed
  • drivers/infiniband/hw/mlx5

1 file changed

+7
-7
lines changed

drivers/infiniband/hw/mlx5/mr.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -68,20 +68,20 @@ static void set_mkc_access_pd_addr_fields(void *mkc, int acc, u64 start_addr,
6868
struct ib_pd *pd)
6969
{
7070
struct mlx5_ib_dev *dev = to_mdev(pd->device);
71-
bool ro_pci_enabled = pcie_relaxed_ordering_enabled(dev->mdev->pdev);
7271

7372
MLX5_SET(mkc, mkc, a, !!(acc & IB_ACCESS_REMOTE_ATOMIC));
7473
MLX5_SET(mkc, mkc, rw, !!(acc & IB_ACCESS_REMOTE_WRITE));
7574
MLX5_SET(mkc, mkc, rr, !!(acc & IB_ACCESS_REMOTE_READ));
7675
MLX5_SET(mkc, mkc, lw, !!(acc & IB_ACCESS_LOCAL_WRITE));
7776
MLX5_SET(mkc, mkc, lr, 1);
7877

79-
if (MLX5_CAP_GEN(dev->mdev, relaxed_ordering_write))
80-
MLX5_SET(mkc, mkc, relaxed_ordering_write,
81-
(acc & IB_ACCESS_RELAXED_ORDERING) && ro_pci_enabled);
82-
if (MLX5_CAP_GEN(dev->mdev, relaxed_ordering_read))
83-
MLX5_SET(mkc, mkc, relaxed_ordering_read,
84-
(acc & IB_ACCESS_RELAXED_ORDERING) && ro_pci_enabled);
78+
if ((acc & IB_ACCESS_RELAXED_ORDERING) &&
79+
pcie_relaxed_ordering_enabled(dev->mdev->pdev)) {
80+
if (MLX5_CAP_GEN(dev->mdev, relaxed_ordering_write))
81+
MLX5_SET(mkc, mkc, relaxed_ordering_write, 1);
82+
if (MLX5_CAP_GEN(dev->mdev, relaxed_ordering_read))
83+
MLX5_SET(mkc, mkc, relaxed_ordering_read, 1);
84+
}
8585

8686
MLX5_SET(mkc, mkc, pd, to_mpd(pd)->pdn);
8787
MLX5_SET(mkc, mkc, qpn, 0xffffff);

0 commit comments

Comments
 (0)