[oe-commits] [openembedded-core] 02/10: db: drop legacy ARM specific SWP based mutex optimisation

git at git.openembedded.org git at git.openembedded.org
Wed Jun 27 13:09:27 UTC 2018


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

rpurdie pushed a commit to branch master-next
in repository openembedded-core.

commit 01fb078cc99f5bde9bfb55ff14086e1b32dd46fa
Author: Andre McCurdy <armccurdy at gmail.com>
AuthorDate: Tue Jun 26 13:24:55 2018 -0700

    db: drop legacy ARM specific SWP based mutex optimisation
    
    Although the ARM SWP instruction may exist for ARMv6 and above, it's
    not guaranteed to work, especially on SMP systems where it's use may
    lead to instability at runtime, etc:
    
      https://community.arm.com/processors/b/blog/posts/locks-swps-and-two-smoking-barriers
    
    Keeping the optimisation for architecture levels which pre-date SMP
    (ie <= ARMv5) may be safe, however other distros (Buildroot, Debian,
    Fedora, etc) are not doing so and mutex contention is likely to be
    less of an issue on uniprocessor systems anyway, so the benefits of
    this micro optimisations are not clear. Since OE uses ARMv5 qemu as
    a proxy for testing all 32bit ARM architecture levels, it's desirable
    to keep the ARMv5 builds aligned with later ARM architecture levels
    wherever possible.
    
    Signed-off-by: Andre McCurdy <armccurdy at gmail.com>
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 .../db/db/arm-thumb-mutex_db5.patch                | 50 ----------------------
 meta/recipes-support/db/db_5.3.28.bb               | 18 ++------
 2 files changed, 3 insertions(+), 65 deletions(-)

diff --git a/meta/recipes-support/db/db/arm-thumb-mutex_db5.patch b/meta/recipes-support/db/db/arm-thumb-mutex_db5.patch
deleted file mode 100644
index 6a8eada..0000000
--- a/meta/recipes-support/db/db/arm-thumb-mutex_db5.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-Original patch submitted by jbowler at nslu2-linux.org on 2005-11-17:
-
-db: fix thumb uclibc operation in 4.3.29
-  - uclibc thumb builds were using libpthread to implement mutexes, the
-  - uclibc version seems to be a stub (at least on thumb).  This commit
-  - fixes the ARM/gcc-assembly mutex implementation so that it has thumb
-  - support and the resultant db4 works (tested on LE Thumb uclibc)
-
-Upstream-Status: Inappropriate [embedded specific]
-
-Author: jbowler at nslu2-linux.org
-
-Index: db-6.0.30/src/dbinc/mutex_int.h
-===================================================================
---- db-6.0.30.orig/src/dbinc/mutex_int.h
-+++ db-6.0.30/src/dbinc/mutex_int.h
-@@ -474,6 +474,25 @@ typedef unsigned char tsl_t;
- 
- #ifdef LOAD_ACTUAL_MUTEX_CODE
- /* gcc/arm: 0 is clear, 1 is set. */
-+#if defined __thumb__
-+#define	MUTEX_SET(tsl) ({						\
-+	int __r, __p;							\
-+	__asm__ volatile(						\
-+		".align 2\n\t"                                          \
-+		"bx     pc\n\t"                                         \
-+		"nop\n\t"                                               \
-+		".arm\n\t"                                              \
-+		"swpb   %0, %2, [%3]\n\t"                               \
-+		"eor    %0, %0, #1\n\t"                                 \
-+		"orr    %1, pc, #1\n\t"                                 \
-+		"bx     %1\n\t"                                         \
-+		".force_thumb"                                          \
-+	    : "=&r" (__r), "=r" (__p)                                   \
-+	    : "r" (1), "r" (tsl)                                        \
-+	    );                                                          \
-+	__r & 1;							\
-+})
-+#else
- #define	MUTEX_SET(tsl) ({						\
- 	int __r;							\
- 	__asm__ volatile(						\
-@@ -484,6 +503,7 @@ typedef unsigned char tsl_t;
- 	    );								\
- 	__r & 1;							\
- })
-+#endif
- 
- #define	MUTEX_UNSET(tsl)	(*(volatile tsl_t *)(tsl) = 0)
- #define	MUTEX_INIT(tsl)         (MUTEX_UNSET(tsl), 0)
diff --git a/meta/recipes-support/db/db_5.3.28.bb b/meta/recipes-support/db/db_5.3.28.bb
index 093ee44..b7ed2c7 100644
--- a/meta/recipes-support/db/db_5.3.28.bb
+++ b/meta/recipes-support/db/db_5.3.28.bb
@@ -21,8 +21,7 @@ PR = "r1"
 PE = "1"
 
 SRC_URI = "http://download.oracle.com/berkeley-db/db-${PV}.tar.gz"
-SRC_URI += "file://arm-thumb-mutex_db5.patch \
-            file://fix-parallel-build.patch \
+SRC_URI += "file://fix-parallel-build.patch \
             file://0001-atomic-Rename-local-__atomic_compare_exchange-to-avo.patch \
             file://0001-configure-Add-explicit-tag-options-to-libtool-invoca.patch \
             file://sequence-type.patch \
@@ -47,7 +46,6 @@ inherit lib_package
 PACKAGES =+ "${PN}-cxx"
 FILES_${PN}-cxx = "${libdir}/*cxx*so"
 
-
 # The dev package has the .so link (as in db3) and the .a's -
 # it is therefore incompatible (cannot be installed at the
 # same time) as the db3 package
@@ -59,18 +57,8 @@ FILES_SOLIBSDEV = "${libdir}/libdb.so ${libdir}/libdb_cxx.so"
 # All the --disable-* options replace --enable-smallbuild, which breaks a bunch of stuff (eg. postfix)
 DB5_CONFIG ?= "--enable-o_direct --disable-cryptography --disable-queue --disable-replication --disable-verify --disable-compat185 --disable-sql"
 
-EXTRA_OECONF = "${DB5_CONFIG} --enable-shared --enable-cxx --with-sysroot"
-
-# Override the MUTEX setting here, the POSIX library is
-# the default - "POSIX/pthreads/library".
-# Don't ignore the nice SWP instruction on the ARM:
-# These enable the ARM assembler mutex code, this won't
-# work with thumb compilation...
-ARM_MUTEX = "--with-mutex=ARM/gcc-assembly"
-MUTEX = ""
-MUTEX_arm = "${ARM_MUTEX}"
-MUTEX_armeb = "${ARM_MUTEX}"
-EXTRA_OECONF += "${MUTEX} STRIP=true"
+EXTRA_OECONF = "${DB5_CONFIG} --enable-shared --enable-cxx --with-sysroot STRIP=true"
+
 EXTRA_OEMAKE += "LIBTOOL='./${HOST_SYS}-libtool'"
 
 EXTRA_AUTORECONF += "--exclude=autoheader  -I ${S}/dist/aclocal -I${S}/dist/aclocal_java"

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list