]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Fixes for 6.6
authorSasha Levin <sashal@kernel.org>
Mon, 22 Apr 2024 23:10:07 +0000 (19:10 -0400)
committerSasha Levin <sashal@kernel.org>
Mon, 22 Apr 2024 23:10:07 +0000 (19:10 -0400)
Signed-off-by: Sasha Levin <sashal@kernel.org>
queue-6.6/net-mlx5-e-switch-store-eswitch-pointer-before-regis.patch [new file with mode: 0644]
queue-6.6/series

diff --git a/queue-6.6/net-mlx5-e-switch-store-eswitch-pointer-before-regis.patch b/queue-6.6/net-mlx5-e-switch-store-eswitch-pointer-before-regis.patch
new file mode 100644 (file)
index 0000000..b2cbd24
--- /dev/null
@@ -0,0 +1,97 @@
+From 142bb9c41aaafdf33e1c71b215dd398016d378fa Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 9 Apr 2024 22:08:09 +0300
+Subject: net/mlx5: E-switch, store eswitch pointer before registering
+ devlink_param
+
+From: Shay Drory <shayd@nvidia.com>
+
+[ Upstream commit 0553e753ea9ee724acaf6b3dfc7354702af83567 ]
+
+Next patch will move devlink register to be first. Therefore, whenever
+mlx5 will register a param, the user will be notified.
+In order to notify the user, devlink is using the get() callback of
+the param. Hence, resources that are being used by the get() callback
+must be set before the devlink param is registered.
+
+Therefore, store eswitch pointer inside mdev before registering the
+param.
+
+Signed-off-by: Shay Drory <shayd@nvidia.com>
+Reviewed-by: Moshe Shemesh <moshe@nvidia.com>
+Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
+Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
+Link: https://lore.kernel.org/r/20240409190820.227554-2-tariqt@nvidia.com
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/ethernet/mellanox/mlx5/core/eswitch.c        | 9 +++------
+ .../net/ethernet/mellanox/mlx5/core/eswitch_offloads.c   | 4 ++++
+ 2 files changed, 7 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c
+index 3047d7015c525..1789800faaeb6 100644
+--- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c
++++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c
+@@ -1868,6 +1868,7 @@ int mlx5_eswitch_init(struct mlx5_core_dev *dev)
+       if (err)
+               goto abort;
++      dev->priv.eswitch = esw;
+       err = esw_offloads_init(esw);
+       if (err)
+               goto reps_err;
+@@ -1892,11 +1893,6 @@ int mlx5_eswitch_init(struct mlx5_core_dev *dev)
+               esw->offloads.encap = DEVLINK_ESWITCH_ENCAP_MODE_BASIC;
+       else
+               esw->offloads.encap = DEVLINK_ESWITCH_ENCAP_MODE_NONE;
+-      if (MLX5_ESWITCH_MANAGER(dev) &&
+-          mlx5_esw_vport_match_metadata_supported(esw))
+-              esw->flags |= MLX5_ESWITCH_VPORT_MATCH_METADATA;
+-
+-      dev->priv.eswitch = esw;
+       BLOCKING_INIT_NOTIFIER_HEAD(&esw->n_head);
+       esw_info(dev,
+@@ -1908,6 +1904,7 @@ int mlx5_eswitch_init(struct mlx5_core_dev *dev)
+ reps_err:
+       mlx5_esw_vports_cleanup(esw);
++      dev->priv.eswitch = NULL;
+ abort:
+       if (esw->work_queue)
+               destroy_workqueue(esw->work_queue);
+@@ -1926,7 +1923,6 @@ void mlx5_eswitch_cleanup(struct mlx5_eswitch *esw)
+       esw_info(esw->dev, "cleanup\n");
+-      esw->dev->priv.eswitch = NULL;
+       destroy_workqueue(esw->work_queue);
+       WARN_ON(refcount_read(&esw->qos.refcnt));
+       mutex_destroy(&esw->state_lock);
+@@ -1937,6 +1933,7 @@ void mlx5_eswitch_cleanup(struct mlx5_eswitch *esw)
+       mutex_destroy(&esw->offloads.encap_tbl_lock);
+       mutex_destroy(&esw->offloads.decap_tbl_lock);
+       esw_offloads_cleanup(esw);
++      esw->dev->priv.eswitch = NULL;
+       mlx5_esw_vports_cleanup(esw);
+       debugfs_remove_recursive(esw->debugfs_root);
+       devl_params_unregister(priv_to_devlink(esw->dev), mlx5_eswitch_params,
+diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c b/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
+index baaae628b0a0f..e3cce110e52fd 100644
+--- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
++++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
+@@ -2476,6 +2476,10 @@ int esw_offloads_init(struct mlx5_eswitch *esw)
+       if (err)
+               return err;
++      if (MLX5_ESWITCH_MANAGER(esw->dev) &&
++          mlx5_esw_vport_match_metadata_supported(esw))
++              esw->flags |= MLX5_ESWITCH_VPORT_MATCH_METADATA;
++
+       err = devl_params_register(priv_to_devlink(esw->dev),
+                                  esw_devlink_params,
+                                  ARRAY_SIZE(esw_devlink_params));
+-- 
+2.43.0
+
index 6f572a6e997ffff3fa143f60f7cac04282aea312..884762f16abb60a405a98eedd552ce6d558298ac 100644 (file)
@@ -94,3 +94,4 @@ clk-get-runtime-pm-before-walking-tree-for-clk_summa.patch
 clk-mediatek-do-a-runtime-pm-get-on-controllers-duri.patch
 x86-bugs-fix-bhi-retpoline-check.patch
 x86-cpufeatures-fix-dependencies-for-gfni-vaes-and-v.patch
+net-mlx5-e-switch-store-eswitch-pointer-before-regis.patch