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
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -731,6 +731,7 @@ add_subdirectory(providers/efa/man)
add_subdirectory(providers/erdma)
add_subdirectory(providers/hns)
add_subdirectory(providers/hns/man)
add_subdirectory(providers/ionic)
add_subdirectory(providers/irdma)
add_subdirectory(providers/mana)
add_subdirectory(providers/mana/man)
Expand Down
7 changes: 7 additions & 0 deletions MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,13 @@ M: Chengchang Tang <[email protected]>
S: Supported
F: providers/hns/

IONIC USERSPACE PROVIDER (for ionic_rdma.ko)
M: Allen Hubbe <[email protected]>
M: Andrew Boyer <[email protected]>
M: Abhijit Gangurde <[email protected]>
S: Supported
F: providers/ionic/

IRDMA USERSPACE PROVIDER (for i40iw.ko and irdma.ko)
M: Sindhu Devale <[email protected]>
M: Tatyana Nikolova <[email protected]>
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ is included:
- iw_cxgb4.ko
- hfi1.ko
- hns-roce-hw-v2.ko
- ionic_rdma.ko
- irdma.ko
- ib_qib.ko
- mana_ib.ko
Expand Down
1 change: 1 addition & 0 deletions debian/control
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ Description: User space provider drivers for libibverbs
- erdma: Alibaba Elastic RDMA (iWarp) Adapter
- hfi1verbs: Intel Omni-Path HFI
- hns: HiSilicon Hip06 SoC
- ionic: AMD Pensando Distributed Services Card (DSC) RDMA/RoCE Support
- ipathverbs: QLogic InfiniPath HCAs
- irdma: Intel Ethernet Connection RDMA
- mana: Microsoft Azure Network Adapter
Expand Down
4 changes: 4 additions & 0 deletions debian/copyright
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,10 @@ Copyright: 2006-2010, QLogic Corp.
2013, Intel Corporation
License: BSD-MIT or GPL-2

