aboutsummaryrefslogtreecommitdiffstats
path: root/include/uapi
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2019-03-09 18:53:03 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2019-03-09 18:53:03 -0500
commita50243b1ddcdd766d0d17fbfeeb1a22e62fdc461 (patch)
tree3dbf847105558eaac3658a46c4934df503c866a2 /include/uapi
parent2901752c14b8e1b7dd898d2e5245c93e531aa624 (diff)
parentfca22e7e595f1799cfbfdfa13e16d48ece0d136c (diff)
Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma
Pull rdma updates from Jason Gunthorpe: "This has been a slightly more active cycle than normal with ongoing core changes and quite a lot of collected driver updates. - Various driver fixes for bnxt_re, cxgb4, hns, mlx5, pvrdma, rxe - A new data transfer mode for HFI1 giving higher performance - Significant functional and bug fix update to the mlx5 On-Demand-Paging MR feature - A chip hang reset recovery system for hns - Change mm->pinned_vm to an atomic64 - Update bnxt_re to support a new 57500 chip - A sane netlink 'rdma link add' method for creating rxe devices and fixing the various unregistration race conditions in rxe's unregister flow - Allow lookup up objects by an ID over netlink - Various reworking of the core to driver interface: - drivers should not assume umem SGLs are in PAGE_SIZE chunks - ucontext is accessed via udata not other means - start to make the core code responsible for object memory allocation - drivers should convert struct device to struct ib_device via a helper - drivers have more tools to avoid use after unregister problems" * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma: (280 commits) net/mlx5: ODP support for XRC transport is not enabled by default in FW IB/hfi1: Close race condition on user context disable and close RDMA/umem: Revert broken 'off by one' fix RDMA/umem: minor bug fix in error handling path RDMA/hns: Use GFP_ATOMIC in hns_roce_v2_modify_qp cxgb4: kfree mhp after the debug print IB/rdmavt: Fix concurrency panics in QP post_send and modify to error IB/rdmavt: Fix loopback send with invalidate ordering IB/iser: Fix dma_nents type definition IB/mlx5: Set correct write permissions for implicit ODP MR bnxt_re: Clean cq for kernel consumers only RDMA/uverbs: Don't do double free of allocated PD RDMA: Handle ucontext allocations by IB/core RDMA/core: Fix a WARN() message bnxt_re: fix the regression due to changes in alloc_pbl IB/mlx4: Increase the timeout for CM cache IB/core: Abort page fault handler silently during owning process exit IB/mlx5: Validate correct PD before prefetch MR IB/mlx5: Protect against prefetch of invalid MR RDMA/uverbs: Store PR pointer before it is overwritten ...
Diffstat (limited to 'include/uapi')
-rw-r--r--include/uapi/rdma/bnxt_re-abi.h11
-rw-r--r--include/uapi/rdma/ib_user_verbs.h2
-rw-r--r--include/uapi/rdma/mlx5_user_ioctl_cmds.h18
-rw-r--r--include/uapi/rdma/mlx5_user_ioctl_verbs.h5
-rw-r--r--include/uapi/rdma/rdma_netlink.h74
-rw-r--r--include/uapi/rdma/rdma_user_cm.h4
-rw-r--r--include/uapi/rdma/rdma_user_rxe.h3
7 files changed, 99 insertions, 18 deletions
diff --git a/include/uapi/rdma/bnxt_re-abi.h b/include/uapi/rdma/bnxt_re-abi.h
index a7a6111e50c7..dc52e3cf574c 100644
--- a/include/uapi/rdma/bnxt_re-abi.h
+++ b/include/uapi/rdma/bnxt_re-abi.h
@@ -44,6 +44,14 @@
44 44
45#define BNXT_RE_ABI_VERSION 1 45#define BNXT_RE_ABI_VERSION 1
46 46
47#define BNXT_RE_CHIP_ID0_CHIP_NUM_SFT 0x00
48#define BNXT_RE_CHIP_ID0_CHIP_REV_SFT 0x10
49#define BNXT_RE_CHIP_ID0_CHIP_MET_SFT 0x18
50
51enum {
52 BNXT_RE_UCNTX_CMASK_HAVE_CCTX = 0x1ULL
53};
54
47struct bnxt_re_uctx_resp { 55struct bnxt_re_uctx_resp {
48 __u32 dev_id; 56 __u32 dev_id;
49 __u32 max_qp; 57 __u32 max_qp;
@@ -51,6 +59,9 @@ struct bnxt_re_uctx_resp {
51 __u32 cqe_sz; 59 __u32 cqe_sz;
52 __u32 max_cqd; 60 __u32 max_cqd;
53 __u32 rsvd; 61 __u32 rsvd;
62 __aligned_u64 comp_mask;
63 __u32 chip_id0;
64 __u32 chip_id1;
54}; 65};
55 66
56/* 67/*
diff --git a/include/uapi/rdma/ib_user_verbs.h b/include/uapi/rdma/ib_user_verbs.h
index 480d9a60b68e..0474c7400268 100644
--- a/include/uapi/rdma/ib_user_verbs.h
+++ b/include/uapi/rdma/ib_user_verbs.h
@@ -270,6 +270,8 @@ struct ib_uverbs_ex_query_device_resp {
270 struct ib_uverbs_tm_caps tm_caps; 270 struct ib_uverbs_tm_caps tm_caps;
271 struct ib_uverbs_cq_moderation_caps cq_moderation_caps; 271 struct ib_uverbs_cq_moderation_caps cq_moderation_caps;
272 __aligned_u64 max_dm_size; 272 __aligned_u64 max_dm_size;
273 __u32 xrc_odp_caps;
274 __u32 reserved;
273}; 275};
274 276
275struct ib_uverbs_query_port { 277struct ib_uverbs_query_port {
diff --git a/include/uapi/rdma/mlx5_user_ioctl_cmds.h b/include/uapi/rdma/mlx5_user_ioctl_cmds.h
index b8d121d457f1..8149d224030b 100644
--- a/include/uapi/rdma/mlx5_user_ioctl_cmds.h
+++ b/include/uapi/rdma/mlx5_user_ioctl_cmds.h
@@ -84,6 +84,14 @@ enum mlx5_ib_devx_obj_query_attrs {
84 MLX5_IB_ATTR_DEVX_OBJ_QUERY_CMD_OUT, 84 MLX5_IB_ATTR_DEVX_OBJ_QUERY_CMD_OUT,
85}; 85};
86 86
87enum mlx5_ib_devx_obj_query_async_attrs {
88 MLX5_IB_ATTR_DEVX_OBJ_QUERY_ASYNC_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
89 MLX5_IB_ATTR_DEVX_OBJ_QUERY_ASYNC_CMD_IN,
90 MLX5_IB_ATTR_DEVX_OBJ_QUERY_ASYNC_FD,
91 MLX5_IB_ATTR_DEVX_OBJ_QUERY_ASYNC_WR_ID,
92 MLX5_IB_ATTR_DEVX_OBJ_QUERY_ASYNC_OUT_LEN,
93};
94
87enum mlx5_ib_devx_query_eqn_attrs { 95enum mlx5_ib_devx_query_eqn_attrs {
88 MLX5_IB_ATTR_DEVX_QUERY_EQN_USER_VEC = (1U << UVERBS_ID_NS_SHIFT), 96 MLX5_IB_ATTR_DEVX_QUERY_EQN_USER_VEC = (1U << UVERBS_ID_NS_SHIFT),
89 MLX5_IB_ATTR_DEVX_QUERY_EQN_DEV_EQN, 97 MLX5_IB_ATTR_DEVX_QUERY_EQN_DEV_EQN,
@@ -94,6 +102,7 @@ enum mlx5_ib_devx_obj_methods {
94 MLX5_IB_METHOD_DEVX_OBJ_DESTROY, 102 MLX5_IB_METHOD_DEVX_OBJ_DESTROY,
95 MLX5_IB_METHOD_DEVX_OBJ_MODIFY, 103 MLX5_IB_METHOD_DEVX_OBJ_MODIFY,
96 MLX5_IB_METHOD_DEVX_OBJ_QUERY, 104 MLX5_IB_METHOD_DEVX_OBJ_QUERY,
105 MLX5_IB_METHOD_DEVX_OBJ_ASYNC_QUERY,
97}; 106};
98 107
99enum mlx5_ib_devx_umem_reg_attrs { 108enum mlx5_ib_devx_umem_reg_attrs {
@@ -113,11 +122,20 @@ enum mlx5_ib_devx_umem_methods {
113 MLX5_IB_METHOD_DEVX_UMEM_DEREG, 122 MLX5_IB_METHOD_DEVX_UMEM_DEREG,
114}; 123};
115 124
125enum mlx5_ib_devx_async_cmd_fd_alloc_attrs {
126 MLX5_IB_ATTR_DEVX_ASYNC_CMD_FD_ALLOC_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
127};
128
129enum mlx5_ib_devx_async_cmd_fd_methods {
130 MLX5_IB_METHOD_DEVX_ASYNC_CMD_FD_ALLOC = (1U << UVERBS_ID_NS_SHIFT),
131};
132
116enum mlx5_ib_objects { 133enum mlx5_ib_objects {
117 MLX5_IB_OBJECT_DEVX = (1U << UVERBS_ID_NS_SHIFT), 134 MLX5_IB_OBJECT_DEVX = (1U << UVERBS_ID_NS_SHIFT),
118 MLX5_IB_OBJECT_DEVX_OBJ, 135 MLX5_IB_OBJECT_DEVX_OBJ,
119 MLX5_IB_OBJECT_DEVX_UMEM, 136 MLX5_IB_OBJECT_DEVX_UMEM,
120 MLX5_IB_OBJECT_FLOW_MATCHER, 137 MLX5_IB_OBJECT_FLOW_MATCHER,
138 MLX5_IB_OBJECT_DEVX_ASYNC_CMD_FD,
121}; 139};
122 140
123enum mlx5_ib_flow_matcher_create_attrs { 141enum mlx5_ib_flow_matcher_create_attrs {
diff --git a/include/uapi/rdma/mlx5_user_ioctl_verbs.h b/include/uapi/rdma/mlx5_user_ioctl_verbs.h
index 4ef62c0e8452..4a701033b93f 100644
--- a/include/uapi/rdma/mlx5_user_ioctl_verbs.h
+++ b/include/uapi/rdma/mlx5_user_ioctl_verbs.h
@@ -51,5 +51,10 @@ enum mlx5_ib_uapi_flow_action_packet_reformat_type {
51 MLX5_IB_UAPI_FLOW_ACTION_PACKET_REFORMAT_TYPE_L2_TO_L3_TUNNEL = 0x3, 51 MLX5_IB_UAPI_FLOW_ACTION_PACKET_REFORMAT_TYPE_L2_TO_L3_TUNNEL = 0x3,
52}; 52};
53 53
54struct mlx5_ib_uapi_devx_async_cmd_hdr {
55 __aligned_u64 wr_id;
56 __u8 out_data[];
57};
58
54#endif 59#endif
55 60
diff --git a/include/uapi/rdma/rdma_netlink.h b/include/uapi/rdma/rdma_netlink.h
index 2e18b77a817f..5cc592728071 100644
--- a/include/uapi/rdma/rdma_netlink.h
+++ b/include/uapi/rdma/rdma_netlink.h
@@ -5,8 +5,7 @@
5#include <linux/types.h> 5#include <linux/types.h>
6 6
7enum { 7enum {
8 RDMA_NL_RDMA_CM = 1, 8 RDMA_NL_IWCM = 2,
9 RDMA_NL_IWCM,
10 RDMA_NL_RSVD, 9 RDMA_NL_RSVD,
11 RDMA_NL_LS, /* RDMA Local Services */ 10 RDMA_NL_LS, /* RDMA Local Services */
12 RDMA_NL_NLDEV, /* RDMA device interface */ 11 RDMA_NL_NLDEV, /* RDMA device interface */
@@ -14,8 +13,7 @@ enum {
14}; 13};
15 14
16enum { 15enum {
17 RDMA_NL_GROUP_CM = 1, 16 RDMA_NL_GROUP_IWPM = 2,
18 RDMA_NL_GROUP_IWPM,
19 RDMA_NL_GROUP_LS, 17 RDMA_NL_GROUP_LS,
20 RDMA_NL_NUM_GROUPS 18 RDMA_NL_NUM_GROUPS
21}; 19};
@@ -24,15 +22,17 @@ enum {
24#define RDMA_NL_GET_OP(type) (type & ((1 << 10) - 1)) 22#define RDMA_NL_GET_OP(type) (type & ((1 << 10) - 1))
25#define RDMA_NL_GET_TYPE(client, op) ((client << 10) + op) 23#define RDMA_NL_GET_TYPE(client, op) ((client << 10) + op)
26 24
27enum { 25/* The minimum version that the iwpm kernel supports */
28 RDMA_NL_RDMA_CM_ID_STATS = 0, 26#define IWPM_UABI_VERSION_MIN 3
29 RDMA_NL_RDMA_CM_NUM_OPS 27
30}; 28/* The latest version that the iwpm kernel supports */
29#define IWPM_UABI_VERSION 4
31 30
31/* iwarp port mapper message flags */
32enum { 32enum {
33 RDMA_NL_RDMA_CM_ATTR_SRC_ADDR = 1, 33
34 RDMA_NL_RDMA_CM_ATTR_DST_ADDR, 34 /* Do not map the port for this IWPM request */
35 RDMA_NL_RDMA_CM_NUM_ATTR, 35 IWPM_FLAGS_NO_PORT_MAP = (1 << 0),
36}; 36};
37 37
38/* iwarp port mapper op-codes */ 38/* iwarp port mapper op-codes */
@@ -45,6 +45,7 @@ enum {
45 RDMA_NL_IWPM_HANDLE_ERR, 45 RDMA_NL_IWPM_HANDLE_ERR,
46 RDMA_NL_IWPM_MAPINFO, 46 RDMA_NL_IWPM_MAPINFO,
47 RDMA_NL_IWPM_MAPINFO_NUM, 47 RDMA_NL_IWPM_MAPINFO_NUM,
48 RDMA_NL_IWPM_HELLO,
48 RDMA_NL_IWPM_NUM_OPS 49 RDMA_NL_IWPM_NUM_OPS
49}; 50};
50 51
@@ -83,20 +84,38 @@ enum {
83 IWPM_NLA_MANAGE_MAPPING_UNSPEC = 0, 84 IWPM_NLA_MANAGE_MAPPING_UNSPEC = 0,
84 IWPM_NLA_MANAGE_MAPPING_SEQ, 85 IWPM_NLA_MANAGE_MAPPING_SEQ,
85 IWPM_NLA_MANAGE_ADDR, 86 IWPM_NLA_MANAGE_ADDR,
86 IWPM_NLA_MANAGE_MAPPED_LOC_ADDR, 87 IWPM_NLA_MANAGE_FLAGS,
88 IWPM_NLA_MANAGE_MAPPING_MAX
89};
90
91enum {
92 IWPM_NLA_RMANAGE_MAPPING_UNSPEC = 0,
93 IWPM_NLA_RMANAGE_MAPPING_SEQ,
94 IWPM_NLA_RMANAGE_ADDR,
95 IWPM_NLA_RMANAGE_MAPPED_LOC_ADDR,
96 /* The following maintains bisectability of rdma-core */
97 IWPM_NLA_MANAGE_MAPPED_LOC_ADDR = IWPM_NLA_RMANAGE_MAPPED_LOC_ADDR,
87 IWPM_NLA_RMANAGE_MAPPING_ERR, 98 IWPM_NLA_RMANAGE_MAPPING_ERR,
88 IWPM_NLA_RMANAGE_MAPPING_MAX 99 IWPM_NLA_RMANAGE_MAPPING_MAX
89}; 100};
90 101
91#define IWPM_NLA_MANAGE_MAPPING_MAX 3
92#define IWPM_NLA_QUERY_MAPPING_MAX 4
93#define IWPM_NLA_MAPINFO_SEND_MAX 3 102#define IWPM_NLA_MAPINFO_SEND_MAX 3
103#define IWPM_NLA_REMOVE_MAPPING_MAX 3
94 104
95enum { 105enum {
96 IWPM_NLA_QUERY_MAPPING_UNSPEC = 0, 106 IWPM_NLA_QUERY_MAPPING_UNSPEC = 0,
97 IWPM_NLA_QUERY_MAPPING_SEQ, 107 IWPM_NLA_QUERY_MAPPING_SEQ,
98 IWPM_NLA_QUERY_LOCAL_ADDR, 108 IWPM_NLA_QUERY_LOCAL_ADDR,
99 IWPM_NLA_QUERY_REMOTE_ADDR, 109 IWPM_NLA_QUERY_REMOTE_ADDR,
110 IWPM_NLA_QUERY_FLAGS,
111 IWPM_NLA_QUERY_MAPPING_MAX,
112};
113
114enum {
115 IWPM_NLA_RQUERY_MAPPING_UNSPEC = 0,
116 IWPM_NLA_RQUERY_MAPPING_SEQ,
117 IWPM_NLA_RQUERY_LOCAL_ADDR,
118 IWPM_NLA_RQUERY_REMOTE_ADDR,
100 IWPM_NLA_RQUERY_MAPPED_LOC_ADDR, 119 IWPM_NLA_RQUERY_MAPPED_LOC_ADDR,
101 IWPM_NLA_RQUERY_MAPPED_REM_ADDR, 120 IWPM_NLA_RQUERY_MAPPED_REM_ADDR,
102 IWPM_NLA_RQUERY_MAPPING_ERR, 121 IWPM_NLA_RQUERY_MAPPING_ERR,
@@ -114,6 +133,7 @@ enum {
114 IWPM_NLA_MAPINFO_UNSPEC = 0, 133 IWPM_NLA_MAPINFO_UNSPEC = 0,
115 IWPM_NLA_MAPINFO_LOCAL_ADDR, 134 IWPM_NLA_MAPINFO_LOCAL_ADDR,
116 IWPM_NLA_MAPINFO_MAPPED_ADDR, 135 IWPM_NLA_MAPINFO_MAPPED_ADDR,
136 IWPM_NLA_MAPINFO_FLAGS,
117 IWPM_NLA_MAPINFO_MAX 137 IWPM_NLA_MAPINFO_MAX
118}; 138};
119 139
@@ -132,6 +152,12 @@ enum {
132 IWPM_NLA_ERR_MAX 152 IWPM_NLA_ERR_MAX
133}; 153};
134 154
155enum {
156 IWPM_NLA_HELLO_UNSPEC = 0,
157 IWPM_NLA_HELLO_ABI_VERSION,
158 IWPM_NLA_HELLO_MAX
159};
160
135/* 161/*
136 * Local service operations: 162 * Local service operations:
137 * RESOLVE - The client requests the local service to resolve a path. 163 * RESOLVE - The client requests the local service to resolve a path.
@@ -229,9 +255,11 @@ enum rdma_nldev_command {
229 RDMA_NLDEV_CMD_GET, /* can dump */ 255 RDMA_NLDEV_CMD_GET, /* can dump */
230 RDMA_NLDEV_CMD_SET, 256 RDMA_NLDEV_CMD_SET,
231 257
232 /* 3 - 4 are free to use */ 258 RDMA_NLDEV_CMD_NEWLINK,
233 259
234 RDMA_NLDEV_CMD_PORT_GET = 5, /* can dump */ 260 RDMA_NLDEV_CMD_DELLINK,
261
262 RDMA_NLDEV_CMD_PORT_GET, /* can dump */
235 263
236 /* 6 - 8 are free to use */ 264 /* 6 - 8 are free to use */
237 265
@@ -431,6 +459,20 @@ enum rdma_nldev_attr {
431 RDMA_NLDEV_ATTR_DRIVER_U64, /* u64 */ 459 RDMA_NLDEV_ATTR_DRIVER_U64, /* u64 */
432 460
433 /* 461 /*
462 * Indexes to get/set secific entry,
463 * for QP use RDMA_NLDEV_ATTR_RES_LQPN
464 */
465 RDMA_NLDEV_ATTR_RES_PDN, /* u32 */
466 RDMA_NLDEV_ATTR_RES_CQN, /* u32 */
467 RDMA_NLDEV_ATTR_RES_MRN, /* u32 */
468 RDMA_NLDEV_ATTR_RES_CM_IDN, /* u32 */
469 RDMA_NLDEV_ATTR_RES_CTXN, /* u32 */
470 /*
471 * Identifies the rdma driver. eg: "rxe" or "siw"
472 */
473 RDMA_NLDEV_ATTR_LINK_TYPE, /* string */
474
475 /*
434 * Always the end 476 * Always the end
435 */ 477 */
436 RDMA_NLDEV_ATTR_MAX 478 RDMA_NLDEV_ATTR_MAX
diff --git a/include/uapi/rdma/rdma_user_cm.h b/include/uapi/rdma/rdma_user_cm.h
index 0d1e78ebad05..e42940a215a3 100644
--- a/include/uapi/rdma/rdma_user_cm.h
+++ b/include/uapi/rdma/rdma_user_cm.h
@@ -300,6 +300,10 @@ enum {
300 RDMA_OPTION_ID_TOS = 0, 300 RDMA_OPTION_ID_TOS = 0,
301 RDMA_OPTION_ID_REUSEADDR = 1, 301 RDMA_OPTION_ID_REUSEADDR = 1,
302 RDMA_OPTION_ID_AFONLY = 2, 302 RDMA_OPTION_ID_AFONLY = 2,
303 RDMA_OPTION_ID_ACK_TIMEOUT = 3
304};
305
306enum {
303 RDMA_OPTION_IB_PATH = 1 307 RDMA_OPTION_IB_PATH = 1
304}; 308};
305 309
diff --git a/include/uapi/rdma/rdma_user_rxe.h b/include/uapi/rdma/rdma_user_rxe.h
index 44ef6a3b7afc..aae2e696bb38 100644
--- a/include/uapi/rdma/rdma_user_rxe.h
+++ b/include/uapi/rdma/rdma_user_rxe.h
@@ -58,8 +58,7 @@ struct rxe_global_route {
58struct rxe_av { 58struct rxe_av {
59 __u8 port_num; 59 __u8 port_num;
60 __u8 network_type; 60 __u8 network_type;
61 __u16 reserved1; 61 __u8 dmac[6];
62 __u32 reserved2;
63 struct rxe_global_route grh; 62 struct rxe_global_route grh;
64 union { 63 union {
65 struct sockaddr_in _sockaddr_in; 64 struct sockaddr_in _sockaddr_in;