From 3d682da5f5a459c62fd859f266117d243cbd8f46 Mon Sep 17 00:00:00 2001 From: Jakub Bogusz Date: Mon, 25 Oct 2021 21:37:39 +0200 Subject: [PATCH] - updated to 37.1 (ABI rdmav34, i40iw driver replaced by irdma) - updated cxgb3,providers-update patches --- rdma-core-cxgb3.patch | 15 ---- rdma-core-providers-update.patch | 144 +++++++++++++++++++++++++++++++ rdma-core.spec | 99 +++++++++++---------- 3 files changed, 196 insertions(+), 62 deletions(-) diff --git a/rdma-core-cxgb3.patch b/rdma-core-cxgb3.patch index 4ca3b82..f912d66 100644 --- a/rdma-core-cxgb3.patch +++ b/rdma-core-cxgb3.patch @@ -3081,18 +3081,3 @@ index 39a44192e..000000000 - break; - } -} -diff --git a/redhat/rdma.kernel-init b/redhat/rdma.kernel-init -index 6f50e72fc..c7444a1c8 100644 ---- a/redhat/rdma.kernel-init -+++ b/redhat/rdma.kernel-init -@@ -125,10 +125,6 @@ load_hardware_modules() - load_modules mlx5_ib - RC+=$? - fi -- if is_loaded cxgb3 -a ! is_loaded iw_cxgb3; then -- load_modules iw_cxgb3 -- RC+=$? -- fi - if is_loaded cxgb4 -a ! is_loaded iw_cxgb4; then - load_modules iw_cxgb4 - RC+=$? diff --git a/rdma-core-providers-update.patch b/rdma-core-providers-update.patch index d1952d1..dd1ca82 100644 --- a/rdma-core-providers-update.patch +++ b/rdma-core-providers-update.patch @@ -101,3 +101,147 @@ - .free_context = nes_ufree_context, }; PROVIDER_DRIVER(nes, nes_udev_ops); +--- rdma-core-37.1/providers/cxgb3/iwch.h.orig 2021-10-23 21:31:34.732657063 +0200 ++++ rdma-core-37.1/providers/cxgb3/iwch.h 2021-10-24 08:37:17.256269862 +0200 +@@ -143,7 +143,8 @@ static inline unsigned long long_log2(un + } + + extern int iwch_query_device(struct ibv_context *context, +- struct ibv_device_attr *attr); ++ const struct ibv_query_device_ex_input *input, ++ struct ibv_device_attr_ex *attr, size_t attr_size); + extern int iwch_query_port(struct ibv_context *context, uint8_t port, + struct ibv_port_attr *attr); + +--- rdma-core-37.1/providers/cxgb3/verbs.c.orig 2021-10-23 21:31:34.735990379 +0200 ++++ rdma-core-37.1/providers/cxgb3/verbs.c 2021-10-24 09:00:27.472071750 +0200 +@@ -42,23 +42,24 @@ + #include "iwch.h" + #include "iwch-abi.h" + +-int iwch_query_device(struct ibv_context *context, struct ibv_device_attr *attr) ++int iwch_query_device(struct ibv_context *context, const struct ibv_query_device_ex_input *input, struct ibv_device_attr_ex *attr, size_t attr_size) + { +- struct ibv_query_device cmd; ++ struct ib_uverbs_ex_query_device_resp resp; ++ size_t resp_size = sizeof(resp); + uint64_t raw_fw_ver; + unsigned major, minor, sub_minor; + int ret; + +- ret = ibv_cmd_query_device(context, attr, &raw_fw_ver, &cmd, +- sizeof cmd); ++ ret = ibv_cmd_query_device_any(context, input, attr, attr_size, &resp, &resp_size); + if (ret) + return ret; + ++ raw_fw_ver = resp.base.fw_ver; + major = (raw_fw_ver >> 32) & 0xffff; + minor = (raw_fw_ver >> 16) & 0xffff; + sub_minor = raw_fw_ver & 0xffff; + +- snprintf(attr->fw_ver, sizeof attr->fw_ver, ++ snprintf(attr->orig_attr.fw_ver, 64, + "%d.%d.%d", major, minor, sub_minor); + + return 0; +--- rdma-core-37.1/providers/cxgb3/iwch.c.orig 2021-10-23 21:31:35.429319956 +0200 ++++ rdma-core-37.1/providers/cxgb3/iwch.c 2021-10-25 18:20:12.958721287 +0200 +@@ -84,7 +84,7 @@ static void iwch_free_context(struct ibv + } + + static const struct verbs_context_ops iwch_ctx_common_ops = { +- .query_device = iwch_query_device, ++ .query_device_ex = iwch_query_device, + .query_port = iwch_query_port, + .alloc_pd = iwch_alloc_pd, + .dealloc_pd = iwch_free_pd, +@@ -185,35 +185,6 @@ static bool iwch_device_match(struct ver + if (!sysfs_dev->match) + return false; + +- /* +- * Verify that the firmware major number matches. Major number +- * mismatches are fatal. Minor number mismatches are tolerated. +- */ +- if (ibv_get_fw_ver(value, sizeof(value), sysfs_dev)) +- return false; +- +- cp = strtok(value+1, "."); +- sscanf(cp, "%i", &fw_maj); +- cp = strtok(NULL, "."); +- sscanf(cp, "%i", &fw_min); +- +- if (fw_maj < FW_MAJ) { +- fprintf(stderr, "libcxgb3: Fatal firmware version mismatch. " +- "Firmware major number is %u and libcxgb3 needs %u.\n", +- fw_maj, FW_MAJ); +- fflush(stderr); +- return false; +- } +- +- DBGLOG("libcxgb3"); +- +- if ((signed int)fw_min < FW_MIN) { +- PDBG("libcxgb3: non-fatal firmware version mismatch. " +- "Firmware minor number is %u and libcxgb3 needs %u.\n", +- fw_min, FW_MIN); +- fflush(stderr); +- } +- + return true; + } + +--- rdma-core-37.1/providers/nes/nes_umain.c.orig 2021-10-23 21:31:35.429319956 +0200 ++++ rdma-core-37.1/providers/nes/nes_umain.c 2021-10-25 20:11:56.505738392 +0200 +@@ -76,7 +76,7 @@ static void nes_ufree_context(struct ibv + } + + static const struct verbs_context_ops nes_uctx_ops = { +- .query_device = nes_uquery_device, ++ .query_device_ex = nes_uquery_device, + .query_port = nes_uquery_port, + .alloc_pd = nes_ualloc_pd, + .dealloc_pd = nes_ufree_pd, +--- rdma-core-37.1/providers/nes/nes_umain.h.orig 2021-10-23 21:31:34.749323640 +0200 ++++ rdma-core-37.1/providers/nes/nes_umain.h 2021-10-25 20:13:09.838674447 +0200 +@@ -346,7 +346,7 @@ static inline struct nes_uqp *to_nes_uqp + + + /* nes_uverbs.c */ +-int nes_uquery_device(struct ibv_context *, struct ibv_device_attr *); ++int nes_uquery_device(struct ibv_context *, const struct ibv_query_device_ex_input *, struct ibv_device_attr_ex *, size_t); + int nes_uquery_port(struct ibv_context *, uint8_t, struct ibv_port_attr *); + struct ibv_pd *nes_ualloc_pd(struct ibv_context *); + int nes_ufree_pd(struct ibv_pd *); +--- rdma-core-37.1/providers/nes/nes_uverbs.c.orig 2021-10-23 21:31:34.749323640 +0200 ++++ rdma-core-37.1/providers/nes/nes_uverbs.c 2021-10-25 20:17:56.213789687 +0200 +@@ -74,22 +74,23 @@ struct nes_ud_recv_wr { + /** + * nes_uquery_device + */ +-int nes_uquery_device(struct ibv_context *context, struct ibv_device_attr *attr) ++int nes_uquery_device(struct ibv_context *context, const struct ibv_query_device_ex_input *input, struct ibv_device_attr_ex *attr, size_t attr_size) + { +- struct ibv_query_device cmd; ++ struct ib_uverbs_ex_query_device_resp resp; ++ size_t resp_size = sizeof(resp); + uint64_t nes_fw_ver; + int ret; + unsigned int minor, major; + +- ret = ibv_cmd_query_device(context, attr, &nes_fw_ver, +- &cmd, sizeof cmd); ++ ret = ibv_cmd_query_device_any(context, input, attr, attr_size, &resp, &resp_size); + if (ret) + return ret; + ++ nes_fw_ver = resp.base.fw_ver; + major = (nes_fw_ver >> 16) & 0xffff; + minor = nes_fw_ver & 0xffff; + +- snprintf(attr->fw_ver, sizeof attr->fw_ver, ++ snprintf(attr->orig_attr.fw_ver, 64, + "%d.%d", major, minor); + + return 0; diff --git a/rdma-core.spec b/rdma-core.spec index 337bfbf..fbb2270 100644 --- a/rdma-core.spec +++ b/rdma-core.spec @@ -6,13 +6,13 @@ Summary: RDMA Core Userspace Libraries and Daemons Summary(pl.UTF-8): RDMA Core - biblioteki i demony przestrzeni użytkownika Name: rdma-core -Version: 31.0 +Version: 37.1 Release: 1 License: BSD or GPL v2 Group: Applications/System #Source0Download: https://github.com/linux-rdma/rdma-core/releases Source0: https://github.com/linux-rdma/rdma-core/releases/download/v%{version}/%{name}-%{version}.tar.gz -# Source0-md5: 6076b2cfd5b0b22b88f1fb8dffd1aef7 +# Source0-md5: cc7227ca3b3357867742c95c73e66600 Source1: libibverbs.pc.in Source2: librdmacm.pc.in Patch0: %{name}-static.patch @@ -50,7 +50,7 @@ Requires: systemd-units Requires: udev-core BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) -%define ibv_abi rdmav25 +%define ibv_abi rdmav34 %description This is the userspace components for the Linux Kernel's @@ -66,8 +66,8 @@ included with support for the following Kernel RDMA drivers: - iw_cxgb4.ko - hfi1.ko - hns-roce.ko - - i40iw.ko - ib_qib.ko + - irdma.ko - mlx4_ib.ko - mlx5_ib.ko - ib_mthca.ko @@ -96,8 +96,8 @@ libibverbs w jądrze dla następujących sterowników RDMA z jądra: - iw_cxgb4.ko - hfi1.ko - hns-roce.ko - - i40iw.ko - ib_qib.ko + - irdma.ko - mlx4_ib.ko - mlx5_ib.ko - ib_mthca.ko @@ -391,37 +391,6 @@ application. Statyczna wersja sterownika hns, którą można wbudować bezpośrednio w aplikację. -%package -n libibverbs-driver-i40iw -Summary: Userspace driver for the Intel Ethernet Connection X722 RDMA adapters -Summary(pl.UTF-8): Sterownik przestrzeni użytkownika dla kart RDMA Intel Ethernet Connection X722 -Group: Libraries -Requires: libibverbs = %{version}-%{release} - -%description -n libibverbs-driver-i40iw -libi40iw is a userspace driver for the Intel Ethernet Connection X722 -RDMA adapters. It works as a plug-in module for libibverbs that allows -programs to use RDMA hardware directly from userspace. - -%description -n libibverbs-driver-i40iw -l pl.UTF-8 -libi40iw to sterownik przestrzeni użytkownika dla kart RDMA Intel -Ethernet Connection X722 RDMA. Działa jako moduł ładowany przez -libibverbs, pozwalający programom na dostęp z przestrzeni użytkownika -do sprzętu RDMA. - -%package -n libibverbs-driver-i40iw-static -Summary: Static version of i40iw driver -Summary(pl.UTF-8): Statyczna wersja sterownika i40iw -Group: Development/Libraries -Requires: libibverbs-static = %{version}-%{release} - -%description -n libibverbs-driver-i40iw-static -Static version of i40iw driver, which may be linked directly into -application. - -%description -n libibverbs-driver-i40iw-static -l pl.UTF-8 -Statyczna wersja sterownika i40iw, którą można wbudować bezpośrednio -w aplikację. - %package -n libibverbs-driver-ipathverbs Summary: Userspace driver for the QLogic InfiniBand HCAs Summary(pl.UTF-8): Sterownik przestrzeni użytkownika dla kart QLogic InfiniBand HCA @@ -469,6 +438,39 @@ application. Statyczna wersja sterownika ipathverbs, którą można wbudować bezpośrednio w aplikację. +%package -n libibverbs-driver-irdma +Summary: Userspace driver for the Intel Ethernet Connection E810 and X722 RDMA adapters +Summary(pl.UTF-8): Sterownik przestrzeni użytkownika dla kart RDMA Intel Ethernet Connection E810 i X722 +Group: Libraries +Requires: libibverbs = %{version}-%{release} +Obsoletes: libibverbs-driver-i40iw < 37.1 + +%description -n libibverbs-driver-irdma +libirdma is a userspace driver for the Intel Ethernet Connection E810 +and X722 RDMA adapters. It works as a plug-in module for libibverbs +that allows programs to use RDMA hardware directly from userspace. + +%description -n libibverbs-driver-irdma -l pl.UTF-8 +libirdma to sterownik przestrzeni użytkownika dla kart RDMA Intel +Ethernet Connection E810 i X722. Działa jako moduł ładowany przez +libibverbs, pozwalający programom na dostęp z przestrzeni użytkownika +do sprzętu RDMA. + +%package -n libibverbs-driver-irdma-static +Summary: Static version of irdma driver +Summary(pl.UTF-8): Statyczna wersja sterownika irdma +Group: Development/Libraries +Requires: libibverbs-static = %{version}-%{release} +Obsoletes: libibverbs-driver-i40iw-static < 37.1 + +%description -n libibverbs-driver-irdma-static +Static version of irdma driver, which may be linked directly into +application. + +%description -n libibverbs-driver-irdma-static -l pl.UTF-8 +Statyczna wersja sterownika irdma, którą można wbudować bezpośrednio +w aplikację. + %package -n libibverbs-driver-mlx4 Summary: Userspace driver for the Mellanox ConnectX InfiniBand HCAs Summary(pl.UTF-8): Sterownik przestrzeni użytkownika dla kart Mellanox ConnectX InfiniBand HCA @@ -1267,6 +1269,9 @@ rm -rf $RPM_BUILD_ROOT %{_includedir}/infiniband/efadv.h %{_pkgconfigdir}/libefa.pc %{_mandir}/man3/efadv_create_driver_qp.3* +%{_mandir}/man3/efadv_create_qp_ex.3* +%{_mandir}/man3/efadv_query_ah.3* +%{_mandir}/man3/efadv_query_device.3* %{_mandir}/man7/efadv.7* %if %{with static_libs} @@ -1297,17 +1302,6 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/libhns-%{ibv_abi}.a %endif -%files -n libibverbs-driver-i40iw -%defattr(644,root,root,755) -%attr(755,root,root) %{_libdir}/libibverbs/libi40iw-%{ibv_abi}.so -%{_sysconfdir}/libibverbs.d/i40iw.driver - -%if %{with static_libs} -%files -n libibverbs-driver-i40iw-static -%defattr(644,root,root,755) -%{_libdir}/libi40iw-%{ibv_abi}.a -%endif - %files -n libibverbs-driver-ipathverbs %defattr(644,root,root,755) %attr(755,roor,root) %{_libexecdir}/truescale-serdes.cmds @@ -1321,6 +1315,17 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/libipathverbs-%{ibv_abi}.a %endif +%files -n libibverbs-driver-irdma +%defattr(644,root,root,755) +%attr(755,root,root) %{_libdir}/libibverbs/libirdma-%{ibv_abi}.so +%{_sysconfdir}/libibverbs.d/irdma.driver + +%if %{with static_libs} +%files -n libibverbs-driver-irdma-static +%defattr(644,root,root,755) +%{_libdir}/libirdma-%{ibv_abi}.a +%endif + %files -n libibverbs-driver-mlx4 %defattr(644,root,root,755) %attr(755,root,root) %{_libdir}/libibverbs/libmlx4-%{ibv_abi}.so -- 2.44.0