FAILED: patch "[PATCH] {net, RDMA}/mlx5: Fix override of log_max_qp by other device" failed to apply to 4.4-stable tree
Subsystems (5)
[email protected]
maintainerThe patch below does not apply to the 4.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 3410fbcd47dc6479af4309febf760ccaa5efb472 Mon Sep 17 00:00:00 2001
From: Maor Gottlieb <[email protected]>
Date: Wed, 12 May 2021 13:52:27 +0300
Subject: [PATCH] {net, RDMA}/mlx5: Fix override of log_max_qp by other device
mlx5_core_dev holds pointer to static profile, hence when the log_max_qp of the profile is override by some device, then it effect all other mlx5 devices that share the same profile. Fix it by having a profile instance for every mlx5 device.
drivers/infiniband/hw/mlx5/mr.c +2 -2
@@ -743,10 +743,10 @@ int mlx5_mr_cache_init(struct mlx5_ib_dev *dev) ent->xlt = (1 << ent->order) *sizeof (struct mlx5_mtt ) /MLX5_IB_UMR_OCTOWORD ; ent->access_mode =MLX5_MKC_ACCESS_MODE_MTT ; -if ((dev->mdev->profile->mask &MLX5_PROF_MASK_MR_CACHE ) && +if ((dev->mdev->profile.mask &MLX5_PROF_MASK_MR_CACHE ) && !dev->is_rep &&mlx5_core_is_pf (dev->mdev) &&mlx5_ib_can_load_pas_with_umr (dev,0 )) - ent->limit = dev->mdev->profile->mr_cache[i].limit; + ent->limit = dev->mdev->profile.mr_cache[i].limit;else ent->limit =0 ;spin_lock_irq (&ent->lock);
drivers/net/ethernet/mellanox/mlx5/core/main.c +5 -6
@@ -503,7 +503,7 @@ static int handle_hca_cap_odp(struct mlx5_core_dev *dev, void *set_ctx)static int handle_hca_cap (struct mlx5_core_dev *dev,void *set_ctx) { -struct mlx5_profile *prof = dev->profile; +struct mlx5_profile *prof = &dev->profile;void *set_hca_cap;int err;
@@ -524,11 +524,11 @@ static int handle_hca_cap(struct mlx5_core_dev *dev, void *set_ctx) to_fw_pkey_sz(dev, 128));/* Check log_max_qp from HCA caps to set in current profile */ -if (MLX5_CAP_GEN_MAX (dev, log_max_qp) < profile[prof_sel].log_max_qp) { +if (MLX5_CAP_GEN_MAX (dev, log_max_qp) < prof->log_max_qp) {mlx5_core_warn (dev,"log_max_qp value in current profile is %d, changing it to HCA capability limit (%d)\n" , - profile[prof_sel].log_max_qp, + prof->log_max_qp,MLX5_CAP_GEN_MAX (dev, log_max_qp)); - profile[prof_sel].log_max_qp =MLX5_CAP_GEN_MAX (dev, log_max_qp); + prof->log_max_qp =MLX5_CAP_GEN_MAX (dev, log_max_qp); }if (prof->mask &MLX5_PROF_MASK_QP_SIZE ) MLX5_SET(cmd_hca_cap, set_hca_cap, log_max_qp,
@@ -1381,8 +1381,7 @@ int mlx5_mdev_init(struct mlx5_core_dev *dev, int profile_idx)struct mlx5_priv *priv = &dev->priv;int err; - dev->profile = &profile[profile_idx]; - +memcpy (&dev->profile, &profile[profile_idx],sizeof (dev->profile));INIT_LIST_HEAD (&priv->ctx_list);spin_lock_init (&priv->ctx_lock);mutex_init (&dev->intf_state_mutex);
include/linux/mlx5/driver.h +22 -22
68 lines not on this page · raw message