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 ...
Showing the changes to include/uapi (7 of 264 files). Show all
Unified · Split
| @@ -44,6 +44,14 @@ · 43 unmodified lines | ||
| 44 | 44 | |
| 45 | 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 | + | |
| 51 | +enum { | |
| 52 | + BNXT_RE_UCNTX_CMASK_HAVE_CCTX = 0x1ULL | |
| 53 | +}; | |
| 54 | + | |
| 47 | 55 | struct bnxt_re_uctx_resp { |
| 48 | 56 | __u32 dev_id; |
| 49 | 57 | __u32 max_qp; |
| @@ -51,6 +59,9 @@ struct bnxt_re_uctx_resp { · 1 unmodified line | ||
| 51 | 59 | __u32 cqe_sz; |
| 52 | 60 | __u32 max_cqd; |
| 53 | 61 | __u32 rsvd; |
| 62 | + __aligned_u64 comp_mask; | |
| 63 | + __u32 chip_id0; | |
| 64 | + __u32 chip_id1; | |
| 54 | 65 | }; |
| 55 | 66 | |
| 56 | 67 | /* |
| @@ -270,6 +270,8 @@ struct ib_uverbs_ex_query_device_resp { · 269 unmodified lines | ||
| 270 | 270 | struct ib_uverbs_tm_caps tm_caps; |
| 271 | 271 | struct ib_uverbs_cq_moderation_caps cq_moderation_caps; |
| 272 | 272 | __aligned_u64 max_dm_size; |
| 273 | + __u32 xrc_odp_caps; | |
| 274 | + __u32 reserved; | |
| 273 | 275 | }; |
| 274 | 276 | |
| 275 | 277 | struct ib_uverbs_query_port { |
| @@ -84,6 +84,14 @@ enum mlx5_ib_devx_obj_query_attrs { · 83 unmodified lines | ||
| 84 | 84 | MLX5_IB_ATTR_DEVX_OBJ_QUERY_CMD_OUT, |
| 85 | 85 | }; |
| 86 | 86 | |
| 87 | +enum 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 | + | |
| 87 | 95 | enum mlx5_ib_devx_query_eqn_attrs { |
| 88 | 96 | MLX5_IB_ATTR_DEVX_QUERY_EQN_USER_VEC = (1U << UVERBS_ID_NS_SHIFT), |
| 89 | 97 | MLX5_IB_ATTR_DEVX_QUERY_EQN_DEV_EQN, |
| @@ -94,6 +102,7 @@ enum mlx5_ib_devx_obj_methods { · 4 unmodified lines | ||
| 94 | 102 | MLX5_IB_METHOD_DEVX_OBJ_DESTROY, |
| 95 | 103 | MLX5_IB_METHOD_DEVX_OBJ_MODIFY, |
| 96 | 104 | MLX5_IB_METHOD_DEVX_OBJ_QUERY, |
| 105 | + MLX5_IB_METHOD_DEVX_OBJ_ASYNC_QUERY, | |
| 97 | 106 | }; |
| 98 | 107 | |
| 99 | 108 | enum mlx5_ib_devx_umem_reg_attrs { |
| @@ -113,11 +122,20 @@ enum mlx5_ib_devx_umem_methods { · 13 unmodified lines | ||
| 113 | 122 | MLX5_IB_METHOD_DEVX_UMEM_DEREG, |
| 114 | 123 | }; |
| 115 | 124 | |
| 125 | +enum 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 | + | |
| 129 | +enum mlx5_ib_devx_async_cmd_fd_methods { | |
| 130 | + MLX5_IB_METHOD_DEVX_ASYNC_CMD_FD_ALLOC = (1U << UVERBS_ID_NS_SHIFT), | |
| 131 | +}; | |
| 132 | + | |
| 116 | 133 | enum mlx5_ib_objects { |
| 117 | 134 | MLX5_IB_OBJECT_DEVX = (1U << UVERBS_ID_NS_SHIFT), |
| 118 | 135 | MLX5_IB_OBJECT_DEVX_OBJ, |
| 119 | 136 | MLX5_IB_OBJECT_DEVX_UMEM, |
| 120 | 137 | MLX5_IB_OBJECT_FLOW_MATCHER, |
| 138 | + MLX5_IB_OBJECT_DEVX_ASYNC_CMD_FD, | |
| 121 | 139 | }; |
| 122 | 140 | |
| 123 | 141 | enum mlx5_ib_flow_matcher_create_attrs { |
| @@ -51,5 +51,10 @@ enum mlx5_ib_uapi_flow_action_packet_reformat_type { · 50 unmodified lines | ||
| 51 | 51 | MLX5_IB_UAPI_FLOW_ACTION_PACKET_REFORMAT_TYPE_L2_TO_L3_TUNNEL = 0x3, |
| 52 | 52 | }; |
| 53 | 53 | |
| 54 | +struct mlx5_ib_uapi_devx_async_cmd_hdr { | |
| 55 | + __aligned_u64 wr_id; | |
| 56 | + __u8 out_data[]; | |
| 57 | +}; | |
| 58 | + | |
| 54 | 59 | #endif |
| 55 | 60 | |
| @@ -5,8 +5,7 @@ · 4 unmodified lines | ||
| 5 | 5 | #include <linux/types.h> |
| 6 | 6 | |
| 7 | 7 | enum { |
| 8 | − RDMA_NL_RDMA_CM = 1, | |
| 9 | − RDMA_NL_IWCM, | |
| 8 | + RDMA_NL_IWCM = 2, | |
| 10 | 9 | RDMA_NL_RSVD, |
| 11 | 10 | RDMA_NL_LS, /* RDMA Local Services */ |
| 12 | 11 | RDMA_NL_NLDEV, /* RDMA device interface */ |
| @@ -14,8 +13,7 @@ enum { · 1 unmodified line | ||
| 14 | 13 | }; |
| 15 | 14 | |
| 16 | 15 | enum { |
| 17 | − RDMA_NL_GROUP_CM = 1, | |
| 18 | − RDMA_NL_GROUP_IWPM, | |
| 16 | + RDMA_NL_GROUP_IWPM = 2, | |
| 19 | 17 | RDMA_NL_GROUP_LS, |
| 20 | 18 | RDMA_NL_NUM_GROUPS |
| 21 | 19 | }; |
| @@ -24,15 +22,17 @@ enum { · 2 unmodified lines | ||
| 24 | 22 | #define RDMA_NL_GET_OP(type) (type & ((1 << 10) - 1)) |
| 25 | 23 | #define RDMA_NL_GET_TYPE(client, op) ((client << 10) + op) |
| 26 | 24 | |
| 27 | −enum { | |
| 28 | − RDMA_NL_RDMA_CM_ID_STATS = 0, | |
| 29 | − RDMA_NL_RDMA_CM_NUM_OPS | |
| 30 | −}; | |
| 25 | +/* The minimum version that the iwpm kernel supports */ | |
| 26 | +#define IWPM_UABI_VERSION_MIN 3 | |
| 27 | + | |
| 28 | +/* The latest version that the iwpm kernel supports */ | |
| 29 | +#define IWPM_UABI_VERSION 4 | |
| 31 | 30 | |
| 31 | +/* iwarp port mapper message flags */ | |
| 32 | 32 | enum { |
| 33 | − RDMA_NL_RDMA_CM_ATTR_SRC_ADDR = 1, | |
| 34 | − RDMA_NL_RDMA_CM_ATTR_DST_ADDR, | |
| 35 | − RDMA_NL_RDMA_CM_NUM_ATTR, | |
| 33 | + | |
| 34 | + /* Do not map the port for this IWPM request */ | |
| 35 | + IWPM_FLAGS_NO_PORT_MAP = (1 << 0), | |
| 36 | 36 | }; |
| 37 | 37 | |
| 38 | 38 | /* iwarp port mapper op-codes */ |
| @@ -45,6 +45,7 @@ enum { · 6 unmodified lines | ||
| 45 | 45 | RDMA_NL_IWPM_HANDLE_ERR, |
| 46 | 46 | RDMA_NL_IWPM_MAPINFO, |
| 47 | 47 | RDMA_NL_IWPM_MAPINFO_NUM, |
| 48 | + RDMA_NL_IWPM_HELLO, | |
| 48 | 49 | RDMA_NL_IWPM_NUM_OPS |
| 49 | 50 | }; |
| 50 | 51 | |
| @@ -83,20 +84,38 @@ enum { · 32 unmodified lines | ||
| 83 | 84 | IWPM_NLA_MANAGE_MAPPING_UNSPEC = 0, |
| 84 | 85 | IWPM_NLA_MANAGE_MAPPING_SEQ, |
| 85 | 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 | + | |
| 91 | +enum { | |
| 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 | 98 | IWPM_NLA_RMANAGE_MAPPING_ERR, |
| 88 | 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 | 102 | #define IWPM_NLA_MAPINFO_SEND_MAX 3 |
| 103 | +#define IWPM_NLA_REMOVE_MAPPING_MAX 3 | |
| 94 | 104 | |
| 95 | 105 | enum { |
| 96 | 106 | IWPM_NLA_QUERY_MAPPING_UNSPEC = 0, |
| 97 | 107 | IWPM_NLA_QUERY_MAPPING_SEQ, |
| 98 | 108 | IWPM_NLA_QUERY_LOCAL_ADDR, |
| 99 | 109 | IWPM_NLA_QUERY_REMOTE_ADDR, |
| 110 | + IWPM_NLA_QUERY_FLAGS, | |
| 111 | + IWPM_NLA_QUERY_MAPPING_MAX, | |
| 112 | +}; | |
| 113 | + | |
| 114 | +enum { | |
| 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 | 119 | IWPM_NLA_RQUERY_MAPPED_LOC_ADDR, |
| 101 | 120 | IWPM_NLA_RQUERY_MAPPED_REM_ADDR, |
| 102 | 121 | IWPM_NLA_RQUERY_MAPPING_ERR, |
| @@ -114,6 +133,7 @@ enum { · 11 unmodified lines | ||
| 114 | 133 | IWPM_NLA_MAPINFO_UNSPEC = 0, |
| 115 | 134 | IWPM_NLA_MAPINFO_LOCAL_ADDR, |
| 116 | 135 | IWPM_NLA_MAPINFO_MAPPED_ADDR, |
| 136 | + IWPM_NLA_MAPINFO_FLAGS, | |
| 117 | 137 | IWPM_NLA_MAPINFO_MAX |
| 118 | 138 | }; |
| 119 | 139 | |
| @@ -132,6 +152,12 @@ enum { · 12 unmodified lines | ||
| 132 | 152 | IWPM_NLA_ERR_MAX |
| 133 | 153 | }; |
| 134 | 154 | |
| 155 | +enum { | |
| 156 | + IWPM_NLA_HELLO_UNSPEC = 0, | |
| 157 | + IWPM_NLA_HELLO_ABI_VERSION, | |
| 158 | + IWPM_NLA_HELLO_MAX | |
| 159 | +}; | |
| 160 | + | |
| 135 | 161 | /* |
| 136 | 162 | * Local service operations: |
| 137 | 163 | * RESOLVE - The client requests the local service to resolve a path. |
| @@ -229,9 +255,11 @@ enum rdma_nldev_command { · 91 unmodified lines | ||
| 229 | 255 | RDMA_NLDEV_CMD_GET, /* can dump */ |
| 230 | 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 | 264 | /* 6 - 8 are free to use */ |
| 237 | 265 | |
| @@ -430,6 +458,20 @@ enum rdma_nldev_attr { · 192 unmodified lines | ||
| 430 | 458 | RDMA_NLDEV_ATTR_DRIVER_S64, /* s64 */ |
| 431 | 459 | RDMA_NLDEV_ATTR_DRIVER_U64, /* u64 */ |
| 432 | 460 | |
| 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 | + | |
| 433 | 475 | /* |
| 434 | 476 | * Always the end |
| 435 | 477 | */ |
| @@ -300,6 +300,10 @@ enum { · 299 unmodified lines | ||
| 300 | 300 | RDMA_OPTION_ID_TOS = 0, |
| 301 | 301 | RDMA_OPTION_ID_REUSEADDR = 1, |
| 302 | 302 | RDMA_OPTION_ID_AFONLY = 2, |
| 303 | + RDMA_OPTION_ID_ACK_TIMEOUT = 3 | |
| 304 | +}; | |
| 305 | + | |
| 306 | +enum { | |
| 303 | 307 | RDMA_OPTION_IB_PATH = 1 |
| 304 | 308 | }; |
| 305 | 309 | |
| @@ -58,8 +58,7 @@ struct rxe_global_route { · 57 unmodified lines | ||
| 58 | 58 | struct rxe_av { |
| 59 | 59 | __u8 port_num; |
| 60 | 60 | __u8 network_type; |
| 61 | − __u16 reserved1; | |
| 62 | − __u32 reserved2; | |
| 61 | + __u8 dmac[6]; | |
| 63 | 62 | struct rxe_global_route grh; |
| 64 | 63 | union { |
| 65 | 64 | struct sockaddr_in _sockaddr_in; |