android_kernel_google_msm/arch/tile
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
..
configs arch/tile/configs: convert to minimal configs via "make savedefconfig" 2012-03-14 14:33:16 -04:00
include tile: use a more conservative __my_cpu_offset in CONFIG_PREEMPT 2013-10-13 15:42:50 -07:00
kernel tile: expect new initramfs name from hypervisor file system 2013-04-05 10:04:14 -07:00
kvm virtio: expose for non-virtualization users too 2011-07-23 16:20:30 +09:30
lib tilepro: work around module link error with gcc 4.7 2013-06-27 11:27:30 -07:00
mm arch/tile: remove bogus performance optimization 2012-04-02 12:13:59 -04:00
Kbuild
Kconfig tilegx: enable SYSCALL_WRAPPERS support 2012-05-18 13:33:24 -04:00
Kconfig.debug lib: consolidate DEBUG_STACK_USAGE option 2011-05-25 08:39:54 -07:00
Makefile arch/tile: avoid generating .eh_frame information in modules 2012-10-28 10:14:12 -07:00