Commit 45d339fe authored by Mark Zhang's avatar Mark Zhang Committed by Jason Gunthorpe
Browse files

RDMA/mlx5: Enable multiplane mode only when it is supported

Driver queries vport_cxt.num_plane and enables multiplane when it is
greater then 0, but some old FWs (versions from x.40.1000 till x.42.1000),
report vport_cxt.num_plane = 1 unexpectedly.

Fix it by querying num_plane only when HCA_CAP2.multiplane bit is set.

Fixes: 2a5db20f ("RDMA/mlx5: Add support to multi-plane device and port")
Link: https://patch.msgid.link/r/1ef901acdf564716fcf550453cf5e94f343777ec.1734610916.git.leon@kernel.org


Cc: stable@vger.kernel.org
Reported-by: default avatarFrancesco Poli <invernomuto@paranoici.org>
Closes: https://lore.kernel.org/all/nvs4i2v7o6vn6zhmtq4sgazy2hu5kiulukxcntdelggmznnl7h@so3oul6uwgbl/


Signed-off-by: default avatarMark Zhang <markzhang@nvidia.com>
Signed-off-by: default avatarLeon Romanovsky <leonro@nvidia.com>
Reviewed-by: default avatarMichal Swiatkowski <michal.swiatkowski@linux.intel.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@nvidia.com>
parent e6178bf7
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2839,7 +2839,7 @@ static int mlx5_ib_get_plane_num(struct mlx5_core_dev *mdev, u8 *num_plane)
	int err;

	*num_plane = 0;
	if (!MLX5_CAP_GEN(mdev, ib_virt))
	if (!MLX5_CAP_GEN(mdev, ib_virt) || !MLX5_CAP_GEN_2(mdev, multiplane))
		return 0;

	err = mlx5_query_hca_vport_context(mdev, 0, 1, 0, &vport_ctx);
+3 −1
Original line number Diff line number Diff line
@@ -2119,7 +2119,9 @@ struct mlx5_ifc_cmd_hca_cap_2_bits {
	u8	   migration_in_chunks[0x1];
	u8	   reserved_at_d1[0x1];
	u8	   sf_eq_usage[0x1];
	u8	   reserved_at_d3[0xd];
	u8	   reserved_at_d3[0x5];
	u8	   multiplane[0x1];
	u8	   reserved_at_d9[0x7];

	u8	   cross_vhca_object_to_object_supported[0x20];