]> git.kernelconcepts.de Git - karo-tx-linux.git/commit
s390/spinlock,rwlock: always to a load-and-test first
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Thu, 15 May 2014 09:00:44 +0000 (11:00 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Tue, 20 May 2014 06:58:53 +0000 (08:58 +0200)
commitbae8f567344a7cb6a23ca6e13096ba785c69eb42
treea0d91d9abf8405646ffbd5201d8c1b7f2627563c
parent2bf29df7460f4038f84ac5dea3cbe582d6d4af82
s390/spinlock,rwlock: always to a load-and-test first

In case a lock is contended it is better to do a load-and-test first
before trying to get the lock with compare-and-swap. This helps to avoid
unnecessary cache invalidations of the cacheline for the lock if the
CPU has to wait for the lock. For an uncontended lock doing the
compare-and-swap directly is a bit better, if the CPU does not have the
cacheline in its cache yet the compare-and-swap will get it read-write
immediately while a load-and-test would get it read-only first.

Always to the load-and-test first to avoid the cacheline invalidations
for the contended case outweight the potential read-only to read-write
cacheline upgrade for the uncontended case.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/include/asm/spinlock.h
arch/s390/lib/spinlock.c