Files
kernel_amazon_mt8127-common/arch/tile/include/asm
Chris Metcalf bc30c3576d tile: use a more conservative __my_cpu_offset in CONFIG_PREEMPT
commit f862eefec0b68e099a9fa58d3761ffb10bad97e1 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 16:08:34 -07:00
..
2012-11-13 15:48:27 -05:00
2012-07-24 15:27:32 +08:00
2013-01-03 15:57:13 -08:00
2012-11-28 21:53:36 -05:00
2013-02-14 09:21:15 -05:00