2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2025-01-06 12:44:14 +08:00
linux-next/arch/powerpc
Benjamin Herrenschmidt b97021f855 powerpc: Fix atomic_xxx_return barrier semantics
The Documentation/memory-barriers.txt document requires that atomic
operations that return a value act as a memory barrier both before
and after the actual atomic operation.

Our current implementation doesn't guarantee this. More specifically,
while a load following the isync can not be issued before stwcx. has
completed, that completion doesn't architecturally means that the
result of stwcx. is visible to other processors (or any previous stores
for that matter) (typically, the other processors L1 caches can still
hold the old value).

This has caused an actual crash in RCU torture testing on Power 7

This fixes it by changing those atomic ops to use new macros instead
of RELEASE/ACQUIRE barriers, called ATOMIC_ENTRY and ATMOIC_EXIT barriers,
which are then defined respectively to lwsync and sync.

I haven't had a chance to measure the performance impact (or rather
what I measured with kernel compiles is in the noise, I yet have to
find a more precise benchmark)

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
2011-11-17 16:26:07 +11:00
..
boot Merge remote-tracking branch 'agust/next' into merge 2011-11-08 14:53:55 +11:00
configs Merge remote-tracking branch 'agust/next' into merge 2011-11-08 14:53:55 +11:00
include/asm powerpc: Fix atomic_xxx_return barrier semantics 2011-11-17 16:26:07 +11:00
kernel powerpc/book3e-64: Fix debug support for userspace 2011-11-17 16:26:07 +11:00
kvm powerpc: Add hvcall.h include to book3s_hv.c 2011-11-16 14:47:54 +11:00
lib powerpc: Copy down exception vectors after feature fixups 2011-11-16 14:47:54 +11:00
math-emu powerpc/math_emu/efp: Look for errata handler when type mismatches 2011-10-06 23:36:47 -05:00
mm powerpc/numa: NUMA topology support for PowerNV 2011-11-08 14:51:46 +11:00
net net: filter: BPF 'JIT' compiler for PPC64 2011-07-21 12:38:32 -07:00
oprofile powerpc/oprofile: Handle events that raise an exception without overflowing 2011-05-26 13:38:57 +10:00
platforms powerpc/ps3: Fix SMP lockdep boot warning 2011-11-16 14:47:54 +11:00
sysdev Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux 2011-11-15 14:47:28 -02:00
xmon Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux 2011-11-06 19:44:47 -08:00
Kconfig powerpc/4xx: Fix typos in kexec config dependencies 2011-11-16 14:47:54 +11:00
Kconfig.debug powerpc/powernv: Support for OPAL console 2011-09-20 16:09:54 +10:00
Makefile powerpc: Remove buggy 9-year-old test for binutils < 2.12.1 2011-11-17 16:26:07 +11:00
relocs_check.pl powerpc: Check for unsupported relocs when using CONFIG_RELOCATABLE 2009-09-24 15:31:40 +10:00