[openblas] 01/02: New patches that fix threading issue on mips64el.

Sébastien Villemot sebastien at debian.org
Sat May 6 13:40:15 UTC 2017


This is an automated email from the git hooks/post-receive script.

sebastien pushed a commit to branch master
in repository openblas.

commit a9cb2a5bdcd205b58a20544a5f847000dc653f5c
Author: Sébastien Villemot <sebastien at debian.org>
Date:   Sat May 6 15:20:34 2017 +0200

    New patches that fix threading issue on mips64el.
    
    + d/p/mips-implement-mb-and-wmb.patch
    + d/p/mips-remove-incorrect-blas_lock-implementation.patch
    
    Closes: 861486
    Thanks: James Cowgill
    Gbp-Dch: Full
---
 debian/patches/mips-implement-mb-and-wmb.patch     | 39 +++++++++++++++
 ...remove-incorrect-blas_lock-implementation.patch | 58 ++++++++++++++++++++++
 debian/patches/series                              |  2 +
 3 files changed, 99 insertions(+)

diff --git a/debian/patches/mips-implement-mb-and-wmb.patch b/debian/patches/mips-implement-mb-and-wmb.patch
new file mode 100644
index 0000000..eb3ce73
--- /dev/null
+++ b/debian/patches/mips-implement-mb-and-wmb.patch
@@ -0,0 +1,39 @@
+Description: mips: implement MB and WMB
+ The MIPS architecture has weak memory ordering and therefore requires
+ sutible memory barriers when doing lock free programming with multiple
+ threads (just like ARM does). This commit implements those barriers for
+ MIPS and MIPS64 using GCC bultins which is probably easiest way.
+Author: James Cowgill <james410 at cowgill.org.uk>
+Origin: https://github.com/jcowgill/OpenBLAS/commit/67836c2ab48a5d6a8cd227358fa67e2a260eba34
+Forwarded: https://github.com/xianyi/OpenBLAS/pull/1178
+Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=861486
+Reviewed-By: Sébastien Villemot <sebastien at debian.org>
+Last-Update: 2017-05-06
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+--- a/common_mips.h
++++ b/common_mips.h
+@@ -33,8 +33,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ #ifndef COMMON_MIPS
+ #define COMMON_MIPS
+ 
+-#define MB
+-#define WMB
++#define MB  __sync_synchronize()
++#define WMB __sync_synchronize()
+ 
+ #define INLINE inline
+ 
+--- a/common_mips64.h
++++ b/common_mips64.h
+@@ -71,8 +71,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ #ifndef COMMON_MIPS64
+ #define COMMON_MIPS64
+ 
+-#define MB
+-#define WMB
++#define MB  __sync_synchronize()
++#define WMB __sync_synchronize()
+ 
+ #define INLINE inline
+ 
diff --git a/debian/patches/mips-remove-incorrect-blas_lock-implementation.patch b/debian/patches/mips-remove-incorrect-blas_lock-implementation.patch
new file mode 100644
index 0000000..dc61d80
--- /dev/null
+++ b/debian/patches/mips-remove-incorrect-blas_lock-implementation.patch
@@ -0,0 +1,58 @@
+Description: mips: remove incorrect blas_lock implementations
+ MIPS 32-bit currently has an empty blas_lock implementation which is
+ worse than nothing at all. MIPS 64-bit does has a blas_lock
+ implementation but is broken. Remove them and fallback to the generic
+ version in common.h which should do the right thing on MIPS.
+Author: James Cowgill <james410 at cowgill.org.uk>
+Origin: https://github.com/jcowgill/OpenBLAS/commit/de7875ca5df77306c5f7216959d3c15d82a0a259
+Forwarded: https://github.com/xianyi/OpenBLAS/pull/1178
+Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=861486
+Reviewed-By: Sébastien Villemot <sebastien at debian.org>
+Last-Update: 2017-05-06
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+--- a/common_mips.h
++++ b/common_mips.h
+@@ -42,11 +42,6 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ 
+ #ifndef ASSEMBLER
+ 
+-static void INLINE blas_lock(volatile unsigned long *address){
+-
+-}
+-#define BLAS_LOCK_DEFINED
+-
+ static inline unsigned int rpcc(void){
+   unsigned long ret;
+ 
+--- a/common_mips64.h
++++ b/common_mips64.h
+@@ -78,28 +78,6 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ 
+ #ifndef ASSEMBLER
+ 
+-static void INLINE blas_lock(volatile unsigned long *address){
+-
+-  long int ret, val = 1;
+-
+-  do {
+-    while (*address) {YIELDING;};
+-
+-    __asm__ __volatile__(
+-			 "1:	ll	%0, %3\n"
+-			 "	ori	%2, %0, 1\n"
+-			 "	sc	%2, %1\n"
+-			 "	beqz	%2, 1b\n"
+-			 "	 andi	%2, %0, 1\n"
+-			 "	sync\n"
+-			 : "=&r" (val), "=m" (address), "=&r" (ret)
+-			 : "m" (address)
+-			 : "memory");
+-
+-  } while (ret);
+-}
+-#define BLAS_LOCK_DEFINED
+-
+ static inline unsigned int rpcc(void){
+   unsigned long ret;
+ 
diff --git a/debian/patches/series b/debian/patches/series
index c0b5dd9..10169ef 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -5,3 +5,5 @@ no-embedded-lapack.patch
 shared-blas-lapack.patch
 matgen-symbols-not-included.patch
 order-files.patch
+mips-implement-mb-and-wmb.patch
+mips-remove-incorrect-blas_lock-implementation.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/openblas.git



More information about the debian-science-commits mailing list