android_kernel_google_msm/arch/tile/include
Chris Metcalf 5df7085368 tile: use a more conservative __my_cpu_offset in CONFIG_PREEMPT
commit f862eefec0 upstream.

It turns out the kernel relies on barrier() to force a reload of the
percpu offset value.  Since we can't easily modify the definition of
barrier() to include "tp" as an output register, we instead provide a
definition of __my_cpu_offset as extended assembly that includes a fake
stack read to hazard against barrier(), forcing gcc to know that it
must reread "tp" and recompute anything based on "tp" after a barrier.

This fixes observed hangs in the slub allocator when we are looping
on a percpu cmpxchg_double.

A similar fix for ARMv7 was made in June in change 509eb76ebf.

Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-10-13 15:42:50 -07:00
..
arch arch/tile: fix typo in <arch/spr_def.h> 2012-04-02 12:00:14 -04:00
asm tile: use a more conservative __my_cpu_offset in CONFIG_PREEMPT 2013-10-13 15:42:50 -07:00
hv arch/tile: add hypervisor-based character driver for SPI flash ROM 2011-06-10 13:07:48 -04:00