diff --git a/.gitignore b/.gitignore index c7b0c5c..577807c 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/rdma-core-54.0.tar.gz +SOURCES/rdma-core-57.0.tar.gz diff --git a/.rdma-core.metadata b/.rdma-core.metadata index b128121..08e88c6 100644 --- a/.rdma-core.metadata +++ b/.rdma-core.metadata @@ -1 +1 @@ -14c744748702bc1d0baf229af85accdd886a716c SOURCES/rdma-core-54.0.tar.gz +30b959249471bd41a038916abff1f24cd76ec217 SOURCES/rdma-core-57.0.tar.gz diff --git a/SOURCES/0001-bnxt_re-lib-Fix-the-data-copy-during-the-low-latency.patch b/SOURCES/0001-bnxt_re-lib-Fix-the-data-copy-during-the-low-latency.patch deleted file mode 100644 index 08ac16b..0000000 --- a/SOURCES/0001-bnxt_re-lib-Fix-the-data-copy-during-the-low-latency.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 9558f227b158291bc3eb7044938d711e388802ce Mon Sep 17 00:00:00 2001 -From: Selvin Xavier -Date: Mon, 10 Mar 2025 07:38:03 -0700 -Subject: [PATCH] bnxt_re/lib: Fix the data copy during the low latency push - path - -The pointer used in the destination buffer is not correctly -type casted, because of which the data gets corrupted while copying. -The issue is seen in the previous adapters that has the low latency -push enabled. Fixing the pointer casting. - -Fixes: 52d0870c3eac ("bnxt_re/lib: Enable low latency push") -Reported-By: Kamal Heib -Signed-off-by: Selvin Xavier ---- - providers/bnxt_re/main.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/providers/bnxt_re/main.h b/providers/bnxt_re/main.h -index 7a9d48e1cf01..067b0c18df8d 100644 ---- a/providers/bnxt_re/main.h -+++ b/providers/bnxt_re/main.h -@@ -598,7 +598,7 @@ static inline void bnxt_re_copy_data_to_pb(struct bnxt_re_push_buffer *pbuf, - int indx; - - for (indx = 0; indx < idx; indx++) { -- dst = (uintptr_t *)(pbuf->pbuf + 2 * (indx + offset)); -+ dst = (uintptr_t *)(pbuf->pbuf) + 2 * indx + offset; - src = (uintptr_t *)(pbuf->wqe[indx]); - mmio_write64(dst, *src); - --- -2.49.0 - diff --git a/SOURCES/0001-tests-Ensure-graceful-resource-cleaning.patch b/SOURCES/0001-tests-Ensure-graceful-resource-cleaning.patch new file mode 100644 index 0000000..2b42364 --- /dev/null +++ b/SOURCES/0001-tests-Ensure-graceful-resource-cleaning.patch @@ -0,0 +1,89 @@ +From a9eb7409fb0b6af5dc54ae222286926b6a028ef0 Mon Sep 17 00:00:00 2001 +From: Edward Srouji +Date: Tue, 4 Mar 2025 16:02:35 +0200 +Subject: [PATCH] tests: Ensure graceful resource cleaning + +A SEGFAULT was observed recently on some environments with +python 3.12.X. +To work around the issue and ensure that python garbage collector exiting +gracefully, a new decorator was added that catches SkipTest unittest +exceptions and closes the context and its underlying resources. + +An a example of a segmentation fault occurrence that this test fixes: +$ python3 tests/run_tests.py test_mlx5_dma_memcpy +sTraceback (most recent call last): + File "cq.pyx", line 359, in pyverbs.cq.CQEX.close +pyverbs.pyverbs_error.PyverbsRDMAError: Failed to destroy CQEX. Errno: +9, Bad file descriptor +Exception ignored in: 'pyverbs.cq.CQEX.__dealloc__' +Traceback (most recent call last): + File "cq.pyx", line 359, in pyverbs.cq.CQEX.close +pyverbs.pyverbs_error.PyverbsRDMAError: Failed to destroy CQEX. Errno: +9, Bad file descriptor +Segmentation fault (core dumped) + +Signed-off-by: Edward Srouji +--- + tests/base.py | 32 +++++++++++++++++++++++++++++++- + 1 file changed, 31 insertions(+), 1 deletion(-) + +diff --git a/tests/base.py b/tests/base.py +index 2738714612ec..c6ffa1beca1a 100644 +--- a/tests/base.py ++++ b/tests/base.py +@@ -3,6 +3,7 @@ + + import multiprocessing as mp + import subprocess ++import functools + import unittest + import tempfile + import random +@@ -532,7 +533,35 @@ class RDMACMBaseTest(RDMATestCase): + sys.exit(2) + + +-class BaseResources(object): ++def catch_skiptest(func): ++ """ ++ Decorator to catch unittest.SkipTest in __init__ resource functions. ++ It gracefully closes the context and all of its underlying resources. ++ """ ++ @functools.wraps(func) ++ def wrapper(self, *args, **kwargs): ++ try: ++ func(self, *args, **kwargs) ++ except unittest.SkipTest as e: ++ if hasattr(self, 'ctx') and self.ctx: ++ self.ctx.close() ++ raise e ++ return wrapper ++ ++ ++class SkipTestMeta(type): ++ """ ++ Metaclass to automatically wrap __init__ in catch_skiptest. ++ It should only be used in resource classes, such as those inheriting from ++ BaseResources. ++ """ ++ def __new__(cls, name, bases, dct): ++ if "__init__" in dct: ++ dct["__init__"] = catch_skiptest(dct["__init__"]) ++ return super().__new__(cls, name, bases, dct) ++ ++ ++class BaseResources(object, metaclass=SkipTestMeta): + """ + BaseResources class is a base aggregator object which contains basic + resources like Context and PD. It opens a context over the given device +@@ -548,6 +577,7 @@ class BaseResources(object): + self.dev_name = dev_name + self.gid_index = gid_index + self.ib_port = ib_port ++ self.ctx = None + self.create_context() + self.create_pd() + +-- +2.49.0 + diff --git a/SOURCES/0002-pyverbs-Change-PD-object-return-type.patch b/SOURCES/0002-pyverbs-Change-PD-object-return-type.patch new file mode 100644 index 0000000..844b206 --- /dev/null +++ b/SOURCES/0002-pyverbs-Change-PD-object-return-type.patch @@ -0,0 +1,43 @@ +From 47c3855f3b84c47cb471cbba8090a6997e07be57 Mon Sep 17 00:00:00 2001 +From: Shachar Kagan +Date: Mon, 28 Apr 2025 17:18:18 +0300 +Subject: [PATCH] pyverbs: Change PD object return type + +Change PD object return type to be compatible with Cython 3.x + +Signed-off-by: Shachar Kagan +Signed-off-by: Edward Srouji +--- + pyverbs/pd.pyx | 2 +- + pyverbs/providers/mlx5/mlx5dv_objects.pyx | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/pyverbs/pd.pyx b/pyverbs/pd.pyx +index 2d84e0b68d10..d8845e8a058b 100644 +--- a/pyverbs/pd.pyx ++++ b/pyverbs/pd.pyx +@@ -151,7 +151,7 @@ cdef class PD(PyverbsCM): + + @property + def pd(self): +- return self.pd ++ return self.pd + + + cdef void *pd_alloc(v.ibv_pd *pd, void *pd_context, size_t size, +diff --git a/pyverbs/providers/mlx5/mlx5dv_objects.pyx b/pyverbs/providers/mlx5/mlx5dv_objects.pyx +index e7776205a150..0567e81a06e8 100644 +--- a/pyverbs/providers/mlx5/mlx5dv_objects.pyx ++++ b/pyverbs/providers/mlx5/mlx5dv_objects.pyx +@@ -182,7 +182,7 @@ cdef class Mlx5DvObj(PyverbsObject): + self.dv_qp = dv_qp + if pd: + dv_pd = Mlx5DvPD() +- self.obj.pd.in_ = pd.pd ++ self.obj.pd.in_ = pd.pd + self.obj.pd.out = &(dv_pd.dv_pd) + self.dv_pd = dv_pd + if srq: +-- +2.49.0 + diff --git a/SPECS/rdma-core.spec b/SPECS/rdma-core.spec index 5b5eac0..1620706 100644 --- a/SPECS/rdma-core.spec +++ b/SPECS/rdma-core.spec @@ -1,5 +1,5 @@ Name: rdma-core -Version: 54.0 +Version: 57.0 Release: 2%{?dist} Summary: RDMA core userspace libraries and daemons @@ -10,7 +10,8 @@ Summary: RDMA core userspace libraries and daemons License: GPLv2 or BSD Url: https://github.com/linux-rdma/rdma-core Source: https://github.com/linux-rdma/rdma-core/releases/download/v%{version}/%{name}-%{version}.tar.gz -Patch0001: 0001-bnxt_re-lib-Fix-the-data-copy-during-the-low-latency.patch +Patch0001: 0001-tests-Ensure-graceful-resource-cleaning.patch +Patch0002: 0002-pyverbs-Change-PD-object-return-type.patch Patch9998: 9998-kernel-boot-Do-not-perform-device-rename-on-OPA-devi.patch Patch9999: 9999-udev-keep-NAME_KERNEL-as-default-interface-naming-co.patch # Do not build static libs by default. @@ -267,12 +268,13 @@ easy, object-oriented access to IB verbs. %prep %setup -q -%patch0001 -p1 +%patch -P 0001 -p1 +%patch -P 0002 -p1 %if 0%{?fedora} -%patch9998 -p1 +%patch -P 9998 -p1 %endif %if 0%{?rhel} -%patch9999 -p1 +%patch -P 9999 -p1 %endif %build @@ -360,6 +362,17 @@ if [ -x /sbin/udevadm ]; then /sbin/udevadm trigger --subsystem-match=net --action=change || true /sbin/udevadm trigger --subsystem-match=infiniband_mad --action=change || true fi +%systemd_post rdma-load-modules@rdma.service +%systemd_post rdma-load-modules@infiniband.service +%systemd_post rdma-load-modules@roce.service +%preun -n rdma-core +%systemd_preun rdma-load-modules@rdma.service +%systemd_preun rdma-load-modules@infiniband.service +%systemd_preun rdma-load-modules@roce.service +%postun -n rdma-core +%systemd_postun_with_restart rdma-load-modules@rdma.service +%systemd_postun_with_restart rdma-load-modules@infiniband.service +%systemd_postun_with_restart rdma-load-modules@roce.service %post -n ibacm %systemd_post ibacm.service @@ -620,9 +633,17 @@ fi %endif %changelog -* Fri May 02 2025 Kamal Heib - 54.0-2 +* Thu Aug 07 2025 Kamal Heib - 57.0-2 +- Fix pyverbs tests +- Resolves: RHEL-107929, RHEL-107930 + +* Tue May 27 2025 Kamal Heib - 57.0-1 +- Rebase to upstream release v57.0 +- Resolves: RHEL-76570, RHEL-45644, RHEL-72077, RHEL-68506, RHEL-94449 + +* Wed Apr 30 2025 Kamal Heib - Fix data corruption in bnxt_re -- Resolves: RHEL-89425 +- Resolves: RHEL-89179 * Tue Oct 29 2024 Kamal Heib - 54.0-1 - Rebase to upstream release v54.0