Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -823,6 +823,9 @@ add_subdirectory(providers/mthca)
add_subdirectory(providers/ocrdma)
add_subdirectory(providers/qedr)
add_subdirectory(providers/vmw_pvrdma)
if(NOT CMAKE_SIZEOF_VOID_P EQUAL 4)
add_subdirectory(providers/xscale)
endif()
endif()

add_subdirectory(providers/hfi1verbs)
Expand Down
9 changes: 9 additions & 0 deletions MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -196,3 +196,12 @@ PYVERBS
M: Edward Srouji <edwards@mellanox.com>
S: Supported
F: pyverbs/

XSCALE USERSPACE PROVIDER (for xsc_ib.ko)
M: Wei Honggang <weihg@yunsilicon.com>
M: Zhao Qianwei <zhaoqw@yunsilicon.com>
M: Li Qiang <liq@yunsilicon.com>
M: Tian Xin <tianx@yunsilicon.com>
M: Yan Lei <jacky@yunsilicon.com>
S: Supported
F: providers/xscale/
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ is included:
- rdma_rxe.ko
- siw.ko
- vmw_pvrdma.ko
- xsc_ib.ko

Additional service daemons are provided for:
- srp_daemon (ib_srp.ko)
Expand Down
1 change: 1 addition & 0 deletions debian/control
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ Description: User space provider drivers for libibverbs
- rxe: A software implementation of the RoCE protocol
- siw: A software implementation of the iWarp protocol
- vmw_pvrdma: VMware paravirtual RDMA device
- xscale: Yunsilicon RDMA device

Package: ibverbs-utils
Architecture: linux-any
Expand Down
4 changes: 4 additions & 0 deletions debian/copyright
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,10 @@ Files: providers/vmw_pvrdma/*
Copyright: 2012-2016 VMware, Inc.
License: BSD-2-clause or GPL-2

Files: providers/xscale/*
Copyright: 2021-2026, Yunsilicon Technology Co., Ltd.
License: GPL-2

Files: rdma-ndd/*
Copyright: 2004-2016, Intel Corporation.
License: BSD-MIT or GPL-2
Expand Down
1 change: 1 addition & 0 deletions debian/ibverbs-providers.install
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ usr/lib/*/libionic.so.*
usr/lib/*/libmana.so.*
usr/lib/*/libmlx4.so.*
usr/lib/*/libmlx5.so.*
usr/lib/*/libxscale.so.*
6 changes: 6 additions & 0 deletions debian/libibverbs-dev.install
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ usr/include/infiniband/mlx4dv.h
usr/include/infiniband/mlx5_api.h
usr/include/infiniband/mlx5_user_ioctl_verbs.h
usr/include/infiniband/mlx5dv.h
usr/include/infiniband/xsc_api.h
usr/include/infiniband/xsc_user_ioctl_verbs.h
usr/include/infiniband/xscdv.h
usr/include/infiniband/opcode.h
usr/include/infiniband/sa-kern-abi.h
usr/include/infiniband/sa.h
Expand All @@ -29,13 +32,16 @@ usr/lib/*/libmlx4.a
usr/lib/*/libmlx4.so
usr/lib/*/libmlx5.a
usr/lib/*/libmlx5.so
usr/lib/*/libxscale.a
usr/lib/*/libxscale.so
usr/lib/*/pkgconfig/libefa.pc
usr/lib/*/pkgconfig/libhns.pc
usr/lib/*/pkgconfig/libibverbs.pc
usr/lib/*/pkgconfig/libionic.pc
usr/lib/*/pkgconfig/libmana.pc
usr/lib/*/pkgconfig/libmlx4.pc
usr/lib/*/pkgconfig/libmlx5.pc
usr/lib/*/pkgconfig/libxscale.pc
usr/share/man/man3/efadv_*.3
usr/share/man/man3/hnsdv_*.3
usr/share/man/man3/ibv_*
Expand Down
4 changes: 4 additions & 0 deletions kernel-headers/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ publish_internal_headers(rdma
rdma/rvt-abi.h
rdma/siw-abi.h
rdma/vmw_pvrdma-abi.h
rdma/xsc-abi.h
rdma/xsc_user_ioctl_cmds.h
rdma/xsc_user_ioctl_verbs.h
)

