linux_dsm_epyc7002/arch/xtensa/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
..
asm-offsets.h
asmmacro.h xtensa: fixes for configs without loop option 2015-11-02 18:02:47 +03:00
atomic.h atomic, arch: Audit atomic_{read,set}() 2015-09-23 09:54:28 +02:00
barrier.h xtensa: define __smp_xxx 2016-01-12 20:46:58 +02:00
bitops.h
bootparam.h
bugs.h
cache.h
cacheasm.h xtensa: fix build for configs without cache options 2015-11-02 18:02:51 +03:00
cacheflush.h xtensa: support DMA to high memory 2015-11-09 01:25:37 +03:00
checksum.h ipv6: Pass proto to csum_ipv6_magic as __u8 instead of unsigned short 2016-03-13 23:55:13 -04:00
cmpxchg.h xtensa: implement fake NMI 2015-08-17 07:33:39 +03:00
coprocessor.h
current.h
delay.h
device.h xtensa: reimplement DMA API using common helpers 2015-08-17 07:31:00 +03:00
dma-mapping.h dma-mapping: remove <asm-generic/dma-coherent.h> 2016-01-20 17:09:18 -08:00
dma.h
elf.h
fb.h
fixmap.h xtensa: support aliasing cache in k[un]map_atomic 2014-08-14 11:59:21 +04:00
flat.h
ftrace.h
futex.h
highmem.h xtensa: fix kmap_prot definition 2014-12-09 03:22:57 +03:00
hw_breakpoint.h xtensa: support hardware breakpoints/watchpoints 2016-03-11 08:53:32 +00:00
hw_irq.h
initialize_mmu.h xtensa: fix build for configs without cache options 2015-11-02 18:02:51 +03:00
io.h xtensa: support ioremap for memory outside KIO region 2016-01-11 17:37:36 +03:00
irq.h
irqflags.h xtensa: support hardware breakpoints/watchpoints 2016-03-11 08:53:32 +00:00
Kbuild locking/rwsem, xtensa: Drop superfluous arch specific implementation 2016-04-13 10:42:18 +02:00
mmu_context.h xtensa: nommu: move init_mmu stub to nommu_context.h 2014-10-21 13:28:44 +04:00
mmu.h
module.h
mutex.h
mxregs.h
nommu_context.h xtensa: nommu: move init_mmu stub to nommu_context.h 2014-10-21 13:28:44 +04:00
page.h xtensa: nommu: clean up memory map dump 2014-10-21 13:28:58 +04:00
param.h
pci-bridge.h
pci.h PCI: Move pci_dma_* helpers to common code 2016-03-07 10:40:02 -06:00
perf_event.h
pgalloc.h
pgtable.h xtensa: nommu: fix USER_RING definition 2015-11-02 18:02:58 +03:00
platform.h
processor.h xtensa: support hardware breakpoints/watchpoints 2016-03-11 08:53:32 +00:00
ptrace.h
regs.h xtensa: support hardware breakpoints/watchpoints 2016-03-11 08:53:32 +00:00
segment.h
serial.h
shmparam.h
signal.h
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
stacktrace.h xtensa: move oprofile stack tracing to stacktrace.c 2015-08-17 07:32:49 +03:00
string.h
switch_to.h
syscall.h
sysmem.h
thread_info.h xtensa: support hardware breakpoints/watchpoints 2016-03-11 08:53:32 +00:00
timex.h xtensa: use XTENSA_INT_LEVEL macro in asm/timex.h 2016-01-11 17:32:40 +03:00
tlb.h
tlbflush.h
traps.h xtensa: support hardware breakpoints/watchpoints 2016-03-11 08:53:32 +00:00
types.h
uaccess.h xtensa: macro whitespace fixes 2015-01-13 15:24:10 +02:00
ucontext.h
unaligned.h
unistd.h
user.h
vectors.h xtensa: drop unused sections and remapped reset handlers 2015-11-03 17:19:39 +03:00
vga.h