net/mlx5: Reset mkey index on creation
[ Upstream commit0232fc2ddc] Reset only the index part of the mkey and keep the variant part. On devlink reload, driver recreates mkeys, so the mkey index may change. Trying to preserve the variant part of the mkey, driver mistakenly merged the mkey index with current value. In case of a devlink reload, current value of index part is dirty, so the index may be corrupted. Fixes:54c62e13ad("{IB,net}/mlx5: Setup mkey variant before mr create command invocation") Signed-off-by: Aya Levin <ayal@nvidia.com> Signed-off-by: Amir Tzin <amirtz@nvidia.com> Reviewed-by: Tariq Toukan <tariqt@nvidia.com> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
38aafe678c
commit
327e626c39
@@ -54,7 +54,7 @@ int mlx5_core_create_mkey(struct mlx5_core_dev *dev,
|
|||||||
mkey_index = MLX5_GET(create_mkey_out, lout, mkey_index);
|
mkey_index = MLX5_GET(create_mkey_out, lout, mkey_index);
|
||||||
mkey->iova = MLX5_GET64(mkc, mkc, start_addr);
|
mkey->iova = MLX5_GET64(mkc, mkc, start_addr);
|
||||||
mkey->size = MLX5_GET64(mkc, mkc, len);
|
mkey->size = MLX5_GET64(mkc, mkc, len);
|
||||||
mkey->key |= mlx5_idx_to_mkey(mkey_index);
|
mkey->key = (u32)mlx5_mkey_variant(mkey->key) | mlx5_idx_to_mkey(mkey_index);
|
||||||
mkey->pd = MLX5_GET(mkc, mkc, pd);
|
mkey->pd = MLX5_GET(mkc, mkc, pd);
|
||||||
|
|
||||||
mlx5_core_dbg(dev, "out 0x%x, mkey 0x%x\n", mkey_index, mkey->key);
|
mlx5_core_dbg(dev, "out 0x%x, mkey 0x%x\n", mkey_index, mkey->key);
|
||||||
|
|||||||
Reference in New Issue
Block a user