publish_internal_headers(rdma/hfi
Expand Down Expand Up @@ -82,6 +85,7 @@ rdma_kernel_provider_abi(
rdma/rdma_user_rxe.h
rdma/siw-abi.h
rdma/vmw_pvrdma-abi.h
rdma/xsc-abi.h
)

publish_headers(infiniband
Expand Down
1 change: 1 addition & 0 deletions kernel-headers/rdma/ib_user_ioctl_verbs.h
Original file line number Diff line number Diff line change
Expand Up @@ -257,6 +257,7 @@ enum rdma_driver_id {
RDMA_DRIVER_ERDMA,
RDMA_DRIVER_MANA,
RDMA_DRIVER_IONIC,
RDMA_DRIVER_XSC,
};

enum ib_uverbs_gid_type {
Expand Down
109 changes: 109 additions & 0 deletions kernel-headers/rdma/xsc-abi.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2021 - 2022, Shanghai Yunsilicon Technology Co., Ltd.
* All rights reserved.
*/

#ifndef XSC_ABI_USER_H
#define XSC_ABI_USER_H

#include <linux/types.h>
#include <linux/if_ether.h> /* For ETH_ALEN. */
#include <rdma/ib_user_ioctl_verbs.h>
#include <stddef.h>

enum {
XSC_HW_FEATURE_FLAG_SUPPORT_CQE64 = 1 << 0,
};

struct xsc_ib_alloc_ucontext_resp {
__u32 qp_tab_size;
__u32 cache_line_size;
__u16 max_sq_desc_sz;
__u16 max_rq_desc_sz;
__u32 max_send_wqebb;
__u32 max_recv_wr;
__u16 num_ports;
__u16 device_id;
__aligned_u64 qpm_tx_db;
__aligned_u64 qpm_rx_db;
__aligned_u64 cqm_next_cid_reg;
__aligned_u64 cqm_armdb;
__u32 send_ds_num;
__u32 recv_ds_num;
__u32 resv;
};

struct xsc_ib_alloc_pd_resp {
__u32 pdn;
};

struct xsc_ib_create_cq {
__aligned_u64 buf_addr;
__aligned_u64 db_addr;
__u32 cqe_size;

int dmabuf_fd;
size_t dmabuf_sz;
};

struct xsc_ib_create_cq_resp {
__u32 cqn;
__u32 reserved;
};

struct xsc_ib_resize_cq {
__aligned_u64 buf_addr;
__u16 cqe_size;
__u16 reserved0;
__u32 reserved1;
};

struct xsc_ib_create_qp {
__aligned_u64 buf_addr;
__aligned_u64 db_addr;
__u32 sq_wqe_count;
__u32 rq_wqe_count;
__u32 rq_wqe_shift;
__u32 flags;

int dmabuf_fd;
size_t dmabuf_sz;
};

struct xsc_ib_create_qp_resp {
__u32 bfreg_index;
__u32 resv;
};

struct xsc_ib_burst_info {
__u32 max_burst_sz;
__u16 typical_pkt_sz;
__u16 reserved;
};

struct xsc_ib_modify_qp {
__u32 comp_mask;
struct xsc_ib_burst_info burst_info;
__u32 profile;
};

struct xsc_ib_modify_qp_resp {
__u32 response_length;
__u32 dctn;
__u32 profile;
__u32 reserved;
};

enum xsc_ib_mmap_cmd {
XSC_IB_MMAP_REGULAR_PAGE = 0,
XSC_IB_MMAP_GET_CONTIGUOUS_PAGES = 1,
XSC_IB_MMAP_WC_PAGE = 2,
XSC_IB_MMAP_NC_PAGE = 3,
XSC_IB_MMAP_CORE_CLOCK = 5,
XSC_IB_MMAP_ALLOC_WC = 6,
XSC_IB_MMAP_CLOCK_INFO = 7,
XSC_IB_MMAP_DEVICE_MEM = 8,
};

#endif /* XSC_ABI_USER_H */
164 changes: 164 additions & 0 deletions kernel-headers/rdma/xsc_user_ioctl_cmds.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2021 - 2022, Shanghai Yunsilicon Technology Co., Ltd.
* All rights reserved.
*/

#ifndef XSC_USER_IOCTL_CMDS_H
#define XSC_USER_IOCTL_CMDS_H

#include <linux/types.h>
#include <rdma/ib_user_ioctl_cmds.h>

enum xsc_ib_create_flow_action_attrs {
/* This attribute belong to the driver namespace */
XSC_IB_ATTR_CREATE_FLOW_ACTION_FLAGS = (1U << UVERBS_ID_NS_SHIFT),
};

enum xsc_ib_alloc_dm_attrs {
XSC_IB_ATTR_ALLOC_DM_RESP_START_OFFSET = (1U << UVERBS_ID_NS_SHIFT),
XSC_IB_ATTR_ALLOC_DM_RESP_PAGE_INDEX,
};

enum xsc_ib_devx_methods {
XSC_IB_METHOD_DEVX_OTHER = (1U << UVERBS_ID_NS_SHIFT),
XSC_IB_METHOD_DEVX_QUERY_UAR,
XSC_IB_METHOD_DEVX_QUERY_EQN,
};

enum xsc_ib_devx_other_attrs {
XSC_IB_ATTR_DEVX_OTHER_CMD_IN = (1U << UVERBS_ID_NS_SHIFT),
XSC_IB_ATTR_DEVX_OTHER_CMD_OUT,
};

enum xsc_ib_devx_obj_create_attrs {
XSC_IB_ATTR_DEVX_OBJ_CREATE_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
XSC_IB_ATTR_DEVX_OBJ_CREATE_CMD_IN,
XSC_IB_ATTR_DEVX_OBJ_CREATE_CMD_OUT,
};

enum xsc_ib_devx_query_uar_attrs {
XSC_IB_ATTR_DEVX_QUERY_UAR_USER_IDX = (1U << UVERBS_ID_NS_SHIFT),
XSC_IB_ATTR_DEVX_QUERY_UAR_DEV_IDX,
};

enum xsc_ib_devx_obj_destroy_attrs {
XSC_IB_ATTR_DEVX_OBJ_DESTROY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
};

enum xsc_ib_devx_obj_modify_attrs {
XSC_IB_ATTR_DEVX_OBJ_MODIFY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
XSC_IB_ATTR_DEVX_OBJ_MODIFY_CMD_IN,
XSC_IB_ATTR_DEVX_OBJ_MODIFY_CMD_OUT,
};

enum xsc_ib_devx_obj_query_attrs {
XSC_IB_ATTR_DEVX_OBJ_QUERY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
XSC_IB_ATTR_DEVX_OBJ_QUERY_CMD_IN,
XSC_IB_ATTR_DEVX_OBJ_QUERY_CMD_OUT,
};

enum xsc_ib_devx_query_eqn_attrs {
XSC_IB_ATTR_DEVX_QUERY_EQN_USER_VEC = (1U << UVERBS_ID_NS_SHIFT),
XSC_IB_ATTR_DEVX_QUERY_EQN_DEV_EQN,
};

enum xsc_ib_devx_obj_methods {
XSC_IB_METHOD_DEVX_OBJ_CREATE = (1U << UVERBS_ID_NS_SHIFT),
XSC_IB_METHOD_DEVX_OBJ_DESTROY,
XSC_IB_METHOD_DEVX_OBJ_MODIFY,
XSC_IB_METHOD_DEVX_OBJ_QUERY,
};

enum xsc_ib_devx_umem_reg_attrs {
XSC_IB_ATTR_DEVX_UMEM_REG_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
XSC_IB_ATTR_DEVX_UMEM_REG_ADDR,
XSC_IB_ATTR_DEVX_UMEM_REG_LEN,
XSC_IB_ATTR_DEVX_UMEM_REG_ACCESS,
XSC_IB_ATTR_DEVX_UMEM_REG_OUT_ID,
};

enum xsc_ib_devx_umem_dereg_attrs {
XSC_IB_ATTR_DEVX_UMEM_DEREG_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
};

enum xsc_ib_devx_umem_methods {
XSC_IB_METHOD_DEVX_UMEM_REG = (1U << UVERBS_ID_NS_SHIFT),
XSC_IB_METHOD_DEVX_UMEM_DEREG,
};

enum xsc_ib_objects {
XSC_IB_OBJECT_DEVX = (1U << UVERBS_ID_NS_SHIFT),
XSC_IB_OBJECT_DEVX_OBJ,
XSC_IB_OBJECT_DEVX_UMEM,
XSC_IB_OBJECT_FLOW_MATCHER,
};

enum xsc_ib_flow_matcher_create_attrs {
XSC_IB_ATTR_FLOW_MATCHER_CREATE_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
XSC_IB_ATTR_FLOW_MATCHER_MATCH_MASK,
XSC_IB_ATTR_FLOW_MATCHER_FLOW_TYPE,
XSC_IB_ATTR_FLOW_MATCHER_MATCH_CRITERIA,
XSC_IB_ATTR_FLOW_MATCHER_FLOW_FLAGS,
};

enum xsc_ib_flow_matcher_destroy_attrs {
XSC_IB_ATTR_FLOW_MATCHER_DESTROY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
};

enum xsc_ib_flow_matcher_methods {
XSC_IB_METHOD_FLOW_MATCHER_CREATE = (1U << UVERBS_ID_NS_SHIFT),
XSC_IB_METHOD_FLOW_MATCHER_DESTROY,
};

#define XSC_IB_DW_MATCH_PARAM 0x80

struct xsc_ib_match_params {
__u32 match_params[XSC_IB_DW_MATCH_PARAM];
};

enum xsc_ib_flow_type {
XSC_IB_FLOW_TYPE_NORMAL,
XSC_IB_FLOW_TYPE_SNIFFER,
XSC_IB_FLOW_TYPE_ALL_DEFAULT,
XSC_IB_FLOW_TYPE_MC_DEFAULT,
};

enum xsc_ib_create_flow_attrs {
XSC_IB_ATTR_CREATE_FLOW_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
XSC_IB_ATTR_CREATE_FLOW_MATCH_VALUE,
XSC_IB_ATTR_CREATE_FLOW_DEST_QP,
XSC_IB_ATTR_CREATE_FLOW_DEST_DEVX,
XSC_IB_ATTR_CREATE_FLOW_MATCHER,
XSC_IB_ATTR_CREATE_FLOW_ARR_FLOW_ACTIONS,
XSC_IB_ATTR_CREATE_FLOW_TAG,
};

enum xsc_ib_destoy_flow_attrs {
XSC_IB_ATTR_DESTROY_FLOW_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
};

enum xsc_ib_flow_methods {
XSC_IB_METHOD_CREATE_FLOW = (1U << UVERBS_ID_NS_SHIFT),
XSC_IB_METHOD_DESTROY_FLOW,
};

enum xsc_ib_flow_action_methods {
XSC_IB_METHOD_FLOW_ACTION_CREATE_MODIFY_HEADER = (1U << UVERBS_ID_NS_SHIFT),
XSC_IB_METHOD_FLOW_ACTION_CREATE_PACKET_REFORMAT,
};

enum xsc_ib_create_flow_action_create_modify_header_attrs {
XSC_IB_ATTR_CREATE_MODIFY_HEADER_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
XSC_IB_ATTR_CREATE_MODIFY_HEADER_ACTIONS_PRM,
XSC_IB_ATTR_CREATE_MODIFY_HEADER_FT_TYPE,
};

enum xsc_ib_create_flow_action_create_packet_reformat_attrs {
XSC_IB_ATTR_CREATE_PACKET_REFORMAT_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
XSC_IB_ATTR_CREATE_PACKET_REFORMAT_TYPE,
XSC_IB_ATTR_CREATE_PACKET_REFORMAT_FT_TYPE,
XSC_IB_ATTR_CREATE_PACKET_REFORMAT_DATA_BUF,
};

#endif
Loading