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 smaller cycle than normal. One new driver was
accepted, which is unusual, and at least one more driver remains in
review on the list.
Summary:
- Driver fixes for hns, hfi1, nes, rxe, i40iw, mlx5, cxgb4,
vmw_pvrdma
- Many patches from MatthewW converting radix tree and IDR users to
use xarray
- Introduction of tracepoints to the MAD layer
- Build large SGLs at the start for DMA mapping and get the driver to
split them
- Generally clean SGL handling code throughout the subsystem
- Support for restricting RDMA devices to net namespaces for
containers
- Progress to remove object allocation boilerplate code from drivers
- Change in how the mlx5 driver shows representor ports linked to VFs
- mlx5 uapi feature to access the on chip SW ICM memory
- Add a new driver for 'EFA'. This is HW that supports user space
packet processing through QPs in Amazon's cloud"
* tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma: (186 commits)
RDMA/ipoib: Allow user space differentiate between valid dev_port
IB/core, ipoib: Do not overreact to SM LID change event
RDMA/device: Don't fire uevent before device is fully initialized
lib/scatterlist: Remove leftover from sg_page_iter comment
RDMA/efa: Add driver to Kconfig/Makefile
RDMA/efa: Add the efa module
RDMA/efa: Add EFA verbs implementation
RDMA/efa: Add common command handlers
RDMA/efa: Implement functions that submit and complete admin commands
RDMA/efa: Add the ABI definitions
RDMA/efa: Add the com service API definitions
RDMA/efa: Add the efa_com.h file
RDMA/efa: Add the efa.h header file
RDMA/efa: Add EFA device definitions
RDMA: Add EFA related definitions
RDMA/umem: Remove hugetlb flag
RDMA/bnxt_re: Use core helpers to get aligned DMA address
RDMA/i40iw: Use core helpers to get aligned DMA address within a supported page size
RDMA/verbs: Add a DMA iterator to return aligned contiguous memory blocks
RDMA/umem: Add API to find best driver supported page size in an MR
...
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */
|
||||
/*
|
||||
* Copyright 2018-2019 Amazon.com, Inc. or its affiliates. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef EFA_ABI_USER_H
|
||||
#define EFA_ABI_USER_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/*
|
||||
* Increment this value if any changes that break userspace ABI
|
||||
* compatibility are made.
|
||||
*/
|
||||
#define EFA_UVERBS_ABI_VERSION 1
|
||||
|
||||
/*
|
||||
* Keep structs aligned to 8 bytes.
|
||||
* Keep reserved fields as arrays of __u8 named reserved_XXX where XXX is the
|
||||
* hex bit offset of the field.
|
||||
*/
|
||||
|
||||
enum efa_ibv_user_cmds_supp_udata {
|
||||
EFA_USER_CMDS_SUPP_UDATA_QUERY_DEVICE = 1 << 0,
|
||||
EFA_USER_CMDS_SUPP_UDATA_CREATE_AH = 1 << 1,
|
||||
};
|
||||
|
||||
struct efa_ibv_alloc_ucontext_resp {
|
||||
__u32 comp_mask;
|
||||
__u32 cmds_supp_udata_mask;
|
||||
__u16 sub_cqs_per_cq;
|
||||
__u16 inline_buf_size;
|
||||
__u32 max_llq_size; /* bytes */
|
||||
};
|
||||
|
||||
struct efa_ibv_alloc_pd_resp {
|
||||
__u32 comp_mask;
|
||||
__u16 pdn;
|
||||
__u8 reserved_30[2];
|
||||
};
|
||||
|
||||
struct efa_ibv_create_cq {
|
||||
__u32 comp_mask;
|
||||
__u32 cq_entry_size;
|
||||
__u16 num_sub_cqs;
|
||||
__u8 reserved_50[6];
|
||||
};
|
||||
|
||||
struct efa_ibv_create_cq_resp {
|
||||
__u32 comp_mask;
|
||||
__u8 reserved_20[4];
|
||||
__aligned_u64 q_mmap_key;
|
||||
__aligned_u64 q_mmap_size;
|
||||
__u16 cq_idx;
|
||||
__u8 reserved_d0[6];
|
||||
};
|
||||
|
||||
enum {
|
||||
EFA_QP_DRIVER_TYPE_SRD = 0,
|
||||
};
|
||||
|
||||
struct efa_ibv_create_qp {
|
||||
__u32 comp_mask;
|
||||
__u32 rq_ring_size; /* bytes */
|
||||
__u32 sq_ring_size; /* bytes */
|
||||
__u32 driver_qp_type;
|
||||
};
|
||||
|
||||
struct efa_ibv_create_qp_resp {
|
||||
__u32 comp_mask;
|
||||
/* the offset inside the page of the rq db */
|
||||
__u32 rq_db_offset;
|
||||
/* the offset inside the page of the sq db */
|
||||
__u32 sq_db_offset;
|
||||
/* the offset inside the page of descriptors buffer */
|
||||
__u32 llq_desc_offset;
|
||||
__aligned_u64 rq_mmap_key;
|
||||
__aligned_u64 rq_mmap_size;
|
||||
__aligned_u64 rq_db_mmap_key;
|
||||
__aligned_u64 sq_db_mmap_key;
|
||||
__aligned_u64 llq_desc_mmap_key;
|
||||
__u16 send_sub_cq_idx;
|
||||
__u16 recv_sub_cq_idx;
|
||||
__u8 reserved_1e0[4];
|
||||
};
|
||||
|
||||
struct efa_ibv_create_ah_resp {
|
||||
__u32 comp_mask;
|
||||
__u16 efa_address_handle;
|
||||
__u8 reserved_30[2];
|
||||
};
|
||||
|
||||
struct efa_ibv_ex_query_device_resp {
|
||||
__u32 comp_mask;
|
||||
__u32 max_sq_wr;
|
||||
__u32 max_rq_wr;
|
||||
__u16 max_sq_sge;
|
||||
__u16 max_rq_sge;
|
||||
};
|
||||
|
||||
#endif /* EFA_ABI_USER_H */
|
||||
@@ -360,6 +360,7 @@ enum mlx5_ib_create_qp_resp_mask {
|
||||
MLX5_IB_CREATE_QP_RESP_MASK_TISN = 1UL << 1,
|
||||
MLX5_IB_CREATE_QP_RESP_MASK_RQN = 1UL << 2,
|
||||
MLX5_IB_CREATE_QP_RESP_MASK_SQN = 1UL << 3,
|
||||
MLX5_IB_CREATE_QP_RESP_MASK_TIR_ICM_ADDR = 1UL << 4,
|
||||
};
|
||||
|
||||
struct mlx5_ib_create_qp_resp {
|
||||
@@ -371,6 +372,7 @@ struct mlx5_ib_create_qp_resp {
|
||||
__u32 rqn;
|
||||
__u32 sqn;
|
||||
__u32 reserved1;
|
||||
__u64 tir_icm_addr;
|
||||
};
|
||||
|
||||
struct mlx5_ib_alloc_mw {
|
||||
|
||||
@@ -44,6 +44,7 @@ enum mlx5_ib_create_flow_action_attrs {
|
||||
enum mlx5_ib_alloc_dm_attrs {
|
||||
MLX5_IB_ATTR_ALLOC_DM_RESP_START_OFFSET = (1U << UVERBS_ID_NS_SHIFT),
|
||||
MLX5_IB_ATTR_ALLOC_DM_RESP_PAGE_INDEX,
|
||||
MLX5_IB_ATTR_ALLOC_DM_REQ_TYPE,
|
||||
};
|
||||
|
||||
enum mlx5_ib_devx_methods {
|
||||
@@ -144,6 +145,7 @@ enum mlx5_ib_flow_matcher_create_attrs {
|
||||
MLX5_IB_ATTR_FLOW_MATCHER_FLOW_TYPE,
|
||||
MLX5_IB_ATTR_FLOW_MATCHER_MATCH_CRITERIA,
|
||||
MLX5_IB_ATTR_FLOW_MATCHER_FLOW_FLAGS,
|
||||
MLX5_IB_ATTR_FLOW_MATCHER_FT_TYPE,
|
||||
};
|
||||
|
||||
enum mlx5_ib_flow_matcher_destroy_attrs {
|
||||
|
||||
@@ -42,6 +42,7 @@ enum mlx5_ib_uapi_flow_action_flags {
|
||||
enum mlx5_ib_uapi_flow_table_type {
|
||||
MLX5_IB_UAPI_FLOW_TABLE_TYPE_NIC_RX = 0x0,
|
||||
MLX5_IB_UAPI_FLOW_TABLE_TYPE_NIC_TX = 0x1,
|
||||
MLX5_IB_UAPI_FLOW_TABLE_TYPE_FDB = 0x2,
|
||||
};
|
||||
|
||||
enum mlx5_ib_uapi_flow_action_packet_reformat_type {
|
||||
@@ -56,5 +57,11 @@ struct mlx5_ib_uapi_devx_async_cmd_hdr {
|
||||
__u8 out_data[];
|
||||
};
|
||||
|
||||
enum mlx5_ib_uapi_dm_type {
|
||||
MLX5_IB_UAPI_DM_TYPE_MEMIC,
|
||||
MLX5_IB_UAPI_DM_TYPE_STEERING_SW_ICM,
|
||||
MLX5_IB_UAPI_DM_TYPE_HEADER_MODIFY_SW_ICM,
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -49,17 +49,6 @@ enum {
|
||||
RDMA_NL_IWPM_NUM_OPS
|
||||
};
|
||||
|
||||
struct rdma_cm_id_stats {
|
||||
__u32 qp_num;
|
||||
__u32 bound_dev_if;
|
||||
__u32 port_space;
|
||||
__s32 pid;
|
||||
__u8 cm_state;
|
||||
__u8 node_type;
|
||||
__u8 port_num;
|
||||
__u8 qp_type;
|
||||
};
|
||||
|
||||
enum {
|
||||
IWPM_NLA_REG_PID_UNSPEC = 0,
|
||||
IWPM_NLA_REG_PID_SEQ,
|
||||
@@ -261,7 +250,10 @@ enum rdma_nldev_command {
|
||||
|
||||
RDMA_NLDEV_CMD_PORT_GET, /* can dump */
|
||||
|
||||
/* 6 - 8 are free to use */
|
||||
RDMA_NLDEV_CMD_SYS_GET, /* can dump */
|
||||
RDMA_NLDEV_CMD_SYS_SET,
|
||||
|
||||
/* 8 is free to use */
|
||||
|
||||
RDMA_NLDEV_CMD_RES_GET = 9, /* can dump */
|
||||
|
||||
@@ -472,6 +464,21 @@ enum rdma_nldev_attr {
|
||||
*/
|
||||
RDMA_NLDEV_ATTR_LINK_TYPE, /* string */
|
||||
|
||||
/*
|
||||
* net namespace mode for rdma subsystem:
|
||||
* either shared or exclusive among multiple net namespaces.
|
||||
*/
|
||||
RDMA_NLDEV_SYS_ATTR_NETNS_MODE, /* u8 */
|
||||
/*
|
||||
* Device protocol, e.g. ib, iw, usnic, roce and opa
|
||||
*/
|
||||
RDMA_NLDEV_ATTR_DEV_PROTOCOL, /* string */
|
||||
|
||||
/*
|
||||
* File descriptor handle of the net namespace object
|
||||
*/
|
||||
RDMA_NLDEV_NET_NS_FD, /* u32 */
|
||||
|
||||
/*
|
||||
* Always the end
|
||||
*/
|
||||
|
||||
@@ -102,6 +102,7 @@ enum rdma_driver_id {
|
||||
RDMA_DRIVER_RXE,
|
||||
RDMA_DRIVER_HFI1,
|
||||
RDMA_DRIVER_QIB,
|
||||
RDMA_DRIVER_EFA,
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user