diff --git a/0001-tests-Ensure-graceful-resource-cleaning.patch b/0001-tests-Ensure-graceful-resource-cleaning.patch new file mode 100644 index 0000000000000000000000000000000000000000..2b42364d01014b20735e0af1b128777b963c354a --- /dev/null +++ b/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/0002-pyverbs-Change-PD-object-return-type.patch b/0002-pyverbs-Change-PD-object-return-type.patch new file mode 100644 index 0000000000000000000000000000000000000000..844b2069c12bbecb0ea4c5daab36884ae6b9f7ce --- /dev/null +++ b/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/9998-kernel-boot-Do-not-perform-device-rename-on-OPA-devi.patch b/9998-kernel-boot-Do-not-perform-device-rename-on-OPA-devi.patch new file mode 100644 index 0000000000000000000000000000000000000000..7ee61e6bd91230787f908449d7026de3556a6f9d --- /dev/null +++ b/9998-kernel-boot-Do-not-perform-device-rename-on-OPA-devi.patch @@ -0,0 +1,42 @@ +From 1c63f25b55ca4f5317e1c85b548469bbc747e147 Mon Sep 17 00:00:00 2001 +From: "Goldman, Adam" +Date: Tue, 4 Feb 2020 08:55:20 -0500 +Subject: [PATCH] kernel-boot: Do not perform device rename on OPA devices + +PSM2 will not run with recent rdma-core releases. Several tools and +libraries like PSM2, require the hfi1 name to be present. + +Recent rdma-core releases added a new feature to rename kernel devices, +but the default configuration will not work with hfi1 fabrics. + +Related opa-psm2 github issue: + https://github.com/intel/opa-psm2/issues/43 + +Fixes: 5b4099d47be3 ("kernel-boot: Perform device rename to make stable names") +Reviewed-by: Mike Marciniszyn +Signed-off-by: Goldman, Adam +--- + kernel-boot/rdma-persistent-naming.rules | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/kernel-boot/rdma-persistent-naming.rules b/kernel-boot/rdma-persistent-naming.rules +index 6f9c53a5..3ce34ea9 100644 +--- a/kernel-boot/rdma-persistent-naming.rules ++++ b/kernel-boot/rdma-persistent-naming.rules +@@ -26,10 +26,10 @@ + # Device type = RoCE + # mlx5_0 -> rocex525400c0fe123455 + # +-ACTION=="add", SUBSYSTEM=="infiniband", PROGRAM="rdma_rename %k NAME_FALLBACK" ++ACTION=="add", SUBSYSTEM=="infiniband", KERNEL!="hfi1*", PROGRAM="rdma_rename %k NAME_FALLBACK" + + # Example: + # * NAME_FIXED + # fixed name for specific board_id + # +-#ACTION=="add", ATTR{board_id}=="MSF0010110035", SUBSYSTEM=="infiniband", PROGRAM="rdma_rename %k NAME_FIXED myib" +\ No newline at end of file ++#ACTION=="add", ATTR{board_id}=="MSF0010110035", SUBSYSTEM=="infiniband", PROGRAM="rdma_rename %k NAME_FIXED myib" +-- +2.30.1 + diff --git a/9999-udev-keep-NAME_KERNEL-as-default-interface-naming-co.patch b/9999-udev-keep-NAME_KERNEL-as-default-interface-naming-co.patch new file mode 100644 index 0000000000000000000000000000000000000000..d7276ad5476fd191eb9fe78410dd0d6addf734cc --- /dev/null +++ b/9999-udev-keep-NAME_KERNEL-as-default-interface-naming-co.patch @@ -0,0 +1,31 @@ +From 538cd05b34bf15076ce40273926d7580d421a670 Mon Sep 17 00:00:00 2001 +From: Jarod Wilson +Date: Wed, 21 Aug 2019 17:09:13 -0400 +Subject: [PATCH] udev: keep NAME_KERNEL as default interface naming convention + +Signed-off-by: Jarod Wilson +--- + kernel-boot/rdma-persistent-naming.rules | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/kernel-boot/rdma-persistent-naming.rules b/kernel-boot/rdma-persistent-naming.rules +index 6f9c53a5..b5413edb 100644 +--- a/kernel-boot/rdma-persistent-naming.rules ++++ b/kernel-boot/rdma-persistent-naming.rules +@@ -26,10 +26,10 @@ + # Device type = RoCE + # mlx5_0 -> rocex525400c0fe123455 + # +-ACTION=="add", SUBSYSTEM=="infiniband", PROGRAM="rdma_rename %k NAME_FALLBACK" ++ACTION=="add", SUBSYSTEM=="infiniband", PROGRAM="rdma_rename %k NAME_KERNEL" + + # Example: + # * NAME_FIXED + # fixed name for specific board_id + # +-#ACTION=="add", ATTR{board_id}=="MSF0010110035", SUBSYSTEM=="infiniband", PROGRAM="rdma_rename %k NAME_FIXED myib" +\ No newline at end of file ++#ACTION=="add", ATTR{board_id}=="MSF0010110035", SUBSYSTEM=="infiniband", PROGRAM="rdma_rename %k NAME_FIXED myib" +-- +2.30.1 + diff --git a/rdma-core-54.0.tar.gz b/rdma-core-54.0.tar.gz deleted file mode 100644 index 11ef5085f591f37ca776ea0d881a2aadd83c6477..0000000000000000000000000000000000000000 Binary files a/rdma-core-54.0.tar.gz and /dev/null differ diff --git a/rdma-core-57.0.tar.gz b/rdma-core-57.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..d9ef0187e99508a0f70e816e89aba0c31aeed9b0 Binary files /dev/null and b/rdma-core-57.0.tar.gz differ diff --git a/rdma-core.spec b/rdma-core.spec index 88ae94f04c77974c5754b89d30b35e3b4581c8dd..fb7af8a6a7ae7ed1d5bbaa738d56843988996067 100644 --- a/rdma-core.spec +++ b/rdma-core.spec @@ -1,15 +1,19 @@ -%define anolis_release 2 +%define anolis_release 1 %bcond_with pandoc %bcond_with static %bcond_without pyverbs Name: rdma-core -Version: 54.0 +Version: 57.0 Release: %{anolis_release}%{?dist} Summary: RDMA core userspace libraries and daemons License: GPLv2 or BSD Url: https://github.com/linux-rdma/rdma-core -Source0: %{url}/releases/download/v%{version}/%{name}-%{version}.tar.gz +Source0: https://github.com/linux-rdma/rdma-core/releases/download/v57.0/rdma-core-57.0.tar.gz +Patch1: 9999-udev-keep-NAME_KERNEL-as-default-interface-naming-co.patch +Patch2: 9998-kernel-boot-Do-not-perform-device-rename-on-OPA-devi.patch +Patch3: 0002-pyverbs-Change-PD-object-return-type.patch +Patch4: 0001-tests-Ensure-graceful-resource-cleaning.patch BuildRequires: binutils cmake >= 2.8.11 gcc ninja-build BuildRequires: /usr/bin/rst2man perl-generators python3-docutils @@ -70,6 +74,11 @@ Obsoletes: infiniband-diags-devel < %{EVR} Obsoletes: libibmad-devel < %{EVR} BuildRequires: pkgconfig(libnl-3.0) BuildRequires: pkgconfig(libnl-route-3.0) +BuildRequires: make +BuildRequires: pkgconfig +BuildRequires: python +BuildRequires: python-docutils +BuildRequires: valgrind-devel %description devel RDMA core development libraries and headers. @@ -627,6 +636,11 @@ fi %endif %changelog +* Fri Sep 19 2025 wenyuzifang - 57.0-1 +- Updated to version 57.0 to fix xxxxxx +- Preserve hfi1 device names to ensure PSM2 compatibility and prevent runtime failures on Intel Omni-Path adapters +- Ensure compatibility with Cython 3.x by safely handling pointer conversions in Python bindings + * Sun Apr 27 2025 Shangtong Guo - 54.0-2 - add support for riscv64 build