aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs
diff options
context:
space:
mode:
authorChris Metcalf <cmetcalf@tilera.com>2013-09-26 13:24:53 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-10-13 14:51:08 -0700
commita9f1434b8e47776e2b6d42a5556516209f5ba3ae (patch)
tree3a4b2e1d35eb04faa988be590678841ba0f7d218 /fs/btrfs
parentb8a3fdb8cfff87da926b868c3263a8a51c02af47 (diff)
downloadkernel_samsung_smdk4412-a9f1434b8e47776e2b6d42a5556516209f5ba3ae.zip
kernel_samsung_smdk4412-a9f1434b8e47776e2b6d42a5556516209f5ba3ae.tar.gz
kernel_samsung_smdk4412-a9f1434b8e47776e2b6d42a5556516209f5ba3ae.tar.bz2
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 509eb76ebf97. Signed-off-by: Chris Metcalf <cmetcalf@tilera.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'fs/btrfs')
0 files changed, 0 insertions, 0 deletions