diff --git a/fabtests.spec b/fabtests.spec index 927a9ca..c8e03ec 100644 --- a/fabtests.spec +++ b/fabtests.spec @@ -38,7 +38,7 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-build Fabtests provides a set of examples that uses libfabric, a fabric software library. %prep -%autosetup -p1 -n libfabric-%{version}%{git_ver} +%autosetup -p0 -n libfabric-%{version}%{git_ver} %build cd fabtests diff --git a/libfabric-libtool.patch b/libfabric-libtool.patch index 6123ba5..e28d111 100644 --- a/libfabric-libtool.patch +++ b/libfabric-libtool.patch @@ -1,8 +1,18 @@ -diff --git a/configure.ac b/configure.ac -index d137250..4e67035 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -89,7 +89,7 @@ AC_HEADER_STDC +commit 81de541fdd4abc77167f955f8ddd85f195888e5c +Author: Nicolas Morey-Chaisemartin +Date: Fri Sep 30 13:49:16 2022 +0200 + + libfabric libtool + + Disable static libs + + Signed-off-by: Nicolas Morey-Chaisemartin + +diff --git configure.ac configure.ac +index 7dacf69c9a69..90fcdc610754 100644 +--- configure.ac ++++ configure.ac +@@ -193,7 +193,7 @@ m4_version_prereq([2.70], dnl Check for compiler features AC_C_TYPEOF diff --git a/libfabric.changes b/libfabric.changes index 4cc9943..45ef242 100644 --- a/libfabric.changes +++ b/libfabric.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Thu Nov 28 15:47:54 UTC 2024 - Nicolas Morey + +- Add psm3-fix-SIGILL-on-system-not-supporting-AVX.patch to fix + SIGILL hapening during init on older CPU (bsc#1213538, bsc#1233356). +- Refresh libfabric-libtool.patch tu support patch -p0 + ------------------------------------------------------------------- Mon Aug 5 11:20:55 UTC 2024 - Filip Kastl diff --git a/libfabric.spec b/libfabric.spec index be86a03..bc5a4e8 100644 --- a/libfabric.spec +++ b/libfabric.spec @@ -35,6 +35,7 @@ Group: Development/Libraries/C and C++ Source: %{name}-%{version}%{git_ver}.tar.bz2 Source1: baselibs.conf Patch0: libfabric-libtool.patch +Patch1: psm3-fix-SIGILL-on-system-not-supporting-AVX.patch URL: http://www.github.com/ofiwg/libfabric BuildRequires: autoconf BuildRequires: automake @@ -79,7 +80,7 @@ libfabric provides a user-space API to access high-performance fabric services, such as RDMA. This package contains the development files. %prep -%autosetup -p1 -n %{name}-%{version}%{git_ver} +%autosetup -p0 -n %{name}-%{version}%{git_ver} %build export CFLAGS=-Wno-incompatible-pointer-types diff --git a/psm3-fix-SIGILL-on-system-not-supporting-AVX.patch b/psm3-fix-SIGILL-on-system-not-supporting-AVX.patch new file mode 100644 index 0000000..6009da6 --- /dev/null +++ b/psm3-fix-SIGILL-on-system-not-supporting-AVX.patch @@ -0,0 +1,60 @@ +commit fd049a0a053502a85b839a715fc6f9fdbfc4439a +Author: Nicolas Morey +Date: Thu Nov 28 16:44:12 2024 +0100 + + psm3: fix SIGILL on system not supporting AVX + + Even though code was added to not use the PSM3 provider on system + without AVX/AVX2 support, logs triggered by the detection code can + be using AVX instructions causing psmx3_getinfo to SIGILL + + Move the detection even earlier in the provider init and use OFI + standard print functions to avoid using any code that might have + been compiled with AVX instructions. + + Fixes: 3ef633408edf ("prov/psm3: update provider to sync with IEFS 11.5.1.0.3") + Signed-off-by: Nicolas Morey + +diff --git prov/psm3/src/psmx3_init.c prov/psm3/src/psmx3_init.c +index 29359d3ea348..cc259a1b6301 100644 +--- prov/psm3/src/psmx3_init.c ++++ prov/psm3/src/psmx3_init.c +@@ -680,18 +680,6 @@ static int psmx3_getinfo(uint32_t api_version, const char *node, + + PSMX3_INFO(&psmx3_prov, FI_LOG_CORE,"\n"); + +- __builtin_cpu_init(); +- if (!__builtin_cpu_supports(PSM3_MARCH)) { +- PSMX3_INFO(&psmx3_prov, FI_LOG_CORE, +- "CPU does not support '%s'.\n", PSM3_MARCH); +- OFI_INFO_STR(&psmx3_prov, +- (__builtin_cpu_supports("avx2") ? "AVX2" : +- (__builtin_cpu_supports("avx") ? "AVX" : +- (__builtin_cpu_supports("sse4.2") ? "SSE4.2" : "unknown"))), +- PSM3_MARCH, "CPU Supports", "PSM3 Built With"); +- goto err_out; +- } +- + if (psmx3_init_prov_info(hints, &prov_info)) + goto err_out; + +@@ -895,6 +883,19 @@ struct fi_provider psmx3_prov = { + + PROVIDER_INI + { ++ __builtin_cpu_init(); ++ if (!__builtin_cpu_supports(PSM3_MARCH)) { ++ FI_INFO(&core_prov, FI_LOG_CORE, ++ "PSM3: CPU does not support '%s'.\n", PSM3_MARCH); ++ OFI_INFO_STR(&core_prov, ++ (__builtin_cpu_supports("avx2") ? "AVX2" : ++ (__builtin_cpu_supports("avx") ? "AVX" : ++ (__builtin_cpu_supports("sse4.2") ? "SSE4.2" : "unknown"))), ++ PSM3_MARCH, "CPU Supports", "PSM3 Built With"); ++ return NULL; ++ } ++ ++ + psmx3_prov.version = get_psm3_provider_version(); + + PSMX3_INFO(&psmx3_prov, FI_LOG_CORE, "build options: VERSION=%u.%u=%u.%u.%u.%u, "