Skip to content

Commit bd37197

Browse files
author
Leon Romanovsky
committed
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 <[email protected]>
1 parent 774ea6e commit bd37197

File tree

1 file changed

+43
-24
lines changed

1 file changed

+43
-24
lines changed

include/linux/mlx5/mlx5_ifc.h

Lines changed: 43 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1290,7 +1290,9 @@ struct mlx5_ifc_wq_bits {
12901290
u8 reserved_at_118[0x3];
12911291
u8 log_wq_sz[0x5];
12921292

1293-
u8 reserved_at_120[0x3];
1293+
u8 dbr_umem_valid[0x1];
1294+
u8 wq_umem_valid[0x1];
1295+
u8 reserved_at_122[0x1];
12941296
u8 log_hairpin_num_packets[0x5];
12951297
u8 reserved_at_128[0x3];
12961298
u8 log_hairpin_data_sz[0x5];
@@ -2364,7 +2366,10 @@ struct mlx5_ifc_qpc_bits {
23642366

23652367
u8 dc_access_key[0x40];
23662368

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];
23682373
};
23692374

23702375
struct mlx5_ifc_roce_addr_layout_bits {
@@ -2464,7 +2469,7 @@ struct mlx5_ifc_xrc_srqc_bits {
24642469

24652470
u8 wq_signature[0x1];
24662471
u8 cont_srq[0x1];
2467-
u8 reserved_at_22[0x1];
2472+
u8 dbr_umem_valid[0x1];
24682473
u8 rlky[0x1];
24692474
u8 basic_cyclic_rcv_wqe[0x1];
24702475
u8 log_rq_stride[0x3];
@@ -3128,7 +3133,9 @@ enum {
31283133

31293134
struct mlx5_ifc_cqc_bits {
31303135
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];
31323139
u8 cqe_sz[0x3];
31333140
u8 cc[0x1];
31343141
u8 reserved_at_c[0x1];
@@ -5314,7 +5321,7 @@ struct mlx5_ifc_modify_tis_bitmask_bits {
53145321

53155322
struct mlx5_ifc_modify_tis_in_bits {
53165323
u8 opcode[0x10];
5317-
u8 reserved_at_10[0x10];
5324+
u8 uid[0x10];
53185325

53195326
u8 reserved_at_20[0x10];
53205327
u8 op_mod[0x10];
@@ -5353,7 +5360,7 @@ struct mlx5_ifc_modify_tir_out_bits {
53535360

53545361
struct mlx5_ifc_modify_tir_in_bits {
53555362
u8 opcode[0x10];
5356-
u8 reserved_at_10[0x10];
5363+
u8 uid[0x10];
53575364

53585365
u8 reserved_at_20[0x10];
53595366
u8 op_mod[0x10];
@@ -5454,7 +5461,7 @@ struct mlx5_ifc_rqt_bitmask_bits {
54545461

54555462
struct mlx5_ifc_modify_rqt_in_bits {
54565463
u8 opcode[0x10];
5457-
u8 reserved_at_10[0x10];
5464+
u8 uid[0x10];
54585465

54595466
u8 reserved_at_20[0x10];
54605467
u8 op_mod[0x10];
@@ -5641,7 +5648,10 @@ struct mlx5_ifc_modify_cq_in_bits {
56415648

56425649
struct mlx5_ifc_cqc_bits cq_context;
56435650

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];
56455655

56465656
u8 pas[0][0x40];
56475657
};
@@ -5962,7 +5972,7 @@ struct mlx5_ifc_detach_from_mcg_out_bits {
59625972

59635973
struct mlx5_ifc_detach_from_mcg_in_bits {
59645974
u8 opcode[0x10];
5965-
u8 reserved_at_10[0x10];
5975+
u8 uid[0x10];
59665976

59675977
u8 reserved_at_20[0x10];
59685978
u8 op_mod[0x10];
@@ -6030,7 +6040,7 @@ struct mlx5_ifc_destroy_tis_out_bits {
60306040

60316041
struct mlx5_ifc_destroy_tis_in_bits {
60326042
u8 opcode[0x10];
6033-
u8 reserved_at_10[0x10];
6043+
u8 uid[0x10];
60346044

60356045
u8 reserved_at_20[0x10];
60366046
u8 op_mod[0x10];
@@ -6052,7 +6062,7 @@ struct mlx5_ifc_destroy_tir_out_bits {
60526062

60536063
struct mlx5_ifc_destroy_tir_in_bits {
60546064
u8 opcode[0x10];
6055-
u8 reserved_at_10[0x10];
6065+
u8 uid[0x10];
60566066

60576067
u8 reserved_at_20[0x10];
60586068
u8 op_mod[0x10];
@@ -6142,7 +6152,7 @@ struct mlx5_ifc_destroy_rqt_out_bits {
61426152

61436153
struct mlx5_ifc_destroy_rqt_in_bits {
61446154
u8 opcode[0x10];
6145-
u8 reserved_at_10[0x10];
6155+
u8 uid[0x10];
61466156

61476157
u8 reserved_at_20[0x10];
61486158
u8 op_mod[0x10];
@@ -6507,7 +6517,7 @@ struct mlx5_ifc_dealloc_xrcd_out_bits {
65076517

65086518
struct mlx5_ifc_dealloc_xrcd_in_bits {
65096519
u8 opcode[0x10];
6510-
u8 reserved_at_10[0x10];
6520+
u8 uid[0x10];
65116521

65126522
u8 reserved_at_20[0x10];
65136523
u8 op_mod[0x10];
@@ -6595,7 +6605,7 @@ struct mlx5_ifc_dealloc_pd_out_bits {
65956605

65966606
struct mlx5_ifc_dealloc_pd_in_bits {
65976607
u8 opcode[0x10];
6598-
u8 reserved_at_10[0x10];
6608+
u8 uid[0x10];
65996609

66006610
u8 reserved_at_20[0x10];
66016611
u8 op_mod[0x10];
@@ -6674,7 +6684,9 @@ struct mlx5_ifc_create_xrc_srq_in_bits {
66746684

66756685
struct mlx5_ifc_xrc_srqc_bits xrc_srq_context_entry;
66766686

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];
66786690

66796691
u8 pas[0][0x40];
66806692
};
@@ -6693,7 +6705,7 @@ struct mlx5_ifc_create_tis_out_bits {
66936705

66946706
struct mlx5_ifc_create_tis_in_bits {
66956707
u8 opcode[0x10];
6696-
u8 reserved_at_10[0x10];
6708+
u8 uid[0x10];
66976709

66986710
u8 reserved_at_20[0x10];
66996711
u8 op_mod[0x10];
@@ -6717,7 +6729,7 @@ struct mlx5_ifc_create_tir_out_bits {
67176729

67186730
struct mlx5_ifc_create_tir_in_bits {
67196731
u8 opcode[0x10];
6720-
u8 reserved_at_10[0x10];
6732+
u8 uid[0x10];
67216733

67226734
u8 reserved_at_20[0x10];
67236735
u8 op_mod[0x10];
@@ -6823,7 +6835,7 @@ struct mlx5_ifc_create_rqt_out_bits {
68236835

68246836
struct mlx5_ifc_create_rqt_in_bits {
68256837
u8 opcode[0x10];
6826-
u8 reserved_at_10[0x10];
6838+
u8 uid[0x10];
68276839

68286840
u8 reserved_at_20[0x10];
68296841
u8 op_mod[0x10];
@@ -6908,7 +6920,10 @@ struct mlx5_ifc_create_qp_in_bits {
69086920

69096921
struct mlx5_ifc_qpc_bits qpc;
69106922

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];
69126927

69136928
u8 pas[0][0x40];
69146929
};
@@ -6970,7 +6985,8 @@ struct mlx5_ifc_create_mkey_in_bits {
69706985
u8 reserved_at_40[0x20];
69716986

69726987
u8 pg_access[0x1];
6973-
u8 reserved_at_61[0x1f];
6988+
u8 mkey_umem_valid[0x1];
6989+
u8 reserved_at_62[0x1e];
69746990

69756991
struct mlx5_ifc_mkc_bits memory_key_mkey_entry;
69766992

@@ -7173,7 +7189,10 @@ struct mlx5_ifc_create_cq_in_bits {
71737189

71747190
struct mlx5_ifc_cqc_bits cq_context;
71757191

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];
71777196

71787197
u8 pas[0][0x40];
71797198
};
@@ -7221,7 +7240,7 @@ struct mlx5_ifc_attach_to_mcg_out_bits {
72217240

72227241
struct mlx5_ifc_attach_to_mcg_in_bits {
72237242
u8 opcode[0x10];
7224-
u8 reserved_at_10[0x10];
7243+
u8 uid[0x10];
72257244

72267245
u8 reserved_at_20[0x10];
72277246
u8 op_mod[0x10];
@@ -7348,7 +7367,7 @@ struct mlx5_ifc_alloc_xrcd_out_bits {
73487367

73497368
struct mlx5_ifc_alloc_xrcd_in_bits {
73507369
u8 opcode[0x10];
7351-
u8 reserved_at_10[0x10];
7370+
u8 uid[0x10];
73527371

73537372
u8 reserved_at_20[0x10];
73547373
u8 op_mod[0x10];
@@ -7436,7 +7455,7 @@ struct mlx5_ifc_alloc_pd_out_bits {
74367455

74377456
struct mlx5_ifc_alloc_pd_in_bits {
74387457
u8 opcode[0x10];
7439-
u8 reserved_at_10[0x10];
7458+
u8 uid[0x10];
74407459

74417460
u8 reserved_at_20[0x10];
74427461
u8 op_mod[0x10];

0 commit comments

Comments
 (0)