Files: providers/ionic/*
Copyright: 2018-2025, Advanced Micro Devices, Inc.
License: BSD-MIT or GPL-2

Files: providers/irdma/*
Copyright: 2015-2023, 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 @@ -2,6 +2,7 @@ etc/libibverbs.d/
usr/lib/*/libefa.so.*
usr/lib/*/libhns.so.*
usr/lib/*/libibverbs/lib*-rdmav*.so
usr/lib/*/libionic.so.*
usr/lib/*/libmana.so.*
usr/lib/*/libmlx4.so.*
usr/lib/*/libmlx5.so.*
9 changes: 9 additions & 0 deletions debian/ibverbs-providers.symbols
Original file line number Diff line number Diff line change
Expand Up @@ -191,3 +191,12 @@ libmana.so.1 ibverbs-providers #MINVER#
MANA_1.0@MANA_1.0 41
manadv_init_obj@MANA_1.0 41
manadv_set_context_attr@MANA_1.0 41
libionic.so.1 ibverbs-providers #MINVER#
* Build-Depends-Package: libibverbs-dev
IONIC_1.0@IONIC_1.0 59
ionic_dv_ctx_get_udma_count@IONIC_1.0 59
ionic_dv_ctx_get_udma_mask@IONIC_1.0 59
ionic_dv_pd_get_udma_mask@IONIC_1.0 59
ionic_dv_pd_set_udma_mask@IONIC_1.0 59
ionic_dv_pd_set_sqcmb@IONIC_1.0 59
ionic_dv_pd_set_rqcmb@IONIC_1.0 59
4 changes: 4 additions & 0 deletions debian/libibverbs-dev.install
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ usr/include/infiniband/arch.h
usr/include/infiniband/efadv.h
usr/include/infiniband/hnsdv.h
usr/include/infiniband/ib_user_ioctl_verbs.h
usr/include/infiniband/ionic_dv.h
usr/include/infiniband/manadv.h
usr/include/infiniband/mlx4dv.h
usr/include/infiniband/mlx5_api.h
Expand All @@ -20,6 +21,8 @@ usr/lib/*/libhns.a
usr/lib/*/libhns.so
usr/lib/*/libibverbs*.so
usr/lib/*/libibverbs.a
usr/lib/*/libionic.a
usr/lib/*/libionic.so*
usr/lib/*/libmana.a
usr/lib/*/libmana.so
usr/lib/*/libmlx4.a
Expand All @@ -29,6 +32,7 @@ usr/lib/*/libmlx5.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
Expand Down
2 changes: 2 additions & 0 deletions kernel-headers/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ publish_internal_headers(rdma
rdma/ib_user_mad.h
rdma/ib_user_sa.h
rdma/ib_user_verbs.h
rdma/ionic-abi.h
rdma/irdma-abi.h
rdma/mana-abi.h
rdma/mlx4-abi.h
Expand Down Expand Up @@ -70,6 +71,7 @@ rdma_kernel_provider_abi(
rdma/erdma-abi.h
rdma/hns-abi.h
rdma/ib_user_verbs.h
rdma/ionic-abi.h
rdma/irdma-abi.h
rdma/mana-abi.h
rdma/mlx4-abi.h
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 @@ -255,6 +255,7 @@ enum rdma_driver_id {
RDMA_DRIVER_SIW,
RDMA_DRIVER_ERDMA,
RDMA_DRIVER_MANA,
RDMA_DRIVER_IONIC,
};

enum ib_uverbs_gid_type {
Expand Down
115 changes: 115 additions & 0 deletions kernel-headers/rdma/ionic-abi.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* Copyright (C) 2018-2025, Advanced Micro Devices, Inc */

#ifndef IONIC_ABI_H
#define IONIC_ABI_H

#include <linux/types.h>

#define IONIC_ABI_VERSION 1

#define IONIC_EXPDB_64 1
#define IONIC_EXPDB_128 2
#define IONIC_EXPDB_256 4
#define IONIC_EXPDB_512 8

#define IONIC_EXPDB_SQ 1
#define IONIC_EXPDB_RQ 2

#define IONIC_CMB_ENABLE 1
#define IONIC_CMB_REQUIRE 2
#define IONIC_CMB_EXPDB 4
#define IONIC_CMB_WC 8
#define IONIC_CMB_UC 16

struct ionic_ctx_req {
__u32 rsvd[2];
};

struct ionic_ctx_resp {
__u32 rsvd;
__u32 page_shift;

__aligned_u64 dbell_offset;

__u16 version;
__u8 qp_opcodes;
__u8 admin_opcodes;

__u8 sq_qtype;
__u8 rq_qtype;
__u8 cq_qtype;
__u8 admin_qtype;

__u8 max_stride;
__u8 max_spec;
__u8 udma_count;
__u8 expdb_mask;
__u8 expdb_qtypes;

__u8 rsvd2[3];
};

struct ionic_qdesc {
__aligned_u64 addr;
__u32 size;
__u16 mask;
__u8 depth_log2;
__u8 stride_log2;
};

struct ionic_ah_resp {
__u32 ahid;
__u32 pad;
};

struct ionic_cq_req {
struct ionic_qdesc cq[2];
__u8 udma_mask;
__u8 rsvd[7];
};

struct ionic_cq_resp {
__u32 cqid[2];
__u8 udma_mask;
__u8 rsvd[7];
};

struct ionic_qp_req {
struct ionic_qdesc sq;
struct ionic_qdesc rq;
__u8 sq_spec;
__u8 rq_spec;
__u8 sq_cmb;
__u8 rq_cmb;
__u8 udma_mask;
__u8 rsvd[3];
};

struct ionic_qp_resp {
__u32 qpid;
__u8 sq_cmb;
__u8 rq_cmb;
__u8 udma_idx;
__u8 rsvd[1];
__aligned_u64 sq_cmb_offset;
__aligned_u64 rq_cmb_offset;
};

struct ionic_srq_req {
struct ionic_qdesc rq;
__u8 rq_spec;
__u8 rq_cmb;
__u8 udma_mask;
__u8 rsvd[5];
};

struct ionic_srq_resp {
__u32 qpid;
__u8 rq_cmb;
__u8 udma_idx;
__u8 rsvd[2];
__aligned_u64 rq_cmb_offset;
};

#endif /* IONIC_ABI_H */
8 changes: 5 additions & 3 deletions libibverbs/verbs.h
Original file line number Diff line number Diff line change
Expand Up @@ -2298,7 +2298,7 @@ struct ibv_device **ibv_get_device_list(int *num_devices);
*/
#ifdef RDMA_STATIC_PROVIDERS
#define _RDMA_STATIC_PREFIX_(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \
_12, _13, _14, _15, _16, _17, _18, _19, ...) \
_12, _13, _14, _15, _16, _17, _18, _19, _20, ...) \
&verbs_provider_##_1, &verbs_provider_##_2, &verbs_provider_##_3, \
&verbs_provider_##_4, &verbs_provider_##_5, \
&verbs_provider_##_6, &verbs_provider_##_7, \
Expand All @@ -2307,11 +2307,12 @@ struct ibv_device **ibv_get_device_list(int *num_devices);
&verbs_provider_##_12, &verbs_provider_##_13, \
&verbs_provider_##_14, &verbs_provider_##_15, \
&verbs_provider_##_16, &verbs_provider_##_17, \
&verbs_provider_##_18, &verbs_provider_##_19
&verbs_provider_##_18, &verbs_provider_##_19, \
&verbs_provider_##_20
#define _RDMA_STATIC_PREFIX(arg) \
_RDMA_STATIC_PREFIX_(arg, none, none, none, none, none, none, none, \
none, none, none, none, none, none, none, none, \
none, none, none)
none, none, none, none)

