From: Leon Romanovsky <leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
To: Doug Ledford <dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
Jason Gunthorpe <jgg-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Daniel Jurgens <danielj-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
Parav Pandit <parav-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
Subject: [PATCH rdma-next 02/15] net/mlx5: Set software owner ID during init HCA
Date: Sun, 24 Dec 2017 14:57:28 +0200 [thread overview]
Message-ID: <20171224125741.25464-3-leon@kernel.org> (raw)
In-Reply-To: <20171224125741.25464-1-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
From: Daniel Jurgens <danielj-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
Generate a unique 128bit identifier for each host and pass that value to
firmware in the INIT_HCA command if it reports the sw_owner_id
capo ability. This value is used by FW to determine if functions are in
use by the same host.
Signed-off-by: Daniel Jurgens <danielj-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
Reviewed-by: Parav Pandit <parav-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
Signed-off-by: Leon Romanovsky <leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
---
drivers/net/ethernet/mellanox/mlx5/core/fw.c | 10 +++++++++-
drivers/net/ethernet/mellanox/mlx5/core/main.c | 6 +++++-
drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h | 2 +-
include/linux/mlx5/device.h | 5 +++++
include/linux/mlx5/mlx5_ifc.h | 5 ++++-
5 files changed, 24 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/fw.c b/drivers/net/ethernet/mellanox/mlx5/core/fw.c
index 5ef1b56b6a96..9d11e92fb541 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/fw.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/fw.c
@@ -195,12 +195,20 @@ int mlx5_query_hca_caps(struct mlx5_core_dev *dev)
return 0;
}
-int mlx5_cmd_init_hca(struct mlx5_core_dev *dev)
+int mlx5_cmd_init_hca(struct mlx5_core_dev *dev, uint32_t *sw_owner_id)
{
u32 out[MLX5_ST_SZ_DW(init_hca_out)] = {0};
u32 in[MLX5_ST_SZ_DW(init_hca_in)] = {0};
+ int i;
MLX5_SET(init_hca_in, in, opcode, MLX5_CMD_OP_INIT_HCA);
+
+ if (MLX5_CAP_GEN(dev, sw_owner_id)) {
+ for (i = 0; i < 4; i++)
+ MLX5_ARRAY_SET(init_hca_in, in, sw_owner_id, i,
+ sw_owner_id[i]);
+ }
+
return mlx5_cmd_exec(dev, in, sizeof(in), out, sizeof(out));
}
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/main.c b/drivers/net/ethernet/mellanox/mlx5/core/main.c
index 5f323442cc5a..5f3dc0ede917 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/main.c
@@ -75,6 +75,8 @@ static unsigned int prof_sel = MLX5_DEFAULT_PROF;
module_param_named(prof_sel, prof_sel, uint, 0444);
MODULE_PARM_DESC(prof_sel, "profile selector. Valid range 0 - 2");
+static u32 sw_owner_id[4];
+
enum {
MLX5_ATOMIC_REQ_MODE_BE = 0x0,
MLX5_ATOMIC_REQ_MODE_HOST_ENDIANNESS = 0x1,
@@ -1052,7 +1054,7 @@ static int mlx5_load_one(struct mlx5_core_dev *dev, struct mlx5_priv *priv,
goto reclaim_boot_pages;
}
- err = mlx5_cmd_init_hca(dev);
+ err = mlx5_cmd_init_hca(dev, sw_owner_id);
if (err) {
dev_err(&pdev->dev, "init hca failed\n");
goto err_pagealloc_stop;
@@ -1574,6 +1576,8 @@ static int __init init(void)
{
int err;
+ get_random_bytes(&sw_owner_id, sizeof(sw_owner_id));
+
mlx5_core_verify_params();
mlx5_register_debugfs();
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h b/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h
index ff4a0b889a6f..b05868728da7 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h
+++ b/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h
@@ -86,7 +86,7 @@ enum {
int mlx5_query_hca_caps(struct mlx5_core_dev *dev);
int mlx5_query_board_id(struct mlx5_core_dev *dev);
-int mlx5_cmd_init_hca(struct mlx5_core_dev *dev);
+int mlx5_cmd_init_hca(struct mlx5_core_dev *dev, uint32_t *sw_owner_id);
int mlx5_cmd_teardown_hca(struct mlx5_core_dev *dev);
int mlx5_cmd_force_teardown_hca(struct mlx5_core_dev *dev);
void mlx5_core_event(struct mlx5_core_dev *dev, enum mlx5_dev_event event,
diff --git a/include/linux/mlx5/device.h b/include/linux/mlx5/device.h
index 409ffb14298a..18c041966ab8 100644
--- a/include/linux/mlx5/device.h
+++ b/include/linux/mlx5/device.h
@@ -79,6 +79,11 @@
<< __mlx5_dw_bit_off(typ, fld))); \
} while (0)
+#define MLX5_ARRAY_SET(typ, p, fld, idx, v) do { \
+ BUILD_BUG_ON(__mlx5_bit_off(typ, fld) % 32); \
+ MLX5_SET(typ, p, fld[idx], v); \
+} while (0)
+
#define MLX5_SET_TO_ONES(typ, p, fld) do { \
BUILD_BUG_ON(__mlx5_st_sz_bits(typ) % 32); \
*((__be32 *)(p) + __mlx5_dw_off(typ, fld)) = \
diff --git a/include/linux/mlx5/mlx5_ifc.h b/include/linux/mlx5/mlx5_ifc.h
index 38a7577a9ce7..b1c81d7a86cb 100644
--- a/include/linux/mlx5/mlx5_ifc.h
+++ b/include/linux/mlx5/mlx5_ifc.h
@@ -1066,7 +1066,9 @@ struct mlx5_ifc_cmd_hca_cap_bits {
u8 reserved_at_5f8[0x3];
u8 log_max_xrq[0x5];
- u8 reserved_at_600[0x200];
+ u8 reserved_at_600[0x1e];
+ u8 sw_owner_id;
+ u8 reserved_at_61f[0x1e1];
};
enum mlx5_flow_destination_type {
@@ -5531,6 +5533,7 @@ struct mlx5_ifc_init_hca_in_bits {
u8 op_mod[0x10];
u8 reserved_at_40[0x40];
+ u8 sw_owner_id[4][0x20];
};
struct mlx5_ifc_init2rtr_qp_out_bits {
--
2.15.1
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2017-12-24 12:57 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-24 12:57 [PATCH rdma-next 00/15] Dual Port mlx5 IB Device for RoCE Leon Romanovsky
[not found] ` <20171224125741.25464-1-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2017-12-24 12:57 ` [PATCH rdma-next 01/15] net/mlx5: Fix race for multiple RoCE enable Leon Romanovsky
[not found] ` <20171224125741.25464-2-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2017-12-24 21:53 ` Or Gerlitz
[not found] ` <CAJ3xEMg8U_4DpYEWa8t1QpccNzjU6f0shEtQ7fRWg-EtGupy+w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-12-25 5:59 ` Leon Romanovsky
[not found] ` <20171225055916.GU2942-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
2017-12-25 9:21 ` Or Gerlitz
2017-12-24 12:57 ` Leon Romanovsky [this message]
[not found] ` <20171224125741.25464-3-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2017-12-24 22:00 ` [PATCH rdma-next 02/15] net/mlx5: Set software owner ID during init HCA Or Gerlitz
[not found] ` <CAJ3xEMiq-4DGFW-Z3hX3NfsSGXD6bm_uarGF_cm6K7+YuutJBQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-12-25 5:35 ` Leon Romanovsky
[not found] ` <20171225053534.GT2942-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
2017-12-27 21:28 ` Or Gerlitz
2017-12-27 15:27 ` Daniel Jurgens
[not found] ` <b329f348-2462-2bf4-ee06-064e798c9b86-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2017-12-27 17:52 ` Jason Gunthorpe
[not found] ` <20171227175208.GD31310-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2017-12-27 18:06 ` Daniel Jurgens
[not found] ` <37588052-e7cd-b2ad-b2e0-91e03a9401d1-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2017-12-27 18:10 ` Jason Gunthorpe
2018-01-02 9:34 ` Or Gerlitz
[not found] ` <CAJ3xEMixQ-Tw9gUYYPhNLvrEbntNTQBvLcVUe+x130hkEq15Bg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-01-02 10:10 ` Leon Romanovsky
2017-12-24 12:57 ` [PATCH rdma-next 03/15] IB/core: Change roce_rescan_device to return void Leon Romanovsky
2017-12-24 12:57 ` [PATCH rdma-next 04/15] IB/mlx5: Reduce the use of num_port capability Leon Romanovsky
2017-12-24 12:57 ` [PATCH rdma-next 05/15] IB/mlx5: Make netdev notifications multiport capable Leon Romanovsky
2017-12-24 12:57 ` [PATCH rdma-next 06/15] {net,IB}/mlx5: Manage port association for multiport RoCE Leon Romanovsky
2017-12-24 12:57 ` [PATCH rdma-next 07/15] IB/mlx5: Move IB event processing onto a workqueue Leon Romanovsky
2017-12-24 12:57 ` [PATCH rdma-next 08/15] IB/mlx5: Implement dual port functionality in query routines Leon Romanovsky
2017-12-24 12:57 ` [PATCH rdma-next 09/15] IB/mlx5: Change debugfs to have per port contents Leon Romanovsky
2017-12-24 12:57 ` [PATCH rdma-next 10/15] IB/mlx5: Update counter implementation for dual port RoCE Leon Romanovsky
2017-12-24 12:57 ` [PATCH rdma-next 11/15] {net,IB}/mlx5: Change set_roce_gid to take a port number Leon Romanovsky
2017-12-24 12:57 ` [PATCH rdma-next 12/15] IB/mlx5: Route MADs for dual port RoCE Leon Romanovsky
2017-12-24 12:57 ` [PATCH rdma-next 13/15] IB/mlx5: Use correct mdev for vport queries in ib_virt Leon Romanovsky
[not found] ` <20171224125741.25464-14-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2017-12-24 22:14 ` Or Gerlitz
[not found] ` <CAJ3xEMgyD693JPtu_vag-q3kVP=Nyag=dPEp15AZcyX62FwkPw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-12-25 7:25 ` Leon Romanovsky
2017-12-24 12:57 ` [PATCH rdma-next 14/15] IB/mlx5: Don't advertise RAW QP support in dual port mode Leon Romanovsky
[not found] ` <20171224125741.25464-15-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2017-12-24 22:16 ` Or Gerlitz
[not found] ` <CAJ3xEMgAtd1PKN2h1NFj=Mt72msuU5bpFy0jO4KFXxXxGRf7hA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-12-25 7:16 ` Leon Romanovsky
[not found] ` <20171225071613.GW2942-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
2017-12-25 9:17 ` Or Gerlitz
[not found] ` <CAJ3xEMhtssDWuu8JAB_jhyofKbkeo4vYTLixLeta6vPzKQOp+A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-01-03 20:35 ` Daniel Jurgens
[not found] ` <ab3fb697-7b2c-685c-2151-5f48d5d7270a-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2018-01-03 20:39 ` Or Gerlitz
[not found] ` <CAJ3xEMimYj8=USqjHEF_uiwJCNoeT5qpbNMYTWUX7EgTVSeuuw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-01-03 20:43 ` Daniel Jurgens
[not found] ` <6f114e3c-2e16-f7ce-2e60-d06113afc9b8-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2018-01-03 20:47 ` Or Gerlitz
[not found] ` <CAJ3xEMjZfTJP1fi=VosXL_v=AUueWZc54iOsXz1ynikYm-jcjA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-01-04 5:21 ` Leon Romanovsky
2017-12-24 12:57 ` [PATCH rdma-next 15/15] net/mlx5: Set num_vhca_ports capability Leon Romanovsky
2017-12-24 21:48 ` [PATCH rdma-next 00/15] Dual Port mlx5 IB Device for RoCE Or Gerlitz
[not found] ` <CAJ3xEMhZgEee+VLpV4bV150siOdXwpcp64AGqeqr5Y2o--WRdw@mail.gmail.com>
[not found] ` <CAJ3xEMhZgEee+VLpV4bV150siOdXwpcp64AGqeqr5Y2o--WRdw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-12-25 9:24 ` Or Gerlitz
[not found] ` <CAJ3xEMgpP0Sbj4vY3_pJDjrDqHLHmkaTSGLyVuBY+aoC6VUnHA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-01-03 18:58 ` Daniel Jurgens
2017-12-27 15:22 ` Daniel Jurgens
[not found] ` <382ba516-bf7b-0a0b-7a9f-604cbf805c80-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2017-12-27 21:22 ` Or Gerlitz
[not found] ` <CAJ3xEMi3CvATj-vpfy8E89=ZoPL1mmoiu8HWea_NEwfV2++ZpQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-12-27 23:20 ` Daniel Jurgens
[not found] ` <a3cf271c-f66c-074a-88bd-b48b39959e6b-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2017-12-29 18:03 ` Jason Gunthorpe
[not found] ` <20171229180313.GD6513-uk2M96/98Pc@public.gmane.org>
2017-12-29 20:52 ` Daniel Jurgens
[not found] ` <9d102fb2-122c-d7e9-2521-cf61b708d8c0-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2017-12-29 21:27 ` Jason Gunthorpe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171224125741.25464-3-leon@kernel.org \
--to=leon-dgejt+ai2ygdnm+yrofe0a@public.gmane.org \
--cc=danielj-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=jgg-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=parav-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.