aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLeon Romanovsky <leonro@mellanox.com>2018-09-20 14:35:26 -0400
committerLeon Romanovsky <leonro@mellanox.com>2018-09-25 03:10:58 -0400
commitbd37197554eb28a7fc38e44e005e303c77f788ed (patch)
treee7f57aa6f5486f5fda1c06e52c25374d3a35c705
parent774ea6eea29025218f75bc94c764df9a641db471 (diff)
net/mlx5: Update mlx5_ifc with DEVX UID bits
Add DEVX information to WQ, SRQ, CQ, TIR, TIS, QP, RQ, XRCD, PD, MKEY and MCG. Each object that is created/destroyed/modified via verbs will be stamped with a UID based on its user context. This is already done for DEVX objects commands. This will enable the firmware to enforce the usage of kernel objects from the DEVX flow by validating that the same UID is used and the resources are really related to the same user. The addition of *_valid fields are needed to distinguish how various addresses are passed. For non-DEVX callers, all those fields will be zero. Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
-rw-r--r--include/linux/mlx5/mlx5_ifc.h67
1 files changed, 43 insertions, 24 deletions
diff --git a/include/linux/mlx5/mlx5_ifc.h b/include/linux/mlx5/mlx5_ifc.h
index 62c0592a9fdb..68f4d5f9d929 100644
--- a/include/linux/mlx5/mlx5_ifc.h
+++ b/include/linux/mlx5/mlx5_ifc.h
@@ -1290,7 +1290,9 @@ struct mlx5_ifc_wq_bits {
1290 u8 reserved_at_118[0x3]; 1290 u8 reserved_at_118[0x3];
1291 u8 log_wq_sz[0x5]; 1291 u8 log_wq_sz[0x5];
1292 1292
1293 u8 reserved_at_120[0x3]; 1293 u8 dbr_umem_valid[0x1];
1294 u8 wq_umem_valid[0x1];
1295 u8 reserved_at_122[0x1];
1294 u8 log_hairpin_num_packets[0x5]; 1296 u8 log_hairpin_num_packets[0x5];
1295 u8 reserved_at_128[0x3]; 1297 u8 reserved_at_128[0x3];
1296 u8 log_hairpin_data_sz[0x5]; 1298 u8 log_hairpin_data_sz[0x5];
@@ -2364,7 +2366,10 @@ struct mlx5_ifc_qpc_bits {
2364 2366
2365 u8 dc_access_key[0x40]; 2367 u8 dc_access_key[0x40];
2366 2368
2367 u8 reserved_at_680[0xc0]; 2369 u8 reserved_at_680[0x3];
2370 u8 dbr_umem_valid[0x1];
2371
2372 u8 reserved_at_684[0xbc];
2368}; 2373};
2369 2374
2370struct mlx5_ifc_roce_addr_layout_bits { 2375struct mlx5_ifc_roce_addr_layout_bits {
@@ -2464,7 +2469,7 @@ struct mlx5_ifc_xrc_srqc_bits {
2464 2469
2465 u8 wq_signature[0x1]; 2470 u8 wq_signature[0x1];
2466 u8 cont_srq[0x1]; 2471 u8 cont_srq[0x1];
2467 u8 reserved_at_22[0x1]; 2472 u8 dbr_umem_valid[0x1];
2468 u8 rlky[0x1]; 2473 u8 rlky[0x1];
2469 u8 basic_cyclic_rcv_wqe[0x1]; 2474 u8 basic_cyclic_rcv_wqe[0x1];
2470 u8 log_rq_stride[0x3]; 2475 u8 log_rq_stride[0x3];
@@ -3128,7 +3133,9 @@ enum {
3128 3133
3129struct mlx5_ifc_cqc_bits { 3134struct mlx5_ifc_cqc_bits {
3130 u8 status[0x4]; 3135 u8 status[0x4];
3131 u8 reserved_at_4[0x4]; 3136 u8 reserved_at_4[0x2];
3137 u8 dbr_umem_valid[0x1];
3138 u8 reserved_at_7[0x1];
3132 u8 cqe_sz[0x3]; 3139 u8 cqe_sz[0x3];
3133 u8 cc[0x1]; 3140 u8 cc[0x1];
3134 u8 reserved_at_c[0x1]; 3141 u8 reserved_at_c[0x1];
@@ -5314,7 +5321,7 @@ struct mlx5_ifc_modify_tis_bitmask_bits {
5314 5321
5315struct mlx5_ifc_modify_tis_in_bits { 5322struct mlx5_ifc_modify_tis_in_bits {
5316 u8 opcode[0x10]; 5323 u8 opcode[0x10];
5317 u8 reserved_at_10[0x10]; 5324 u8 uid[0x10];
5318 5325
5319 u8 reserved_at_20[0x10]; 5326 u8 reserved_at_20[0x10];
5320 u8 op_mod[0x10]; 5327 u8 op_mod[0x10];
@@ -5353,7 +5360,7 @@ struct mlx5_ifc_modify_tir_out_bits {
5353 5360
5354struct mlx5_ifc_modify_tir_in_bits { 5361struct mlx5_ifc_modify_tir_in_bits {
5355 u8 opcode[0x10]; 5362 u8 opcode[0x10];
5356 u8 reserved_at_10[0x10]; 5363 u8 uid[0x10];
5357 5364
5358 u8 reserved_at_20[0x10]; 5365 u8 reserved_at_20[0x10];
5359 u8 op_mod[0x10]; 5366 u8 op_mod[0x10];
@@ -5454,7 +5461,7 @@ struct mlx5_ifc_rqt_bitmask_bits {
5454 5461
5455struct mlx5_ifc_modify_rqt_in_bits { 5462struct mlx5_ifc_modify_rqt_in_bits {
5456 u8 opcode[0x10]; 5463 u8 opcode[0x10];
5457 u8 reserved_at_10[0x10]; 5464 u8 uid[0x10];
5458 5465
5459 u8 reserved_at_20[0x10]; 5466 u8 reserved_at_20[0x10];
5460 u8 op_mod[0x10]; 5467 u8 op_mod[0x10];
@@ -5641,7 +5648,10 @@ struct mlx5_ifc_modify_cq_in_bits {
5641 5648
5642 struct mlx5_ifc_cqc_bits cq_context; 5649 struct mlx5_ifc_cqc_bits cq_context;
5643 5650
5644 u8 reserved_at_280[0x600]; 5651 u8 reserved_at_280[0x40];
5652
5653 u8 cq_umem_valid[0x1];
5654 u8 reserved_at_2c1[0x5bf];
5645 5655
5646 u8 pas[0][0x40]; 5656 u8 pas[0][0x40];
5647}; 5657};
@@ -5962,7 +5972,7 @@ struct mlx5_ifc_detach_from_mcg_out_bits {
5962 5972
5963struct mlx5_ifc_detach_from_mcg_in_bits { 5973struct mlx5_ifc_detach_from_mcg_in_bits {
5964 u8 opcode[0x10]; 5974 u8 opcode[0x10];
5965 u8 reserved_at_10[0x10]; 5975 u8 uid[0x10];
5966 5976
5967 u8 reserved_at_20[0x10]; 5977 u8 reserved_at_20[0x10];
5968 u8 op_mod[0x10]; 5978 u8 op_mod[0x10];
@@ -6030,7 +6040,7 @@ struct mlx5_ifc_destroy_tis_out_bits {
6030 6040
6031struct mlx5_ifc_destroy_tis_in_bits { 6041struct mlx5_ifc_destroy_tis_in_bits {
6032 u8 opcode[0x10]; 6042 u8 opcode[0x10];
6033 u8 reserved_at_10[0x10]; 6043 u8 uid[0x10];
6034 6044
6035 u8 reserved_at_20[0x10]; 6045 u8 reserved_at_20[0x10];
6036 u8 op_mod[0x10]; 6046 u8 op_mod[0x10];
@@ -6052,7 +6062,7 @@ struct mlx5_ifc_destroy_tir_out_bits {
6052 6062
6053struct mlx5_ifc_destroy_tir_in_bits { 6063struct mlx5_ifc_destroy_tir_in_bits {
6054 u8 opcode[0x10]; 6064 u8 opcode[0x10];
6055 u8 reserved_at_10[0x10]; 6065 u8 uid[0x10];
6056 6066
6057 u8 reserved_at_20[0x10]; 6067 u8 reserved_at_20[0x10];
6058 u8 op_mod[0x10]; 6068 u8 op_mod[0x10];
@@ -6142,7 +6152,7 @@ struct mlx5_ifc_destroy_rqt_out_bits {
6142 6152
6143struct mlx5_ifc_destroy_rqt_in_bits { 6153struct mlx5_ifc_destroy_rqt_in_bits {
6144 u8 opcode[0x10]; 6154 u8 opcode[0x10];
6145 u8 reserved_at_10[0x10]; 6155 u8 uid[0x10];
6146 6156
6147 u8 reserved_at_20[0x10]; 6157 u8 reserved_at_20[0x10];
6148 u8 op_mod[0x10]; 6158 u8 op_mod[0x10];
@@ -6507,7 +6517,7 @@ struct mlx5_ifc_dealloc_xrcd_out_bits {
6507 6517
6508struct mlx5_ifc_dealloc_xrcd_in_bits { 6518struct mlx5_ifc_dealloc_xrcd_in_bits {
6509 u8 opcode[0x10]; 6519 u8 opcode[0x10];
6510 u8 reserved_at_10[0x10]; 6520 u8 uid[0x10];
6511 6521
6512 u8 reserved_at_20[0x10]; 6522 u8 reserved_at_20[0x10];
6513 u8 op_mod[0x10]; 6523 u8 op_mod[0x10];
@@ -6595,7 +6605,7 @@ struct mlx5_ifc_dealloc_pd_out_bits {
6595 6605
6596struct mlx5_ifc_dealloc_pd_in_bits { 6606struct mlx5_ifc_dealloc_pd_in_bits {
6597 u8 opcode[0x10]; 6607 u8 opcode[0x10];
6598 u8 reserved_at_10[0x10]; 6608 u8 uid[0x10];
6599 6609
6600 u8 reserved_at_20[0x10]; 6610 u8 reserved_at_20[0x10];
6601 u8 op_mod[0x10]; 6611 u8 op_mod[0x10];
@@ -6674,7 +6684,9 @@ struct mlx5_ifc_create_xrc_srq_in_bits {
6674 6684
6675 struct mlx5_ifc_xrc_srqc_bits xrc_srq_context_entry; 6685 struct mlx5_ifc_xrc_srqc_bits xrc_srq_context_entry;
6676 6686
6677 u8 reserved_at_280[0x600]; 6687 u8 reserved_at_280[0x40];
6688 u8 xrc_srq_umem_valid[0x1];
6689 u8 reserved_at_2c1[0x5bf];
6678 6690
6679 u8 pas[0][0x40]; 6691 u8 pas[0][0x40];
6680}; 6692};
@@ -6693,7 +6705,7 @@ struct mlx5_ifc_create_tis_out_bits {
6693 6705
6694struct mlx5_ifc_create_tis_in_bits { 6706struct mlx5_ifc_create_tis_in_bits {
6695 u8 opcode[0x10]; 6707 u8 opcode[0x10];
6696 u8 reserved_at_10[0x10]; 6708 u8 uid[0x10];
6697 6709
6698 u8 reserved_at_20[0x10]; 6710 u8 reserved_at_20[0x10];
6699 u8 op_mod[0x10]; 6711 u8 op_mod[0x10];
@@ -6717,7 +6729,7 @@ struct mlx5_ifc_create_tir_out_bits {
6717 6729
6718struct mlx5_ifc_create_tir_in_bits { 6730struct mlx5_ifc_create_tir_in_bits {
6719 u8 opcode[0x10]; 6731 u8 opcode[0x10];
6720 u8 reserved_at_10[0x10]; 6732 u8 uid[0x10];
6721 6733
6722 u8 reserved_at_20[0x10]; 6734 u8 reserved_at_20[0x10];
6723 u8 op_mod[0x10]; 6735 u8 op_mod[0x10];
@@ -6823,7 +6835,7 @@ struct mlx5_ifc_create_rqt_out_bits {
6823 6835
6824struct mlx5_ifc_create_rqt_in_bits { 6836struct mlx5_ifc_create_rqt_in_bits {
6825 u8 opcode[0x10]; 6837 u8 opcode[0x10];
6826 u8 reserved_at_10[0x10]; 6838 u8 uid[0x10];
6827 6839
6828 u8 reserved_at_20[0x10]; 6840 u8 reserved_at_20[0x10];
6829 u8 op_mod[0x10]; 6841 u8 op_mod[0x10];
@@ -6908,7 +6920,10 @@ struct mlx5_ifc_create_qp_in_bits {
6908 6920
6909 struct mlx5_ifc_qpc_bits qpc; 6921 struct mlx5_ifc_qpc_bits qpc;
6910 6922
6911 u8 reserved_at_800[0x80]; 6923 u8 reserved_at_800[0x60];
6924
6925 u8 wq_umem_valid[0x1];
6926 u8 reserved_at_861[0x1f];
6912 6927
6913 u8 pas[0][0x40]; 6928 u8 pas[0][0x40];
6914}; 6929};
@@ -6970,7 +6985,8 @@ struct mlx5_ifc_create_mkey_in_bits {
6970 u8 reserved_at_40[0x20]; 6985 u8 reserved_at_40[0x20];
6971 6986
6972 u8 pg_access[0x1]; 6987 u8 pg_access[0x1];
6973 u8 reserved_at_61[0x1f]; 6988 u8 mkey_umem_valid[0x1];
6989 u8 reserved_at_62[0x1e];
6974 6990
6975 struct mlx5_ifc_mkc_bits memory_key_mkey_entry; 6991 struct mlx5_ifc_mkc_bits memory_key_mkey_entry;
6976 6992
@@ -7173,7 +7189,10 @@ struct mlx5_ifc_create_cq_in_bits {
7173 7189
7174 struct mlx5_ifc_cqc_bits cq_context; 7190 struct mlx5_ifc_cqc_bits cq_context;
7175 7191
7176 u8 reserved_at_280[0x600]; 7192 u8 reserved_at_280[0x60];
7193
7194 u8 cq_umem_valid[0x1];
7195 u8 reserved_at_2e1[0x59f];
7177 7196
7178 u8 pas[0][0x40]; 7197 u8 pas[0][0x40];
7179}; 7198};
@@ -7221,7 +7240,7 @@ struct mlx5_ifc_attach_to_mcg_out_bits {
7221 7240
7222struct mlx5_ifc_attach_to_mcg_in_bits { 7241struct mlx5_ifc_attach_to_mcg_in_bits {
7223 u8 opcode[0x10]; 7242 u8 opcode[0x10];
7224 u8 reserved_at_10[0x10]; 7243 u8 uid[0x10];
7225 7244
7226 u8 reserved_at_20[0x10]; 7245 u8 reserved_at_20[0x10];
7227 u8 op_mod[0x10]; 7246 u8 op_mod[0x10];
@@ -7348,7 +7367,7 @@ struct mlx5_ifc_alloc_xrcd_out_bits {
7348 7367
7349struct mlx5_ifc_alloc_xrcd_in_bits { 7368struct mlx5_ifc_alloc_xrcd_in_bits {
7350 u8 opcode[0x10]; 7369 u8 opcode[0x10];
7351 u8 reserved_at_10[0x10]; 7370 u8 uid[0x10];
7352 7371
7353 u8 reserved_at_20[0x10]; 7372 u8 reserved_at_20[0x10];
7354 u8 op_mod[0x10]; 7373 u8 op_mod[0x10];
@@ -7436,7 +7455,7 @@ struct mlx5_ifc_alloc_pd_out_bits {
7436 7455
7437struct mlx5_ifc_alloc_pd_in_bits { 7456struct mlx5_ifc_alloc_pd_in_bits {
7438 u8 opcode[0x10]; 7457 u8 opcode[0x10];
7439 u8 reserved_at_10[0x10]; 7458 u8 uid[0x10];
7440 7459
7441 u8 reserved_at_20[0x10]; 7460 u8 reserved_at_20[0x10];
7442 u8 op_mod[0x10]; 7461 u8 op_mod[0x10];