summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorHeiko Carstens2013-09-05 13:26:17 +0200
committerHeiko Carstens2013-09-28 12:46:29 +0200
commitefc1d23b3d9af8cbff9f26677d67fb9c1b9cb792 (patch)
tree3d8aeeff16451c5bd61ead4e68bb418e71a3d3bb /arch
parentlockref: use arch_mutex_cpu_relax() in CMPXCHG_LOOP() (diff)
downloadkernel-qcow2-linux-efc1d23b3d9af8cbff9f26677d67fb9c1b9cb792.tar.gz
kernel-qcow2-linux-efc1d23b3d9af8cbff9f26677d67fb9c1b9cb792.tar.xz
kernel-qcow2-linux-efc1d23b3d9af8cbff9f26677d67fb9c1b9cb792.zip
s390: enable ARCH_USE_CMPXCHG_LOCKREF
Enable ARCH_USE_CMPXCHG_LOCKREF since it shows performance improvements with Linus' simple stat() test case of up to 50% on a 30 cpu system. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/s390/Kconfig1
-rw-r--r--arch/s390/include/asm/spinlock.h5
2 files changed, 6 insertions, 0 deletions
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
index d3fa84070b82..7143793859fa 100644
--- a/arch/s390/Kconfig
+++ b/arch/s390/Kconfig
@@ -93,6 +93,7 @@ config S390
select ARCH_INLINE_WRITE_UNLOCK_IRQ
select ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE
select ARCH_SAVE_PAGE_KEYS if HIBERNATION
+ select ARCH_USE_CMPXCHG_LOCKREF
select ARCH_WANT_IPC_PARSE_VERSION
select BUILDTIME_EXTABLE_SORT
select CLONE_BACKWARDS2
diff --git a/arch/s390/include/asm/spinlock.h b/arch/s390/include/asm/spinlock.h
index 701fe8c59e1f..83e5d216105e 100644
--- a/arch/s390/include/asm/spinlock.h
+++ b/arch/s390/include/asm/spinlock.h
@@ -44,6 +44,11 @@ extern void arch_spin_lock_wait_flags(arch_spinlock_t *, unsigned long flags);
extern int arch_spin_trylock_retry(arch_spinlock_t *);
extern void arch_spin_relax(arch_spinlock_t *lock);
+static inline int arch_spin_value_unlocked(arch_spinlock_t lock)
+{
+ return lock.owner_cpu == 0;
+}
+
static inline void arch_spin_lock(arch_spinlock_t *lp)
{
int old;