linux/arch/m32r/include/asm
Peter Zijlstra 726328d92a locking/spinlock, arch: Update and fix spin_unlock_wait() implementations
This patch updates/fixes all spin_unlock_wait() implementations.

The update is in semantics; where it previously was only a control
dependency, we now upgrade to a full load-acquire to match the
store-release from the spin_unlock() we waited on. This ensures that
when spin_unlock_wait() returns, we're guaranteed to observe the full
critical section we waited on.

This fixes a number of spin_unlock_wait() users that (not
unreasonably) rely on this.

I also fixed a number of ticket lock versions to only wait on the
current lock holder, instead of for a full unlock, as this is
sufficient.

Furthermore; again for ticket locks; I added an smp_rmb() in between
the initial ticket load and the spin loop testing the current value
because I could not convince myself the address dependency is
sufficient, esp. if the loads are of different sizes.

I'm more than happy to remove this smp_rmb() again if people are
certain the address dependency does indeed work as expected.

Note: PPC32 will be fixed independently

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: chris@zankel.net
Cc: cmetcalf@mellanox.com
Cc: davem@davemloft.net
Cc: dhowells@redhat.com
Cc: james.hogan@imgtec.com
Cc: jejb@parisc-linux.org
Cc: linux@armlinux.org.uk
Cc: mpe@ellerman.id.au
Cc: ralf@linux-mips.org
Cc: realmz6@gmail.com
Cc: rkuo@codeaurora.org
Cc: rth@twiddle.net
Cc: schwidefsky@de.ibm.com
Cc: tony.luck@intel.com
Cc: vgupta@synopsys.com
Cc: ysato@users.sourceforge.jp
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2016-06-14 11:55:15 +02:00
..
m32104ut
m32700ut
mappi2
mappi3
opsput
addrspace.h
asm-offsets.h m32r: Autogenerate offsets in struct thread_info 2015-04-12 20:58:24 +02:00
assembler.h
atomic.h atomic, arch: Audit atomic_{read,set}() 2015-09-23 09:54:28 +02:00
barrier.h arch: Clean up asm/barrier.h implementations using asm-generic/barrier.h 2014-01-12 10:37:15 +01:00
bitops.h arch,m32r: Convert smp_mb__*() 2014-04-18 14:20:36 +02:00
bug.h
bugs.h
cache.h
cachectl.h
cacheflush.h
checksum.h ipv4: Update parameters for csum_tcpudp_magic to their original types 2016-03-13 23:55:13 -04:00
cmpxchg.h arch: Remove __ARCH_HAVE_CMPXCHG 2015-05-13 10:55:42 +02:00
current.h
dcache_clear.h
delay.h
device.h
div64.h
dma.h
elf.h default SET_PERSONALITY() in linux/elf.h 2013-02-26 02:46:08 -05:00
emergency-restart.h
fb.h
flat.h
ftrace.h
futex.h
hardirq.h hardirq: Make hardirq bits generic 2013-11-13 20:21:46 +01:00
hw_irq.h
io.h m32r: add io*_rep helpers 2015-12-29 17:45:49 -08:00
irq_regs.h
irq.h
irqflags.h
Kbuild m32r: fix build failure 2015-12-29 17:45:49 -08:00
kdebug.h
kmap_types.h
linkage.h
local64.h
local.h
m32r_mp_fpga.h
m32r.h
m32102.h
mc146818rtc.h
mmu_context.h treewide: fix "distingush" typo 2013-10-14 15:38:33 +02:00
mmu.h
mmzone.h
mutex.h
page.h
pci.h
percpu.h
pgalloc.h m32r: handle pgtable_page_ctor() fail 2013-11-15 09:32:17 +09:00
pgtable-2level.h mm: add missing __PAGETABLE_{PUD,PMD}_FOLDED defines 2015-02-28 09:57:51 -08:00
pgtable.h mm: make FIRST_USER_ADDRESS unsigned long on all archs 2015-02-11 17:06:03 -08:00
processor.h arch, locking: Ciao arch_mutex_cpu_relax() 2014-07-17 12:32:47 +02:00
ptrace.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal 2012-12-20 18:05:28 -08:00
rtc.h
s1d13806.h
segment.h
serial.h
setup.h UAPI: (Scripted) Disintegrate arch/m32r/include/asm 2012-12-19 16:07:18 +00:00
shmparam.h
signal.h consolidate kernel-side struct sigaction declarations 2013-02-03 15:09:22 -05:00
smp.h
spinlock_types.h
spinlock.h locking/spinlock, arch: Update and fix spin_unlock_wait() implementations 2016-06-14 11:55:15 +02:00
string.h
switch_to.h
syscall.h
termios.h UAPI: (Scripted) Disintegrate arch/m32r/include/asm 2012-12-19 16:07:18 +00:00
thread_info.h m32r: Remove signal translation and exec_domain 2015-04-12 20:58:25 +02:00
timex.h
tlb.h
tlbflush.h
topology.h
types.h UAPI: (Scripted) Disintegrate arch/m32r/include/asm 2012-12-19 16:07:18 +00:00
uaccess.h mm/uaccess, mm/fault: Clarify that uaccess may only sleep if pagefaults are enabled 2015-05-19 08:39:14 +02:00
ucontext.h
unaligned.h
unistd.h consolidate cond_syscall and SYSCALL_ALIAS declarations 2013-03-03 22:55:19 -05:00
user.h
vga.h
xor.h