linux/arch
Peter Zijlstra 43b3f02899 locking/qspinlock/x86: Fix performance regression under unaccelerated VMs
Dave ran into horrible performance on a VM without PARAVIRT_SPINLOCKS
set and Linus noted that the test-and-set implementation was retarded.

One should spin on the variable with a load, not a RMW.

While there, remove 'queued' from the name, as the lock isn't queued
at all, but a simple test-and-set.

Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Reported-by: Dave Chinner <david@fromorbit.com>
Tested-by: Dave Chinner <david@fromorbit.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Waiman Long <Waiman.Long@hp.com>
Cc: stable@vger.kernel.org # v4.2+
Link: http://lkml.kernel.org/r/20150904152523.GR18673@twins.programming.kicks-ass.net
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2015-09-11 07:49:42 +02:00
..
alpha atomic: Provide atomic_{or,xor,and} 2015-07-27 14:06:24 +02:00
arc atomic: Collapse all atomic_{set,clear}_mask definitions 2015-07-27 14:06:24 +02:00
arm locking, ARM, atomics: Define our SMP atomics in terms of _relaxed() operations 2015-08-12 11:59:10 +02:00
arm64 Merge branch 'locking/arch-atomic' into locking/core, because it's ready for upstream 2015-08-12 11:44:30 +02:00
avr32 Merge branch 'locking/arch-atomic' into locking/core, because it's ready for upstream 2015-08-12 11:44:30 +02:00
blackfin atomic: Replace atomic_{set,clear}_mask() usage 2015-07-27 14:06:24 +02:00
c6x mm: clean up per architecture MM hook header files 2015-07-17 16:39:53 -07:00
cris mm: clean up per architecture MM hook header files 2015-07-17 16:39:53 -07:00
frv atomic: Collapse all atomic_{set,clear}_mask definitions 2015-07-27 14:06:24 +02:00
h8300 atomic: Collapse all atomic_{set,clear}_mask definitions 2015-07-27 14:06:24 +02:00
hexagon atomic: Provide atomic_{or,xor,and} 2015-07-27 14:06:24 +02:00
ia64 Merge branch 'locking/arch-atomic' into locking/core, because it's ready for upstream 2015-08-12 11:44:30 +02:00
m32r atomic: Replace atomic_{set,clear}_mask() usage 2015-07-27 14:06:24 +02:00
m68k atomic: Collapse all atomic_{set,clear}_mask definitions 2015-07-27 14:06:24 +02:00
metag Merge branch 'locking/arch-atomic' into locking/core, because it's ready for upstream 2015-08-12 11:44:30 +02:00
microblaze mm: clean up per architecture MM hook header files 2015-07-17 16:39:53 -07:00
mips Merge branch 'locking/arch-atomic' into locking/core, because it's ready for upstream 2015-08-12 11:44:30 +02:00
mn10300 atomic: Replace atomic_{set,clear}_mask() usage 2015-07-27 14:06:24 +02:00
nios2 mm: clean up per architecture MM hook header files 2015-07-17 16:39:53 -07:00
openrisc mm: clean up per architecture MM hook header files 2015-07-17 16:39:53 -07:00
parisc Merge branch 'locking/arch-atomic' into locking/core, because it's ready for upstream 2015-08-12 11:44:30 +02:00
powerpc Merge branch 'locking/arch-atomic' into locking/core, because it's ready for upstream 2015-08-12 11:44:30 +02:00
s390 Merge branch 'locking/arch-atomic' into locking/core, because it's ready for upstream 2015-08-12 11:44:30 +02:00
score mm: clean up per architecture MM hook header files 2015-07-17 16:39:53 -07:00
sh atomic: Collapse all atomic_{set,clear}_mask definitions 2015-07-27 14:06:24 +02:00
sparc Merge branch 'locking/arch-atomic' into locking/core, because it's ready for upstream 2015-08-12 11:44:30 +02:00
tile atomic: Provide atomic_{or,xor,and} 2015-07-27 14:06:24 +02:00
um Merge branch 'x86/urgent' into x86/asm, before applying dependent patches 2015-07-31 10:23:35 +02:00
unicore32 mm: clean up per architecture MM hook header files 2015-07-17 16:39:53 -07:00
x86 locking/qspinlock/x86: Fix performance regression under unaccelerated VMs 2015-09-11 07:49:42 +02:00
xtensa Merge branch 'locking/arch-atomic' into locking/core, because it's ready for upstream 2015-08-12 11:44:30 +02:00
.gitignore
Kconfig locking/static_keys: Add selftest 2015-08-03 11:34:16 +02:00