android_kernel_xiaomi_sm8450/arch/arm
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
..
boot The i.MX fixes for 4.9: 2016-10-29 11:08:50 -07:00
common Merge branch 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm 2016-10-06 07:59:37 -07:00
configs ARM: multi_v7_defconfig: Enable Intel e1000e driver 2016-10-17 15:03:20 -07:00
crypto Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2016-10-10 11:19:47 +08:00
firmware
include locking/core: Introduce cpu_relax_yield() 2016-11-16 10:15:09 +01:00
kernel ARM: wire up new pkey syscalls 2016-10-19 10:18:47 +01:00
kvm arm/arm64: KVM: Map the BSS at HYP 2016-10-21 17:26:24 +01:00
lib Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2016-10-14 18:19:05 -07:00
mach-alpine
mach-artpec
mach-asm9260
mach-aspeed
mach-at91 ARM: stop *MIGHT_HAVE_PCI* config from being selected redundantly 2016-09-21 22:45:05 +02:00
mach-axxia ARM: select PCI_DOMAINS config from ARCH_MULTIPLATFORM 2016-09-21 22:45:13 +02:00
mach-bcm ARM: SoC platform updates for v4.9 2016-10-07 21:18:42 -07:00
mach-berlin
mach-clps711x ARM: clps711x: remove extraneous files 2016-09-02 18:15:00 +02:00
mach-cns3xxx ARM: select PCI_DOMAINS config from ARCH_MULTIPLATFORM 2016-09-21 22:45:13 +02:00
mach-davinci ARM: DT updates for v4.9 2016-10-07 21:29:04 -07:00
mach-digicolor
mach-dove
mach-ebsa110
mach-efm32
mach-ep93xx
mach-exynos ARM: SoC platform updates for v4.9 2016-10-07 21:18:42 -07:00
mach-footbridge ARM: document and update UNCACHEABLE_ADDR definitions 2016-08-26 15:10:19 +01:00
mach-gemini
mach-highbank
mach-hisi
mach-imx ARM: imx: mach-imx6q: Fix the PHY ID mask for AR8031 2016-10-24 21:26:01 +08:00
mach-integrator ARM: SoC: late DT updates for v4.9 2016-10-07 21:34:49 -07:00
mach-iop13xx
mach-iop32x
mach-iop33x
mach-ixp4xx
mach-keystone ARM: select PCI_DOMAINS config from ARCH_MULTIPLATFORM 2016-09-21 22:45:13 +02:00
mach-ks8695
mach-lpc18xx
mach-lpc32xx
mach-mediatek
mach-meson
mach-mmp
mach-moxart ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-mv78xx0 ARM: mv78xx0: simplify ethernet device creation 2016-09-14 16:35:37 +02:00
mach-mvebu mvebu fixes for 4.8 (part 3) 2016-10-17 13:44:03 -07:00
mach-mxs ARM: mxs: remove obsolete startup code for TX28 2016-08-09 14:01:41 +08:00
mach-netx
mach-nomadik ARM: nomadik: select MFD_SYSCON 2016-09-09 23:15:50 +02:00
mach-nspire DeviceTree update for 4.8: 2016-07-30 11:32:01 -07:00
mach-omap1 ARM: OMAP1: use IS_ENABLED() instead of checking for built-in or module 2016-08-26 08:41:59 -07:00
mach-omap2 ARM: SoC cleanups for v4.9 2016-10-07 21:16:16 -07:00
mach-orion5x ARM: orion5x: remove extraneous NO_IRQ 2016-09-14 16:36:20 +02:00
mach-oxnas ARM: oxnas: select reset controller framework 2016-08-10 22:42:32 +02:00
mach-picoxcell ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-prima2 ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-pxa ARM: SoC platform updates for v4.9 2016-10-07 21:18:42 -07:00
mach-qcom ARM: qcom: Cleanup/Remove unnecessary board file 2016-08-23 15:46:05 -05:00
mach-realview This deletes the realview boardfiles, consolidates a bit 2016-09-02 18:12:09 +02:00
mach-rockchip ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-rpc ARM: document and update UNCACHEABLE_ADDR definitions 2016-08-26 15:10:19 +01:00
mach-s3c24xx ARM: SoC platform updates for v4.9 2016-10-07 21:18:42 -07:00
mach-s3c64xx ARM: s3c64xx: Delete unnecessary assignment for the field "owner" 2016-08-16 08:16:43 +02:00
mach-s5pv210 ARM: don't include removed directories 2016-08-10 22:42:18 +02:00
mach-sa1100 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2016-10-07 09:12:19 -07:00
mach-shmobile ARM: SoC platform updates for v4.9 2016-10-07 21:18:42 -07:00
mach-socfpga
mach-spear ARM: stop *MIGHT_HAVE_PCI* config from being selected redundantly 2016-09-21 22:45:05 +02:00
mach-sti
mach-stm32
mach-sunxi ARM: sunxi: Support the Nextthing GR8 2016-09-08 14:32:23 +02:00
mach-tango
mach-tegra ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-u300 ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-uniphier ARM: uniphier: select ARCH_HAS_RESET_CONTROLLER 2016-10-22 18:25:35 +09:00
mach-ux500 ARM: SoC driver updates for v4.8 2016-08-01 18:36:01 -04:00
mach-versatile ARM: stop *MIGHT_HAVE_PCI* config from being selected redundantly 2016-09-21 22:45:05 +02:00
mach-vexpress ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-vt8500 ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-w90x900
mach-zx
mach-zynq
mm ARM: fix oops when using older ARMv4T CPUs 2016-10-19 10:18:43 +01:00
net
nwfpe
oprofile
plat-iop
plat-omap
plat-orion ARM: orion: simplify orion_ge00_switch_init 2016-09-14 16:36:13 +02:00
plat-pxa ARM: pxa: remove platform dma code 2016-08-09 08:16:58 +02:00
plat-samsung ARM: EXYNOS: Remove unused DMC and CMU offsets and their mappings 2016-08-24 06:42:27 +02:00
plat-versatile
probes
tools
vdso
vfp arm: Convert VFP hotplug notifiers to state machine 2016-07-15 10:40:22 +02:00
xen arm/xen: fix SMP guests boot 2016-09-14 14:39:13 +01:00
Kconfig Merge branch 'akpm' (patches from Andrew) 2016-10-07 21:38:00 -07:00
Kconfig-nommu
Kconfig.debug Renesas ARM Based SoC Updates for v4.9 2016-09-15 00:27:27 +02:00
Makefile Merge branches 'misc' and 'sa1111-base' into for-linus 2016-10-06 08:56:43 +01:00