This patch adds xscale needed kernel abi headers into the kernel-headers directory. Signed-off-by: Tian Xin <tianx@xxxxxxxxxxxxxx> Signed-off-by: Wei Honggang <weihg@xxxxxxxxxxxxxx> Signed-off-by: Zhao Qianwei <zhaoqw@xxxxxxxxxxxxxx> Signed-off-by: Li Qiang <liq@xxxxxxxxxxxxxx> Signed-off-by: Yan Lei <jacky@xxxxxxxxxxxxxx> --- kernel-headers/CMakeLists.txt | 2 + kernel-headers/rdma/ib_user_ioctl_verbs.h | 1 + kernel-headers/rdma/xsc-abi.h | 74 +++++++++++++++++++++++ libibverbs/verbs.h | 1 + 4 files changed, 78 insertions(+) create mode 100644 kernel-headers/rdma/xsc-abi.h diff --git a/kernel-headers/CMakeLists.txt b/kernel-headers/CMakeLists.txt index 82c191ca..56eb3984 100644 --- a/kernel-headers/CMakeLists.txt +++ b/kernel-headers/CMakeLists.txt @@ -26,6 +26,7 @@ publish_internal_headers(rdma rdma/rvt-abi.h rdma/siw-abi.h rdma/vmw_pvrdma-abi.h + rdma/xsc-abi.h ) publish_internal_headers(rdma/hfi @@ -80,6 +81,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 diff --git a/kernel-headers/rdma/ib_user_ioctl_verbs.h b/kernel-headers/rdma/ib_user_ioctl_verbs.h index fe15bc7e..9f36fcf1 100644 --- a/kernel-headers/rdma/ib_user_ioctl_verbs.h +++ b/kernel-headers/rdma/ib_user_ioctl_verbs.h @@ -255,6 +255,7 @@ enum rdma_driver_id { RDMA_DRIVER_SIW, RDMA_DRIVER_ERDMA, RDMA_DRIVER_MANA, + RDMA_DRIVER_XSC, }; enum ib_uverbs_gid_type { diff --git a/kernel-headers/rdma/xsc-abi.h b/kernel-headers/rdma/xsc-abi.h new file mode 100644 index 00000000..456d6c47 --- /dev/null +++ b/kernel-headers/rdma/xsc-abi.h @@ -0,0 +1,74 @@ +/* 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> + +/* Make sure that all structs defined in this file remain laid out so + * that they pack the same way on 32-bit and 64-bit architectures (to + * avoid incompatibility between 32-bit userspace and 64-bit kernels). + * In particular do not use pointer types -- pass pointers in __u64 + * instead. + */ + +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_wr; + __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_create_qp { + __aligned_u64 buf_addr; + __aligned_u64 db_addr; + __u32 sq_wqe_count; + __u32 rq_wqe_count; + __u32 rq_wqe_shift; + __u32 flags; + __u32 resv; +}; + +struct xsc_ib_create_qp_resp { + __u32 bfreg_index; + __u32 resv; +}; + +struct xsc_ib_create_cq { + __aligned_u64 buf_addr; + __u32 cqe_size; +}; + +struct xsc_ib_create_cq_resp { + __u32 cqn; + __u32 reserved; +}; + +struct xsc_ib_create_ah_resp { + __u32 response_length; + __u8 dmac[ETH_ALEN]; + __u8 reserved[6]; +}; + +struct xsc_ib_alloc_pd_resp { + __u32 pdn; +}; + +#endif /* XSC_ABI_USER_H */ diff --git a/libibverbs/verbs.h b/libibverbs/verbs.h index cec00551..7127899c 100644 --- a/libibverbs/verbs.h +++ b/libibverbs/verbs.h @@ -2277,6 +2277,7 @@ extern const struct verbs_device_ops verbs_provider_qedr; extern const struct verbs_device_ops verbs_provider_rxe; extern const struct verbs_device_ops verbs_provider_siw; extern const struct verbs_device_ops verbs_provider_vmw_pvrdma; +extern const struct verbs_device_ops verbs_provider_xscale; extern const struct verbs_device_ops verbs_provider_all; extern const struct verbs_device_ops verbs_provider_none; void ibv_static_providers(void *unused, ...); -- 2.25.1