Skip to content

Commit 68709b3

Browse files
committed
ionic: Add ionic provider
Introduce a provider for AMD pensando ionic devices to user applications. Co-developed-by: Andrew Boyer <[email protected]> Signed-off-by: Andrew Boyer <[email protected]> Co-developed-by: Allen Hubbe <[email protected]> Signed-off-by: Allen Hubbe <[email protected]> Signed-off-by: Abhijit Gangurde <[email protected]>
1 parent 0cafa05 commit 68709b3

25 files changed

+4975
-3
lines changed

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -731,6 +731,7 @@ add_subdirectory(providers/efa/man)
731731
add_subdirectory(providers/erdma)
732732
add_subdirectory(providers/hns)
733733
add_subdirectory(providers/hns/man)
734+
add_subdirectory(providers/ionic)
734735
add_subdirectory(providers/irdma)
735736
add_subdirectory(providers/mana)
736737
add_subdirectory(providers/mana/man)

MAINTAINERS

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,13 @@ M: Chengchang Tang <[email protected]>
7777
S: Supported
7878
F: providers/hns/
7979

80+
IONIC USERSPACE PROVIDER (for ionic_rdma.ko)
81+
M: Allen Hubbe <[email protected]>
82+
M: Andrew Boyer <[email protected]>
83+
M: Abhijit Gangurde <[email protected]>
84+
S: Supported
85+
F: providers/ionic/
86+
8087
IRDMA USERSPACE PROVIDER (for i40iw.ko and irdma.ko)
8188
M: Sindhu Devale <[email protected]>
8289
M: Tatyana Nikolova <[email protected]>

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ is included:
2020
- iw_cxgb4.ko
2121
- hfi1.ko
2222
- hns-roce-hw-v2.ko
23+
- ionic_rdma.ko
2324
- irdma.ko
2425
- ib_qib.ko
2526
- mana_ib.ko

debian/control

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ Description: User space provider drivers for libibverbs
8888
- erdma: Alibaba Elastic RDMA (iWarp) Adapter
8989
- hfi1verbs: Intel Omni-Path HFI
9090
- hns: HiSilicon Hip06 SoC
91+
- ionic: AMD Pensando Distributed Services Card (DSC) RDMA/RoCE Support
9192
- ipathverbs: QLogic InfiniPath HCAs
9293
- irdma: Intel Ethernet Connection RDMA
9394
- mana: Microsoft Azure Network Adapter

debian/copyright

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,10 @@ Copyright: 2006-2010, QLogic Corp.
177177
2013, Intel Corporation
178178
License: BSD-MIT or GPL-2
179179

180+
Files: providers/ionic/*
181+
Copyright: 2018-2025, Advanced Micro Devices, Inc.
182+
License: BSD-MIT or GPL-2
183+
180184
Files: providers/irdma/*
181185
Copyright: 2015-2023, Intel Corporation.
182186
License: BSD-MIT or GPL-2

debian/ibverbs-providers.install

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ etc/libibverbs.d/
22
usr/lib/*/libefa.so.*
33
usr/lib/*/libhns.so.*
44
usr/lib/*/libibverbs/lib*-rdmav*.so
5+
usr/lib/*/libionic.so.*
56
usr/lib/*/libmana.so.*
67
usr/lib/*/libmlx4.so.*
78
usr/lib/*/libmlx5.so.*

