linux/arch/x86/um
Christian Borntraeger 79ab11cdb9 locking/core: Introduce cpu_relax_yield()
For spinning loops people do often use barrier() or cpu_relax().
For most architectures cpu_relax and barrier are the same, but on
some architectures cpu_relax can add some latency.
For example on power,sparc64 and arc, cpu_relax can shift the CPU
towards other hardware threads in an SMT environment.
On s390 cpu_relax does even more, it uses an hypercall to the
hypervisor to give up the timeslice.
In contrast to the SMT yielding this can result in larger latencies.
In some places this latency is unwanted, so another variant
"cpu_relax_lowlatency" was introduced. Before this is used in more
and more places, lets revert the logic and provide a cpu_relax_yield
that can be called in places where yielding is more important than
latency. By default this is the same as cpu_relax on all architectures.

Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Nicholas Piggin <npiggin@gmail.com>
Cc: Noam Camus <noamc@ezchip.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Will Deacon <will.deacon@arm.com>
Cc: linuxppc-dev@lists.ozlabs.org
Cc: virtualization@lists.linux-foundation.org
Cc: xen-devel@lists.xenproject.org
Link: http://lkml.kernel.org/r/1477386195-32736-2-git-send-email-borntraeger@de.ibm.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2016-11-16 10:15:09 +01:00
..
asm locking/core: Introduce cpu_relax_yield() 2016-11-16 10:15:09 +01:00
os-Linux um: add extended processor state save/restore support 2016-05-21 23:38:06 +02:00
shared/sysdep um: add extended processor state save/restore support 2016-05-21 23:38:06 +02:00
vdso um: Support kcov 2016-08-04 00:18:06 +02:00
bug.c
bugs_32.c um: get rid of pointless include "..." where include <...> will do 2012-10-09 22:28:45 +02:00
bugs_64.c um: get rid of pointless include "..." where include <...> will do 2012-10-09 22:28:45 +02:00
checksum_32.S x86: move exports to actual definitions 2016-08-07 23:47:15 -04:00
delay.c x86: Audit and remove any remaining unnecessary uses of module.h 2016-07-14 15:07:00 +02:00
elfcore.c switch elf_core_write_extra_data() to dump_emit() 2013-11-09 00:16:23 -05:00
fault.c um: don't compare a pointer to 0 2012-12-20 11:49:39 -08:00
Kconfig arch/um: make it work with defconfig and x86_64 2013-11-17 11:31:48 +01:00
ldt.c um: Do not rely on libc to provide modify_ldt() 2015-10-19 22:53:37 +02:00
Makefile x86: move exports to actual definitions 2016-08-07 23:47:15 -04:00
mem_32.c um: Cleanup mem_32/64.c headers 2015-05-31 17:31:42 +02:00
mem_64.c um: Cleanup mem_32/64.c headers 2015-05-31 17:31:42 +02:00
ptrace_32.c mm: replace access_process_vm() write parameter with gup_flags 2016-10-19 08:31:25 -07:00
ptrace_64.c mm: replace access_process_vm() write parameter with gup_flags 2016-10-19 08:31:25 -07:00
ptrace_user.c um: get rid of pointless include "..." where include <...> will do 2012-10-09 22:28:45 +02:00
setjmp_32.S
setjmp_64.S
signal.c um: extend fpstate to _xstate to support YMM registers 2016-05-21 23:37:40 +02:00
stub_32.S um: Remove dead symbol from i386 syscall stub 2015-11-06 22:49:11 +01:00
stub_64.S um: Simplify STUB_DATA loading 2015-11-06 22:49:11 +01:00
stub_segv.c um: get rid of pointless include "..." where include <...> will do 2012-10-09 22:28:45 +02:00
sys_call_table_32.c x86/syscalls: Add syscall entry qualifiers 2016-01-29 09:46:38 +01:00
sys_call_table_64.c x86/syscalls: Add syscall entry qualifiers 2016-01-29 09:46:38 +01:00
syscalls_64.c um: Add uaccess.h to syscalls_64.c 2015-05-31 17:31:56 +02:00
sysrq_32.c um: Rewrite show_stack() 2013-11-17 11:27:25 +01:00
sysrq_64.c um: Rewrite show_stack() 2013-11-17 11:27:25 +01:00
tls_32.c um: Don't pollute kernel namespace with uapi 2015-06-25 22:44:11 +02:00
tls_64.c um: Don't pollute kernel namespace with uapi 2015-06-25 22:44:11 +02:00
user-offsets.c um: extend fpstate to _xstate to support YMM registers 2016-05-21 23:37:40 +02:00