alistair23-linux/arch/tile/include/asm
Chris Metcalf f862eefec0 tile: use a more conservative __my_cpu_offset in CONFIG_PREEMPT
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.

Cc: stable@vger.kernel.org
Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
2013-09-30 10:34:41 -04:00
..
asm-offsets.h
atomic.h tile: include: asm: use 'long long' instead of 'u64' for atomic64_t and its related functions 2013-09-27 16:08:56 -04:00
atomic_32.h tile: include: asm: use 'long long' instead of 'u64' for atomic64_t and its related functions 2013-09-27 16:08:56 -04:00
atomic_64.h tile: rework <asm/cmpxchg.h> 2013-09-06 13:06:25 -04:00
backtrace.h
barrier.h tile: remove support for TILE64 2013-09-03 14:53:29 -04:00
bitops.h tile: use asm-generic/bitops/builtin-*.h 2013-09-03 14:53:27 -04:00
bitops_32.h tile: rework <asm/cmpxchg.h> 2013-09-06 13:06:25 -04:00
bitops_64.h tile: rework <asm/cmpxchg.h> 2013-09-06 13:06:25 -04:00
cache.h tile: make __write_once a synonym for __read_mostly 2013-09-03 14:53:32 -04:00
cacheflush.h tile: convert uses of "inv" to "finv" 2013-07-31 11:51:19 -04:00
checksum.h arch/tile: break out the "csum a long" function to <asm/checksum.h> 2012-07-11 16:04:57 -04:00
cmpxchg.h tile: include: asm: use 'long long' instead of 'u64' for atomic64_t and its related functions 2013-09-27 16:08:56 -04:00
compat.h tile: work around bug in the generic sys_llseek 2013-03-04 11:19:09 -05:00
current.h
delay.h
device.h tile PCI RC: make default consistent DMA mask 32-bit 2013-09-03 14:53:37 -04:00
dma-mapping.h tile PCI RC: make default consistent DMA mask 32-bit 2013-09-03 14:53:37 -04:00
dma.h
edac.h
elf.h tile: remove support for TILE64 2013-09-03 14:53:29 -04:00
fixmap.h tile: remove set/clear_fixmap APIs 2013-08-30 11:56:38 -04:00
ftrace.h tile: support ftrace on tilegx 2013-08-30 10:20:13 -04:00
futex.h tile: use proper .align directives on __ex_table sections 2013-08-30 11:56:11 -04:00
hardirq.h
hardwall.h UAPI: (Scripted) Disintegrate arch/tile/include/asm 2012-10-09 09:47:47 +01:00
highmem.h
homecache.h tile: remove support for TILE64 2013-09-03 14:53:29 -04:00
hugetlb.h mm/hugetlb: add more arch-defined huge_pte functions 2013-04-29 15:54:33 -07:00
hv_driver.h
ide.h
io.h tile: fix some -Wsign-compare warnings 2013-08-30 11:56:50 -04:00
irq.h arch/tile: use 0 for IRQ_RESCHEDULE instead of 1 2012-04-02 12:00:16 -04:00
irqflags.h tile: support CONFIG_PREEMPT 2013-08-13 16:26:01 -04:00
Kbuild tile: use standard 'generic-y' model for <asm/hw_irq.h> 2013-09-03 14:52:25 -04:00
kdebug.h tile: support kprobes on tilegx 2013-08-30 11:55:53 -04:00
kexec.h arch/tile: support kexec() for tilegx 2012-05-25 12:48:25 -04:00
kgdb.h tilegx: support KGDB 2013-09-03 14:51:26 -04:00
kmap_types.h tile: remove km_type definitions 2012-07-24 15:27:32 +08:00
kprobes.h tile: support kprobes on tilegx 2013-08-30 11:55:53 -04:00
linkage.h
mmu.h tile: implement gettimeofday() via vDSO 2013-08-13 16:26:21 -04:00
mmu_context.h tile: add virt_to_kpte() API and clean up and document behavior 2013-09-03 14:52:13 -04:00
mmzone.h tile: fix some -Wsign-compare warnings 2013-08-30 11:56:50 -04:00
module.h arch/tile: Allow tilegx to build with either 16K or 64K page size 2012-05-25 12:48:24 -04:00
page.h tile: remove HUGE_VMAP dead code 2013-09-13 11:15:24 -04:00
pci.h tile PCI RC: add comment about "PCI hole" problem 2013-09-03 14:52:20 -04:00
percpu.h tile: use a more conservative __my_cpu_offset in CONFIG_PREEMPT 2013-09-30 10:34:41 -04:00
pgalloc.h arch/tile: Allow tilegx to build with either 16K or 64K page size 2012-05-25 12:48:24 -04:00
pgtable.h consolidate io_remap_pfn_range definitions 2013-06-29 12:46:35 +04:00
pgtable_32.h tile: remove HUGE_VMAP dead code 2013-09-13 11:15:24 -04:00
pgtable_64.h tile: remove HUGE_VMAP dead code 2013-09-13 11:15:24 -04:00
processor.h tile: remove support for TILE64 2013-09-03 14:53:29 -04:00
ptrace.h tile: don't assume user privilege is zero 2013-09-03 14:45:52 -04:00
sections.h tile: implement gettimeofday() via vDSO 2013-08-13 16:26:21 -04:00
setup.h tile: various console improvements 2013-08-12 14:46:18 -04:00
sigframe.h
signal.h UAPI: (Scripted) Disintegrate arch/tile/include/asm 2012-10-09 09:47:47 +01:00
smp.h tile: remove support for TILE64 2013-09-03 14:53:29 -04:00
spinlock.h
spinlock_32.h Disintegrate asm/system.h for Tile 2012-03-28 18:30:03 +01:00
spinlock_64.h tile: fix some -Wsign-compare warnings 2013-08-30 11:56:50 -04:00
spinlock_types.h
stack.h arch/tile: various bugs in stack backtracer 2012-04-02 12:12:45 -04:00
string.h tile: optimize strnlen using SIMD instructions 2013-08-01 20:08:51 -04:00
switch_to.h tile: support GENERIC_KERNEL_THREAD and GENERIC_KERNEL_EXECVE 2012-10-20 13:13:29 -04:00
syscall.h tile: move declaration of sys_call_table to <asm/syscall.h> 2013-03-21 15:39:35 -04:00
syscalls.h tile: move declaration of sys_call_table to <asm/syscall.h> 2013-03-21 15:39:35 -04:00
thread_info.h tile: fast-path unaligned memory access for tilegx 2013-08-13 16:04:10 -04:00
tile-desc.h
tile-desc_32.h
tile-desc_64.h
timex.h Disintegrate asm/system.h for Tile 2012-03-28 18:30:03 +01:00
tlb.h
tlbflush.h arch/tile: support multiple huge page sizes dynamically 2012-05-25 12:48:27 -04:00
topology.h tile / cpu topology: remove stale Macro arch_provides_topology_pointers 2013-07-29 13:12:45 -07:00
traps.h tile: remove support for TILE64 2013-09-03 14:53:29 -04:00
uaccess.h tile: use proper .align directives on __ex_table sections 2013-08-30 11:56:11 -04:00
unaligned.h tile: improve big-endian support 2013-08-13 16:26:05 -04:00
unistd.h burying unused conditionals 2013-02-14 09:21:15 -05:00
user.h
vdso.h tile: implement gettimeofday() via vDSO 2013-08-13 16:26:21 -04:00
vga.h