struct verbs_devices_ops;
extern const struct verbs_device_ops verbs_provider_bnxt_re;
Expand All @@ -2331,6 +2332,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_ionic;
extern const struct verbs_device_ops verbs_provider_all;
extern const struct verbs_device_ops verbs_provider_none;
void ibv_static_providers(void *unused, ...);
Expand Down
14 changes: 14 additions & 0 deletions providers/ionic/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
rdma_shared_provider(ionic libionic.map
1 1.0.${PACKAGE_VERSION}
ionic.c
ionic_verbs.c
ionic_memory.c
ionic_queue.c
ionic_dv.c
)

publish_headers(infiniband
ionic_dv.h
)

rdma_pkg_config("ionic" "libibverbs" "${CMAKE_THREAD_LIBS_INIT}")
25 changes: 25 additions & 0 deletions providers/ionic/ionic-abi.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
/*
* Copyright (c) 2018-2025 Advanced Micro Devices, Inc. All rights reserved.
*/

#ifndef __IONIC_ABI_H__
#define __IONIC_ABI_H__

#include <infiniband/kern-abi.h>
#include <infiniband/verbs.h>
#include <rdma/ionic-abi.h>
#include <kernel-abi/ionic-abi.h>

#include "ionic_fw_types.h"

DECLARE_DRV_CMD(uionic_ctx, IB_USER_VERBS_CMD_GET_CONTEXT,
ionic_ctx_req, ionic_ctx_resp);
DECLARE_DRV_CMD(uionic_ah, IB_USER_VERBS_CMD_CREATE_AH,
empty, ionic_ah_resp);
DECLARE_DRV_CMD(uionic_cq, IB_USER_VERBS_CMD_CREATE_CQ,
ionic_cq_req, ionic_cq_resp);
DECLARE_DRV_CMD(uionic_qp, IB_USER_VERBS_EX_CMD_CREATE_QP,
ionic_qp_req, ionic_qp_resp);

#endif /* __IONIC_ABI_H__ */
Loading