debian/libibverbs-dev.install

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ usr/lib/*/libhns.a
2020
usr/lib/*/libhns.so
2121
usr/lib/*/libibverbs*.so
2222
usr/lib/*/libibverbs.a
23+
usr/lib/*/libionic.a
24+
usr/lib/*/libionic.so*
2325
usr/lib/*/libmana.a
2426
usr/lib/*/libmana.so
2527
usr/lib/*/libmlx4.a

libibverbs/verbs.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2298,7 +2298,7 @@ struct ibv_device **ibv_get_device_list(int *num_devices);
22982298
*/
22992299
#ifdef RDMA_STATIC_PROVIDERS
23002300
#define _RDMA_STATIC_PREFIX_(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, \
2301-
_12, _13, _14, _15, _16, _17, _18, _19, ...) \
2301+
_12, _13, _14, _15, _16, _17, _18, _19, _20, ...) \
23022302
&verbs_provider_##_1, &verbs_provider_##_2, &verbs_provider_##_3, \
23032303
&verbs_provider_##_4, &verbs_provider_##_5, \
23042304
&verbs_provider_##_6, &verbs_provider_##_7, \
@@ -2307,11 +2307,12 @@ struct ibv_device **ibv_get_device_list(int *num_devices);
23072307
&verbs_provider_##_12, &verbs_provider_##_13, \
23082308
&verbs_provider_##_14, &verbs_provider_##_15, \
23092309
&verbs_provider_##_16, &verbs_provider_##_17, \
2310-
&verbs_provider_##_18, &verbs_provider_##_19
2310+
&verbs_provider_##_18, &verbs_provider_##_19, \
2311+
&verbs_provider_##_20
23112312
#define _RDMA_STATIC_PREFIX(arg) \
23122313
_RDMA_STATIC_PREFIX_(arg, none, none, none, none, none, none, none, \
23132314
none, none, none, none, none, none, none, none, \
2314-
none, none, none)
2315+
none, none, none, none)
23152316

23162317
struct verbs_devices_ops;
23172318
extern const struct verbs_device_ops verbs_provider_bnxt_re;
@@ -2331,6 +2332,7 @@ extern const struct verbs_device_ops verbs_provider_qedr;
23312332
extern const struct verbs_device_ops verbs_provider_rxe;
23322333
extern const struct verbs_device_ops verbs_provider_siw;
23332334
extern const struct verbs_device_ops verbs_provider_vmw_pvrdma;
2335+
extern const struct verbs_device_ops verbs_provider_ionic;
23342336
extern const struct verbs_device_ops verbs_provider_all;
23352337
extern const struct verbs_device_ops verbs_provider_none;
23362338
void ibv_static_providers(void *unused, ...);

providers/ionic/CMakeLists.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
rdma_shared_provider(ionic libionic.map
2+
1 1.0.${PACKAGE_VERSION}
3+
ionic.c
4+
ionic_verbs.c
5+
ionic_memory.c
6+
ionic_queue.c
7+
ionic_dv.c
8+
)
9+
10+
publish_headers(infiniband
11+
ionic_dv.h
12+
)

providers/ionic/ionic-abi.h

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
2+
/*
3+
* Copyright (c) 2018-2025 Advanced Micro Devices, Inc. All rights reserved.
4+
*/
5+
6+
#ifndef __IONIC_ABI_H__
7+
#define __IONIC_ABI_H__
8+
9+
#include <infiniband/kern-abi.h>
10+
#include <infiniband/verbs.h>
11+
#include <rdma/ionic-abi.h>
12+
#include <kernel-abi/ionic-abi.h>
13+
14+
#include "ionic_fw_types.h"
15+
16+
DECLARE_DRV_CMD(uionic_ctx, IB_USER_VERBS_CMD_GET_CONTEXT,
17+
ionic_ctx_req, ionic_ctx_resp);
18+
DECLARE_DRV_CMD(uionic_ah, IB_USER_VERBS_CMD_CREATE_AH,
19+
empty, ionic_ah_resp);
20+
DECLARE_DRV_CMD(uionic_cq, IB_USER_VERBS_CMD_CREATE_CQ,
21+
ionic_cq_req, ionic_cq_resp);
22+
DECLARE_DRV_CMD(uionic_qp, IB_USER_VERBS_EX_CMD_CREATE_QP,
23+
ionic_qp_req, ionic_qp_resp);
24+
25+
#endif /* __IONIC_ABI_H__ */

0 commit comments

Comments
 (0)