]> git.dujemihanovic.xyz Git - linux.git/commitdiff
RDMA/mlx5: Follow rb_key.ats when creating new mkeys
authorJason Gunthorpe <jgg@nvidia.com>
Tue, 28 May 2024 12:52:53 +0000 (15:52 +0300)
committerJason Gunthorpe <jgg@nvidia.com>
Fri, 21 Jun 2024 13:19:36 +0000 (10:19 -0300)
When a cache ent already exists but doesn't have any mkeys in it the cache
will automatically create a new one based on the specification in the
ent->rb_key.

ent->ats was missed when creating the new key and so ma_translation_mode
was not being set even though the ent requires it.

Cc: stable@vger.kernel.org
Fixes: 73d09b2fe833 ("RDMA/mlx5: Introduce mlx5r_cache_rb_key")
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Reviewed-by: Michael Guralnik <michaelgur@nvidia.com>
Link: https://lore.kernel.org/r/7c5613458ecb89fbe5606b7aa4c8d990bdea5b9a.1716900410.git.leon@kernel.org
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/hw/mlx5/mr.c

index 38d2c743db877b3ff36e44ad389f4fa70dfb1809..35dcb9d9e12af2502421ccf3de664c49eddf82c6 100644 (file)
@@ -246,6 +246,7 @@ static void set_cache_mkc(struct mlx5_cache_ent *ent, void *mkc)
        MLX5_SET(mkc, mkc, access_mode_1_0, ent->rb_key.access_mode & 0x3);
        MLX5_SET(mkc, mkc, access_mode_4_2,
                (ent->rb_key.access_mode >> 2) & 0x7);
+       MLX5_SET(mkc, mkc, ma_translation_mode, !!ent->rb_key.ats);
 
        MLX5_SET(mkc, mkc, translations_octword_size,
                 get_mkc_octo_size(ent->rb_key.access_mode,