diff options
| author | robot-piglet <[email protected]> | 2025-10-08 12:56:13 +0300 |
|---|---|---|
| committer | robot-piglet <[email protected]> | 2025-10-08 13:43:20 +0300 |
| commit | aa9cbcada343c3aa0a322d5ff3935e98f28d7a76 (patch) | |
| tree | 74eebc78678f95273ec384b7ea133c17f8436834 | |
| parent | 250d410a43d15490e9920b936adcf0c96baf697f (diff) | |
Intermediate changes
commit_hash:dba6be5c2587e66c8b5eaf60c31649552815f08b
| -rw-r--r-- | contrib/libs/ibdrv/impl.cpp | 65 | ||||
| -rw-r--r-- | contrib/libs/ibdrv/include/infiniband/mlx5dv.h | 1 | ||||
| -rw-r--r-- | contrib/libs/ibdrv/symbols.cpp | 63 | ||||
| -rw-r--r-- | contrib/libs/ibdrv/symbols.h | 13 |
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 { |
