1
1

Per-RFC: remove the --disable-smp-locks configure option

Use of this configuration option can cause crashing, hanging, and
(worse) incorrect results when btl/sm, btl/scif, or btl/vader are
in use. We discussed this at the January 2015 developers meeting
and it was decided to remove the option entirely. This commit does
just that. All usage of OPAL_WANT_SMP_LOCKS has been removed.
Этот коммит содержится в:
Nathan Hjelm 2015-02-04 17:19:01 -07:00
родитель b5a0f3d347
Коммит ac82d1a6be
19 изменённых файлов: 2 добавлений и 127 удалений

Просмотреть файл

@ -842,20 +842,6 @@ AC_DEFUN([OPAL_CONFIG_ASM],[
esac
OPAL_VAR_SCOPE_POP
AC_MSG_CHECKING([whether to enable smp locks])
AC_ARG_ENABLE([smp-locks],
[AC_HELP_STRING([--enable-smp-locks],
[enable smp locks in atomic ops. Do not disable if code will ever run in SMP or multi-threaded environment. (default: enabled)])])
if test "$enable_smp_locks" != "no"; then
AC_MSG_RESULT([yes])
want_smp_locks=1
else
AC_MSG_RESULT([no])
want_smp_locks=0
fi
AC_DEFINE_UNQUOTED([OPAL_WANT_SMP_LOCKS], [$want_smp_locks],
[whether we want to have smp locks in atomic ops or not])
AC_ARG_ENABLE([builtin-atomics],
[AC_HELP_STRING([--enable-builtin-atomics],
[Enable use of __sync builtin atomics (default: disabled)])])

Просмотреть файл

@ -23,8 +23,6 @@
#if OPAL_ASSEMBLY_ARCH == OPAL_SPARC
#if OPAL_WANT_SMP_LOCKS
#define LOCKS_TABLE_SIZE 8
/* make sure to get into reasonably useful bits (so shift at least 5) */
#define FIND_LOCK(addr) (&(locks_table[(((unsigned long) addr) >> 8) & \
@ -42,15 +40,6 @@ static opal_atomic_lock_t locks_table[LOCKS_TABLE_SIZE] = {
{ { OPAL_ATOMIC_UNLOCKED } }
};
# else /* OPAL_WANT_SMP_LOCKS */
#define LOCKS_TABLE_SIZE 1
#define FIND_LOCK(addr) (&(locks_table[0]))
static opal_atomic_lock_t locks_table[1] = { OPAL_ATOMIC_UNLOCKED };
#endif /* OPAL_WANT_SMP_LOCKS */
int32_t
opal_atomic_add_32(volatile int32_t *addr, int delta)

Просмотреть файл

@ -23,21 +23,10 @@
* On alpha, everything is load-locked, store-conditional...
*/
#if OPAL_WANT_SMP_LOCKS
#define MB() __asm__ __volatile__ ("mb");
#define RMB() __asm__ __volatile__ ("mb");
#define WMB() __asm__ __volatile__ ("wmb");
#else
#define MB()
#define RMB()
#define WMB()
#endif
/**********************************************************************
*
* Define constants for PowerPC 32

Просмотреть файл

@ -29,7 +29,6 @@ cat > $CFILE<<EOF
#define static
#define inline
#define OPAL_GCC_INLINE_ASSEMBLY 1
#define OPAL_WANT_SMP_LOCKS 1
#include "atomic.h"
EOF

Просмотреть файл

@ -27,13 +27,8 @@
*/
#if OPAL_WANT_SMP_LOCKS
#define SMPLOCK "lock; "
#define MB() __asm__ __volatile__("": : :"memory")
#else
#define SMPLOCK
#define MB()
#endif
/**********************************************************************

Просмотреть файл

@ -29,7 +29,6 @@ cat > $CFILE<<EOF
#define static
#define inline
#define OPAL_GCC_INLINE_ASSEMBLY 1
#define OPAL_WANT_SMP_LOCKS 1
#include "atomic.h"
#include "timer.h"
EOF

Просмотреть файл

@ -31,8 +31,6 @@
#ifndef OPAL_SYS_ARCH_ATOMIC_H
#define OPAL_SYS_ARCH_ATOMIC_H 1
#if OPAL_WANT_SMP_LOCKS
#if (OPAL_ASM_ARM_VERSION >= 7)
#define OPAL_HAVE_ATOMIC_MEM_BARRIER 1
@ -62,16 +60,6 @@
#endif
#else
#define MB()
#define RMB()
#define WMB()
#endif /* OPAL_WANT_SMP_LOCKS */
/**********************************************************************
*
* Memory Barriers

Просмотреть файл

@ -29,7 +29,6 @@ cat > $CFILE<<EOF
#define static
#define inline
#define OPAL_GCC_INLINE_ASSEMBLY 1
#define OPAL_WANT_SMP_LOCKS 1
#include "../architecture.h"
#include "atomic.h"
EOF

Просмотреть файл

@ -26,13 +26,8 @@
* On ia32, we use cmpxchg.
*/
#if OPAL_WANT_SMP_LOCKS
#define SMPLOCK "lock; "
#define MB() __asm__ __volatile__("": : :"memory")
#else
#define SMPLOCK
#define MB()
#endif
/**********************************************************************

Просмотреть файл

@ -29,7 +29,6 @@ cat > $CFILE<<EOF
#define static
#define inline
#define OPAL_GCC_INLINE_ASSEMBLY 1
#define OPAL_WANT_SMP_LOCKS 1
#include "atomic.h"
#include "timer.h"
EOF

Просмотреть файл

@ -30,7 +30,6 @@ cat > $CFILE<<EOF
#define static
#define inline
#define OPAL_GCC_INLINE_ASSEMBLY 1
#define OPAL_WANT_SMP_LOCKS 1
#include "atomic.h"
#include "timer.h"
EOF

Просмотреть файл

@ -20,8 +20,6 @@
#define OPAL_SYS_ARCH_ATOMIC_H 1
#if OPAL_WANT_SMP_LOCKS
/* BWB - FIX ME! */
#ifdef __linux__
#define MB() __asm__ __volatile__(".set mips2; sync; .set mips0": : :"memory")
@ -35,15 +33,6 @@
#define SMP_SYNC "sync"
#endif
#else
#define MB()
#define RMB()
#define WMB()
#define SMP_SYNC ""
#endif
/**********************************************************************
*

Просмотреть файл

@ -29,7 +29,6 @@ cat > $CFILE<<EOF
#define static
#define inline
#define OPAL_GCC_INLINE_ASSEMBLY 1
#define OPAL_WANT_SMP_LOCKS 1
#include "../architecture.h"
#include "atomic.h"
EOF

Просмотреть файл

@ -26,11 +26,7 @@
#include <libkern/OSAtomic.h>
#if OPAL_WANT_SMP_LOCKS
#define MB() OSMemoryBarrier
#else
#define MB()
#endif
/**********************************************************************
@ -79,11 +75,7 @@ static inline void opal_atomic_wmb(void)
static inline int opal_atomic_cmpset_32( volatile int32_t *addr,
int32_t oldval, int32_t newval)
{
#if OPAL_WANT_SMP_LOCKS
return OSAtomicCompareAndSwap32Barrier(oldval, newval, addr);
#else
return OSAtomicCompareAndSwap32(oldval, newval, addr);
#endif
return OSAtomicCompareAndSwap32 (oldval, newval, addr);
}
#define opal_atomic_cmpset_acq_32 opal_atomic_cmpset_32
@ -93,11 +85,7 @@ static inline int opal_atomic_cmpset_32( volatile int32_t *addr,
static inline int opal_atomic_cmpset_64( volatile int64_t *addr,
int64_t oldval, int64_t newval)
{
#if OPAL_WANT_SMP_LOCKS
return OSAtomicCompareAndSwap64Barrier(oldval, newval, addr);
#else
return OSAtomicCompareAndSwap64(oldval, newval, addr);
#endif
return OSAtomicCompareAndSwap64 (oldval, newval, addr);
}
#define opal_atomic_cmpset_acq_64 opal_atomic_cmpset_64
@ -112,11 +100,7 @@ static inline int opal_atomic_cmpset_64( volatile int64_t *addr,
*/
static inline int32_t opal_atomic_add_32(volatile int32_t* v, int i)
{
#if OPAL_WANT_SMP_LOCKS
return OSAtomicAdd32Barrier (i, v);
#else
return OSAtomicAdd32 (i, v);
#endif
}
/**
@ -128,11 +112,7 @@ static inline int32_t opal_atomic_add_32(volatile int32_t* v, int i)
*/
static inline int64_t opal_atomic_add_64(volatile int64_t* v, int64_t i)
{
#if OPAL_WANT_SMP_LOCKS
return OSAtomicAdd64Barrier (i, v);
#else
return OSAtomicAdd64 (i, v);
#endif
}
/**
@ -144,11 +124,7 @@ static inline int64_t opal_atomic_add_64(volatile int64_t* v, int64_t i)
*/
static inline int32_t opal_atomic_sub_32(volatile int32_t* v, int i)
{
#if OPAL_WANT_SMP_LOCKS
return OSAtomicAdd32Barrier (-i, v);
#else
return OSAtomicAdd32 (-i, v);
#endif
}
/**
@ -160,11 +136,7 @@ static inline int32_t opal_atomic_sub_32(volatile int32_t* v, int i)
*/
static inline int64_t opal_atomic_sub_64(volatile int64_t* v, int64_t i)
{
#if OPAL_WANT_SMP_LOCKS
return OSAtomicAdd64Barrier (-i, v);
#else
return OSAtomicAdd64 (-i, v);
#endif
}
static inline void opal_atomic_init(opal_atomic_lock_t* lock, int32_t value)

Просмотреть файл

@ -24,24 +24,12 @@
* On powerpc ...
*/
#if OPAL_WANT_SMP_LOCKS
#define MB() __asm__ __volatile__ ("sync" : : : "memory")
#define RMB() __asm__ __volatile__ ("lwsync" : : : "memory")
#define WMB() __asm__ __volatile__ ("eieio" : : : "memory")
#define SMP_SYNC "sync \n\t"
#define SMP_ISYNC "\n\tisync"
#else
#define MB()
#define RMB()
#define WMB()
#define SMP_SYNC ""
#define SMP_ISYNC
#endif
/**********************************************************************
*

Просмотреть файл

@ -29,7 +29,6 @@ cat > $CFILE<<EOF
#define static
#define inline
#define OPAL_GCC_INLINE_ASSEMBLY 1
#define OPAL_WANT_SMP_LOCKS 1
#include "../architecture.h"
#include "atomic.h"
#include "timer.h"

Просмотреть файл

@ -26,11 +26,7 @@
#define ASI_P "0x80"
#if OPAL_WANT_SMP_LOCKS
#define MEMBAR(type) __asm__ __volatile__ ("membar " type : : : "memory")
#else
#define MEMBAR(type)
#endif
/**********************************************************************

Просмотреть файл

@ -30,7 +30,6 @@ cat > $CFILE<<EOF
#define static
#define inline
#define OPAL_GCC_INLINE_ASSEMBLY 1
#define OPAL_WANT_SMP_LOCKS 1
#include "atomic.h"
EOF

Просмотреть файл

@ -45,11 +45,7 @@ static inline void opal_atomic_wmb(void)
__sync_synchronize();
}
#if OPAL_WANT_SMP_LOCKS
#define MB() opal_atomic_mb()
#else
#define MB()
#endif
/**********************************************************************
*