summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrobot-piglet <[email protected]>2025-10-08 12:56:13 +0300
committerrobot-piglet <[email protected]>2025-10-08 13:43:20 +0300
commitaa9cbcada343c3aa0a322d5ff3935e98f28d7a76 (patch)
tree74eebc78678f95273ec384b7ea133c17f8436834
parent250d410a43d15490e9920b936adcf0c96baf697f (diff)
Intermediate changes
commit_hash:dba6be5c2587e66c8b5eaf60c31649552815f08b
-rw-r--r--contrib/libs/ibdrv/impl.cpp65
-rw-r--r--contrib/libs/ibdrv/include/infiniband/mlx5dv.h1
-rw-r--r--contrib/libs/ibdrv/symbols.cpp63
-rw-r--r--contrib/libs/ibdrv/symbols.h13
4 files changed, 110 insertions, 32 deletions
diff --git a/contrib/libs/ibdrv/impl.cpp b/contrib/libs/ibdrv/impl.cpp
index f3544518502..32139f84517 100644
--- a/contrib/libs/ibdrv/impl.cpp
+++ b/contrib/libs/ibdrv/impl.cpp
@@ -153,6 +153,16 @@ const char *ibv_get_device_name(struct ibv_device *device) {
}
Y_HIDDEN
+int ibv_get_device_index(struct ibv_device *device) {
+ return Call(IBSym()->ibv_get_device_index, device);
+}
+
+Y_HIDDEN
+__be64 ibv_get_device_guid(struct ibv_device *device) {
+ return Call(IBSym()->ibv_get_device_guid, device);
+}
+
+Y_HIDDEN
int ibv_get_async_event(struct ibv_context *context, struct ibv_async_event *event) {
return Call(IBSym()->ibv_get_async_event, context, event);
}
@@ -202,6 +212,16 @@ const char *ibv_port_state_str(enum ibv_port_state port_state) {
return Call(IBSym()->ibv_port_state_str, port_state);
}
+Y_HIDDEN
+int ibv_set_ece(struct ibv_qp *qp, struct ibv_ece *ece) {
+ return Call(IBSym()->ibv_set_ece, qp, ece);
+}
+
+Y_HIDDEN
+int ibv_query_ece(struct ibv_qp *qp, struct ibv_ece *ece) {
+ return Call(IBSym()->ibv_query_ece, qp, ece);
+}
+
// rdma
Y_HIDDEN
@@ -260,6 +280,11 @@ int rdma_connect(struct rdma_cm_id *id, struct rdma_conn_param *conn_param) {
}
Y_HIDDEN
+int rdma_establish(struct rdma_cm_id *id) {
+ return Call(RDSym()->rdma_establish, id);
+}
+
+Y_HIDDEN
int rdma_disconnect(struct rdma_cm_id *id) {
return Call(RDSym()->rdma_disconnect, id);
}
@@ -310,6 +335,11 @@ uint16_t rdma_get_src_port(struct rdma_cm_id *id) {
}
Y_HIDDEN
+int rdma_migrate_id(struct rdma_cm_id *id, struct rdma_event_channel *channel) {
+ return Call(RDSym()->rdma_migrate_id, id, channel);
+}
+
+Y_HIDDEN
int rdma_getaddrinfo(const char *node, const char *service, const struct rdma_addrinfo *hints, struct rdma_addrinfo **res) {
return Call(RDSym()->rdma_getaddrinfo, node, service, hints, res);
}
@@ -319,6 +349,21 @@ void rdma_freeaddrinfo(struct rdma_addrinfo *res) {
return Call(RDSym()->rdma_freeaddrinfo, res);
}
+Y_HIDDEN
+int rdma_init_qp_attr(struct rdma_cm_id *id, struct ibv_qp_attr *qp_attr, int *qp_attr_mask) {
+ return Call(RDSym()->rdma_init_qp_attr, id, qp_attr, qp_attr_mask);
+}
+
+Y_HIDDEN
+int rdma_set_local_ece(struct rdma_cm_id *id, struct ibv_ece *ece) {
+ return Call(RDSym()->rdma_set_local_ece, id, ece);
+}
+
+Y_HIDDEN
+const char* rdma_event_str(enum rdma_cm_event_type event) {
+ return Call(RDSym()->rdma_event_str, event);
+}
+
// mlx5
Y_HIDDEN
@@ -432,6 +477,11 @@ int mlx5dv_devx_qp_query(struct ibv_qp *qp, const void *in, size_t inlen, void *
}
Y_HIDDEN
+int mlx5dv_devx_qp_modify(struct ibv_qp *qp, const void *in, size_t inlen, void *out, size_t outlen) {
+ return Call(M5Sym()->mlx5dv_devx_qp_modify, qp, in, inlen, out, outlen);
+}
+
+Y_HIDDEN
int mlx5dv_devx_query_eqn(struct ibv_context *context, uint32_t vector, uint32_t *eqn) {
return Call(M5Sym()->mlx5dv_devx_query_eqn, context, vector, eqn);
}
@@ -617,6 +667,11 @@ int mlx5dv_init_obj(struct mlx5dv_obj *obj, uint64_t obj_type) {
}
Y_HIDDEN
+bool mlx5dv_is_supported(struct ibv_device *device) {
+ return Call(M5Sym()->mlx5dv_is_supported, device);
+}
+
+Y_HIDDEN
struct ibv_context *mlx5dv_open_device(struct ibv_device *device, struct mlx5dv_context_attr *attr) {
return Call(M5Sym()->mlx5dv_open_device, device, attr);
}
@@ -645,3 +700,13 @@ Y_HIDDEN
int mlx5dv_set_context_attr(struct ibv_context *context, enum mlx5dv_set_ctx_attr_type type, void *attr) {
return Call(M5Sym()->mlx5dv_set_context_attr, context, type, attr);
}
+
+Y_HIDDEN
+struct mlx5dv_mkey *mlx5dv_create_mkey(struct mlx5dv_mkey_init_attr *mkey_init_attr) {
+ return Call(M5Sym()->mlx5dv_create_mkey, mkey_init_attr);
+}
+
+Y_HIDDEN
+int mlx5dv_destroy_mkey(struct mlx5dv_mkey *mkey) {
+ return Call(M5Sym()->mlx5dv_destroy_mkey, mkey);
+}
diff --git a/contrib/libs/ibdrv/include/infiniband/mlx5dv.h b/contrib/libs/ibdrv/include/infiniband/mlx5dv.h
index 3d692167828..e8f8eefc9fb 100644
--- a/contrib/libs/ibdrv/include/infiniband/mlx5dv.h
+++ b/contrib/libs/ibdrv/include/infiniband/mlx5dv.h
@@ -621,6 +621,7 @@ enum {
MLX5_OPCODE_UMR = 0x25,
MLX5_OPCODE_TAG_MATCHING = 0x28,
MLX5_OPCODE_FLOW_TBL_ACCESS = 0x2c,
+ MLX5_OPCODE_MMO = 0x2F,
};
/*
diff --git a/contrib/libs/ibdrv/symbols.cpp b/contrib/libs/ibdrv/symbols.cpp
index 50993cb5cd2..3f9fae22c07 100644
--- a/contrib/libs/ibdrv/symbols.cpp
+++ b/contrib/libs/ibdrv/symbols.cpp
@@ -10,35 +10,34 @@
#define LOADSYM(name, type) {name = (TId<type>::R*)L->SymOptional(#name);}
+#define SET_L_TRYING_PATHS(_paths, _do_some) \
+ auto lib = std::make_unique<TDynamicLibrary>(); \
+ TVector<TString> paths = _paths; \
+ TVector<TString> catchedExceptions; \
+ for (auto path : paths) { \
+ try { \
+ lib->Open(path.c_str()); \
+ L.Reset(lib.release()); \
+ _do_some \
+ return; \
+ } catch (std::exception& ex) { \
+ catchedExceptions.emplace_back(ex.what()); \
+ } \
+ } \
+ Y_ABORT_UNLESS(paths.size() == catchedExceptions.size()); \
+ TStringBuilder builder; \
+ builder << "Cannot open any shared library. Reasons:\n"; \
+ for (const auto& [reason, path] : Zip(catchedExceptions, paths)) { \
+ builder << "Path: " << path << " Reason: " << reason << "\n"; \
+ } \
+ ythrow yexception() << builder;
+
+#define LIBIBVERBS_PATHS {"/usr/lib/libibverbs.so", "libibverbs.so", "libibverbs.so.1"}
+
const TInfinibandSymbols* IBSym() {
struct TSymbols: TInfinibandSymbols {
TSymbols() {
- auto lib = std::make_unique<TDynamicLibrary>();
-
- TVector<TString> catchedExceptions;
- TVector<TString> paths = {"/usr/lib/libibverbs.so", "libibverbs.so", "libibverbs.so.1"};
-
- for (auto path : paths) {
- try {
- lib->Open(path.c_str());
- L.Reset(lib.release());
- DOVERBS(LOADSYM)
- return;
- } catch (std::exception& ex) {
- catchedExceptions.emplace_back(ex.what());
- }
- }
-
- Y_ABORT_UNLESS(paths.size() == catchedExceptions.size());
-
- TStringBuilder builder;
-
- builder << "Cannot open any shared library. Reasons:\n";
- for (const auto& [reason, path] : Zip(catchedExceptions, paths)) {
- builder << "Path: " << path << " Reason: " << reason << "\n";
- }
-
- ythrow yexception() << builder;
+ SET_L_TRYING_PATHS(LIBIBVERBS_PATHS, DOVERBS(LOADSYM))
}
THolder<TDynamicLibrary> L;
@@ -47,12 +46,12 @@ const TInfinibandSymbols* IBSym() {
return SingletonWithPriority<TSymbols, 100>();
}
+#define LIBRDMACM_PATHS {"/usr/lib/librdmacm.so", "librdmacm.so"}
+
const TRdmaSymbols* RDSym() {
struct TSymbols: TRdmaSymbols {
TSymbols() {
- L.Reset(new TDynamicLibrary("/usr/lib/librdmacm.so"));
-
- DORDMA(LOADSYM)
+ SET_L_TRYING_PATHS(LIBRDMACM_PATHS, DORDMA(LOADSYM))
}
THolder<TDynamicLibrary> L;
@@ -61,12 +60,12 @@ const TRdmaSymbols* RDSym() {
return SingletonWithPriority<TSymbols, 100>();
}
+#define LIBMLX5_PATHS {"/usr/lib/libmlx5.so", "libmlx5.so"}
+
const TMlx5Symbols* M5Sym() {
struct TSymbols: TMlx5Symbols {
TSymbols() {
- L.Reset(new TDynamicLibrary("/usr/lib/libmlx5.so"));
-
- DOMLX5(LOADSYM)
+ SET_L_TRYING_PATHS(LIBMLX5_PATHS, DOMLX5(LOADSYM))
}
THolder<TDynamicLibrary> L;
diff --git a/contrib/libs/ibdrv/symbols.h b/contrib/libs/ibdrv/symbols.h
index e02781f224e..58b30991c3a 100644
--- a/contrib/libs/ibdrv/symbols.h
+++ b/contrib/libs/ibdrv/symbols.h
@@ -54,6 +54,8 @@ extern "C" {
M(ibv_query_port, int (struct ibv_context *context, uint8_t port_num, struct _compat_ibv_port_attr *port_attr)) \
M(ibv_wc_status_str, const char *(enum ibv_wc_status status)) \
M(ibv_get_device_name, const char *(struct ibv_device *device)) \
+ M(ibv_get_device_index, int (struct ibv_device *device)) \
+ M(ibv_get_device_guid, __be64 (struct ibv_device *device)) \
M(ibv_get_async_event, int (struct ibv_context *context, struct ibv_async_event *event)) \
M(ibv_event_type_str, const char *(enum ibv_event_type event)) \
M(ibv_query_qp, int (struct ibv_qp *qp, struct ibv_qp_attr *attr, int attr_mask, struct ibv_qp_init_attr *init_attr)) \
@@ -64,6 +66,8 @@ extern "C" {
M(ibv_get_cq_event, int (struct ibv_comp_channel *channel, struct ibv_cq **cq, void **cq_context)) \
M(ibv_ack_cq_events, void (struct ibv_cq *cq, unsigned int nevents)) \
M(ibv_port_state_str, const char *(enum ibv_port_state port_state)) \
+ M(ibv_set_ece, int (struct ibv_qp *qp, struct ibv_ece *ece)) \
+ M(ibv_query_ece, int (struct ibv_qp *qp, struct ibv_ece *ece)) \
// DOVERBS
struct TInfinibandSymbols {
@@ -86,6 +90,7 @@ const struct TInfinibandSymbols* IBSym();
M(rdma_listen, int (struct rdma_cm_id *id, int backlog)) \
M(rdma_accept, int (struct rdma_cm_id *id, struct rdma_conn_param *conn_param)) \
M(rdma_connect, int (struct rdma_cm_id *id, struct rdma_conn_param *conn_param)) \
+ M(rdma_establish, int (struct rdma_cm_id *id)) \
M(rdma_disconnect, int (struct rdma_cm_id *id)) \
M(rdma_set_option, int (struct rdma_cm_id *id, int level, int optname, void *optval, size_t optlen)) \
M(rdma_destroy_id, int (struct rdma_cm_id *id)) \
@@ -96,8 +101,12 @@ const struct TInfinibandSymbols* IBSym();
M(rdma_reject, int (struct rdma_cm_id *id, const void *private_data, uint8_t private_data_len)) \
M(rdma_get_dst_port, uint16_t (struct rdma_cm_id *id)) \
M(rdma_get_src_port, uint16_t (struct rdma_cm_id *id)) \
+ M(rdma_migrate_id, int (struct rdma_cm_id *id, struct rdma_event_channel *channel)) \
M(rdma_getaddrinfo, int (const char *node, const char *service, const struct rdma_addrinfo *hints, struct rdma_addrinfo **res)) \
M(rdma_freeaddrinfo, void (struct rdma_addrinfo *res)) \
+ M(rdma_init_qp_attr, int(struct rdma_cm_id *id, struct ibv_qp_attr *qp_attr, int *qp_attr_mask)) \
+ M(rdma_set_local_ece, int(struct rdma_cm_id *id, struct ibv_ece *ece)) \
+ M(rdma_event_str, const char* (enum rdma_cm_event_type event)) \
// DORDMA
struct TRdmaSymbols {
@@ -131,6 +140,7 @@ const struct TRdmaSymbols* RDSym();
M(mlx5dv_devx_obj_query, int (struct mlx5dv_devx_obj *obj, const void *in, size_t inlen, void *out, size_t outlen)) \
M(mlx5dv_devx_obj_query_async, int (struct mlx5dv_devx_obj *obj, const void *in, size_t inlen, size_t outlen, uint64_t wr_id, struct mlx5dv_devx_cmd_comp *cmd_comp)) \
M(mlx5dv_devx_qp_query, int (struct ibv_qp *qp, const void *in, size_t inlen, void *out, size_t outlen)) \
+ M(mlx5dv_devx_qp_modify, int (struct ibv_qp *qp, const void *in, size_t inlen, void *out, size_t outlen)) \
M(mlx5dv_devx_query_eqn, int (struct ibv_context *context, uint32_t vector, uint32_t *eqn)) \
M(mlx5dv_devx_subscribe_devx_event, int (struct mlx5dv_devx_event_channel *event_channel, struct mlx5dv_devx_obj *obj, uint16_t events_sz, uint16_t events_num[], uint64_t cookie)) \
M(mlx5dv_devx_subscribe_devx_event_fd, int (struct mlx5dv_devx_event_channel *event_channel, int fd, struct mlx5dv_devx_obj *obj, uint16_t event_num)) \
@@ -168,12 +178,15 @@ const struct TRdmaSymbols* RDSym();
M(mlx5dv_dump_dr_domain, int (FILE *fout, struct mlx5dv_dr_domain *domain)) \
M(mlx5dv_free_var, void (struct mlx5dv_var *dv_var)) \
M(mlx5dv_init_obj, int (struct mlx5dv_obj *obj, uint64_t obj_type)) \
+ M(mlx5dv_is_supported, bool (struct ibv_device *device)) \
M(mlx5dv_open_device, struct ibv_context *(struct ibv_device *device, struct mlx5dv_context_attr *attr)) \
M(mlx5dv_pp_alloc, struct mlx5dv_pp *(struct ibv_context *context, size_t pp_context_sz, const void *pp_context, uint32_t flags)) \
M(mlx5dv_pp_free, void (struct mlx5dv_pp *pp)) \
M(mlx5dv_query_device, int (struct ibv_context *ctx_in, struct mlx5dv_context *attrs_out)) \
M(mlx5dv_query_devx_port, int (struct ibv_context *ctx, uint32_t port_num, struct mlx5dv_devx_port *mlx5_devx_port)) \
M(mlx5dv_set_context_attr, int (struct ibv_context *context, enum mlx5dv_set_ctx_attr_type type, void *attr)) \
+ M(mlx5dv_create_mkey, struct mlx5dv_mkey *(struct mlx5dv_mkey_init_attr *mkey_init_attr)) \
+ M(mlx5dv_destroy_mkey, int (struct mlx5dv_mkey *mkey)) \
// DOMLX5
struct TMlx5Symbols {