commit fdb3ddfe4e372022adcc1093f7f28d49021662ce Author: Nicolas Morey Date: Mon Dec 2 09:44:02 2024 +0100 psm3: prevent code from building using AVX/AVX2 Even with a snippet detecting if the CPU is compatible, PSM3 uses multiple constructors which may trigger a SIGILL when the library gets loaded Signed-off-by: Nicolas Morey diff --git prov/psm3/configure.m4 prov/psm3/configure.m4 index 5c8c083f7dc0..88e6871c1a9e 100644 --- prov/psm3/configure.m4 +++ prov/psm3/configure.m4 @@ -125,49 +125,7 @@ AC_DEFUN([FI_PSM3_CONFIGURE],[ ],[ psm3_happy=0 AC_MSG_RESULT([no]) - AC_MSG_NOTICE([psm3 requires minimum of avx instruction set to build]) - ]) - CFLAGS=$save_CFLAGS - - AC_MSG_CHECKING([for -mavx support]) - save_CFLAGS=$CFLAGS - CFLAGS="$PSM3_STRIP_OPTFLAGS -mavx -O0" - AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [[#include ]], - [[unsigned long long _a[4] = {1ULL,2ULL,3ULL,4ULL}; - __m256i vA = _mm256_loadu_si256((__m256i *)_a); - __m256i vB; - _mm256_store_si256(&vB, vA); - return 0;]]) - ],[ - AC_MSG_RESULT([yes]) - PSM3_ARCH_CFLAGS="-mavx" - PSM3_MARCH="avx" - ],[ - psm3_happy=0 - AC_MSG_RESULT([no]) - AC_MSG_NOTICE([psm3 requires minimum of avx instruction set to build]) - ]) - CFLAGS=$save_CFLAGS - - AC_MSG_CHECKING([for -mavx2 support]) - save_CFLAGS=$CFLAGS - CFLAGS="$PSM3_STRIP_OPTFLAGS -mavx2 -O0" - AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [[#include ]], - [[unsigned long long _a[4] = {1ULL,2ULL,3ULL,4ULL}; - __m256i vA = _mm256_loadu_si256((__m256i *)_a); - __m256i vB = _mm256_add_epi64(vA, vA); - (void)vB; - return 0;]]) - ],[ - AC_MSG_RESULT([yes]) - PSM3_ARCH_CFLAGS="-mavx2" - PSM3_MARCH="avx2" - ],[ - AC_MSG_RESULT([no]) + AC_MSG_NOTICE([psm3 requires minimum of SSE4.2 instruction set to build]) ]) CFLAGS=$save_CFLAGS diff --git prov/psm3/src/psmx3_init.c prov/psm3/src/psmx3_init.c index 29359d3ea348..a02c1ff8698b 100644 --- prov/psm3/src/psmx3_init.c +++ prov/psm3/src/psmx3_init.c @@ -685,10 +685,8 @@ static int psmx3_getinfo(uint32_t api_version, const char *node, 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"); + __builtin_cpu_supports("sse4.2") ? "SSE4.2" : "unknown", + PSM3_MARCH, "CPU Supports", "PSM3 Built With"); goto err_out; }