From 95f1e81cb2697050489aeb1dfcdbb52f97913c08 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Fri, 3 Oct 2025 18:39:10 +0200 Subject: [PATCH 1/3] remove the lock around the thread shutdown function --- driver/others/blas_server.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/driver/others/blas_server.c b/driver/others/blas_server.c index 3d89803a60..4a31823543 100644 --- a/driver/others/blas_server.c +++ b/driver/others/blas_server.c @@ -984,8 +984,6 @@ int BLASFUNC(blas_thread_shutdown)(void){ int i; - LOCK_COMMAND(&server_lock); - //Free buffers allocated for threads for(i=0; i Date: Sat, 4 Oct 2025 18:26:19 +0200 Subject: [PATCH 2/3] Update blas_server.c --- driver/others/blas_server.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/driver/others/blas_server.c b/driver/others/blas_server.c index 4a31823543..12b787267a 100644 --- a/driver/others/blas_server.c +++ b/driver/others/blas_server.c @@ -146,8 +146,8 @@ typedef struct { } thread_status_t; #ifdef HAVE_C11 -#define atomic_load_queue(p) __atomic_load_n(p, __ATOMIC_ACQUIRE) -#define atomic_store_queue(p, v) __atomic_store_n(p, v, __ATOMIC_RELEASE) +#define atomic_load_queue(p) __atomic_load_n(p, __ATOMIC_ACQ_REL) +#define atomic_store_queue(p, v) __atomic_store_n(p, v, __ATOMIC_ACQ_REL) #else #define atomic_load_queue(p) (blas_queue_t*)(*(volatile blas_queue_t**)(p)) #define atomic_store_queue(p, v) (*(volatile blas_queue_t* volatile*)(p) = (v)) From a7c0960cdc5a03ac1ca6142185350e6d66d8f69d Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sun, 5 Oct 2025 23:03:50 +0200 Subject: [PATCH 3/3] back to atomic_relaxed... --- driver/others/blas_server.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/driver/others/blas_server.c b/driver/others/blas_server.c index 12b787267a..67ecb2c29b 100644 --- a/driver/others/blas_server.c +++ b/driver/others/blas_server.c @@ -146,8 +146,8 @@ typedef struct { } thread_status_t; #ifdef HAVE_C11 -#define atomic_load_queue(p) __atomic_load_n(p, __ATOMIC_ACQ_REL) -#define atomic_store_queue(p, v) __atomic_store_n(p, v, __ATOMIC_ACQ_REL) +#define atomic_load_queue(p) __atomic_load_n(p, __ATOMIC_RELAXED) +#define atomic_store_queue(p, v) __atomic_store_n(p, v, __ATOMIC_RELAXED) #else #define atomic_load_queue(p) (blas_queue_t*)(*(volatile blas_queue_t**)(p)) #define atomic_store_queue(p, v) (*(volatile blas_queue_t* volatile*)(p) = (v))