linux/arch/sh/include/asm
Linus Torvalds 1cf35d4771 mm: split 'tlb_flush_mmu()' into tlb flushing and memory freeing parts
The mmu-gather operation 'tlb_flush_mmu()' has done two things: the
actual tlb flush operation, and the batched freeing of the pages that
the TLB entries pointed at.

This splits the operation into separate phases, so that the forced
batched flushing done by zap_pte_range() can now do the actual TLB flush
while still holding the page table lock, but delay the batched freeing
of all the pages to after the lock has been dropped.

This in turn allows us to avoid a race condition between
set_page_dirty() (as called by zap_pte_range() when it finds a dirty
shared memory pte) and page_mkclean(): because we now flush all the
dirty page data from the TLB's while holding the pte lock,
page_mkclean() will be held up walking the (recently cleaned) page
tables until after the TLB entries have been flushed from all CPU's.

Reported-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Tested-by: Dave Hansen <dave.hansen@intel.com>
Acked-by: Hugh Dickins <hughd@google.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: Tony Luck <tony.luck@intel.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2014-04-25 16:05:40 -07:00
..
adc.h
addrspace.h
alignment.h
asm-offsets.h
atomic-grb.h
atomic-irq.h Disintegrate asm/system.h for SH 2012-03-28 18:30:03 +01:00
atomic-llsc.h
atomic.h sh: Fix up tracepoint build fallout from static key introduction. 2012-04-27 11:12:38 +09:30
barrier.h arch: Clean up asm/barrier.h implementations using asm-generic/barrier.h 2014-01-12 10:37:15 +01:00
bitops-grb.h
bitops-llsc.h
bitops-op32.h
bitops.h Disintegrate asm/system.h for SH 2012-03-28 18:30:03 +01:00
bl_bit_32.h Disintegrate asm/system.h for SH 2012-03-28 18:30:03 +01:00
bl_bit_64.h Disintegrate asm/system.h for SH 2012-03-28 18:30:03 +01:00
bl_bit.h UAPI: (Scripted) Convert #include "..." to #include <path/...> in kernel system headers 2012-10-02 18:01:25 +01:00
bug.h sh: Consolidate die definitions for trap handlers. 2012-06-14 14:18:51 +09:00
bugs.h
cache_insns_32.h Disintegrate asm/system.h for SH 2012-03-28 18:30:03 +01:00
cache_insns_64.h Disintegrate asm/system.h for SH 2012-03-28 18:30:03 +01:00
cache_insns.h UAPI: (Scripted) Convert #include "..." to #include <path/...> in kernel system headers 2012-10-02 18:01:25 +01:00
cache.h
cacheflush.h
checksum_32.h
checksum.h UAPI: (Scripted) Convert #include "..." to #include <path/...> in kernel system headers 2012-10-02 18:01:25 +01:00
clkdev.h clk: Add common __clk_get(), __clk_put() implementations 2013-12-04 17:19:44 +01:00
clock.h sh: sh header sh_clk_ops rename 2012-03-12 22:19:10 +01:00
cmpxchg-grb.h sh: Fix up xchg/cmpxchg corruption with gUSA RB. 2011-06-08 15:22:39 +09:00
cmpxchg-irq.h Disintegrate asm/system.h for SH 2012-03-28 18:30:03 +01:00
cmpxchg-llsc.h
cmpxchg.h Disintegrate asm/system.h for SH 2012-03-28 18:30:03 +01:00
device.h sh: Defer to asm-generic/device.h. 2012-01-13 16:27:38 +09:00
dma-mapping.h sh: dma_debug: add debug_dma_mapping_error support 2012-11-28 15:29:00 +01:00
dma-register.h
dma.h sh: Kill off MAX_DMA_ADDRESS leftovers. 2012-05-19 18:50:09 +09:00
dmabrg.h
dwarf.h
elf.h sh: Fix FDPIC binary loader 2013-01-11 21:02:57 +09:00
entry-macros.S
fb.h
fixmap.h sh: use generic fixmap.h 2014-01-23 16:36:54 -08:00
flat.h
fpu.h sh: move fpu_counter into ARCH specific thread_struct 2013-11-13 12:09:13 +09:00
freq.h
ftrace.h
futex-irq.h Disintegrate asm/system.h for SH 2012-03-28 18:30:03 +01:00
futex.h futex: Sanitize futex ops argument types 2011-03-11 12:23:31 +01:00
gpio.h sh: Remove unused sh_pfc_register_info() function 2013-01-25 09:24:30 +09:00
hardirq.h
hd64461.h
heartbeat.h
hugetlb.h mm/hugetlb: add more arch-defined huge_pte functions 2013-04-29 15:54:33 -07:00
hw_breakpoint.h UAPI: (Scripted) Disintegrate arch/sh/include/asm 2012-10-09 09:47:37 +01:00
hw_irq.h atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
i2c-sh7760.h sh: edosk7760 evt2irq migration. 2012-05-18 14:52:31 +09:00
io_generic.h
io_noioport.h SH: Convert out[bwl] macros to inline functions 2012-07-12 13:12:13 +09:00
io_trapped.h Kconfig: rename HAS_IOPORT to HAS_IOPORT_MAP 2014-04-07 16:36:11 -07:00
io.h Kconfig: rename HAS_IOPORT to HAS_IOPORT_MAP 2014-04-07 16:36:11 -07:00
irq.h sh: Kill off machvec IRQ hinting. 2012-05-21 17:54:01 +09:00
irqflags.h
Kbuild locking/mcs: Allow architecture specific asm files to be used for contended case 2014-02-09 21:18:52 +01:00
kdebug.h sh64: Convert to unwinder API. 2012-05-24 15:03:46 +09:00
kexec.h
kgdb.h sh: kgdb: Unset CACHE_FLUSH_IS_SAFE for SMP. 2012-04-11 10:48:24 +09:00
kmap_types.h
kprobes.h
linkage.h
machvec.h Kconfig: rename HAS_IOPORT to HAS_IOPORT_MAP 2014-04-07 16:36:11 -07:00
mc146818rtc.h
mmu_context_32.h
mmu_context_64.h
mmu_context.h treewide: fix "distingush" typo 2013-10-14 15:38:33 +02:00
mmu.h
mmzone.h Fix node_start/end_pfn() definition for mm/page_cgroup.c 2011-06-27 14:13:09 -07:00
module.h Make most arch asm/module.h files use asm-generic/module.h 2012-09-28 14:31:03 +09:30
mutex-llsc.h arch: Make __mutex_fastpath_lock_retval return whether fastpath succeeded or not 2013-06-26 12:10:55 +02:00
mutex.h
page.h sh: Fix cached/uncaced address calculation in 29bit mode 2011-11-04 22:13:50 +09:00
pci.h PCI: collapse pcibios_resource_to_bus 2012-02-23 20:19:04 -07:00
perf_event.h
pgalloc.h sh: handle pgtable_page_ctor() fail 2013-11-15 09:32:18 +09:00
pgtable_32.h Fix common misspellings 2011-03-31 11:26:23 -03:00
pgtable_64.h sh64: Kill off unused fixed I/O mapping window. 2012-05-14 15:16:11 +09:00
pgtable-2level.h
pgtable-3level.h
pgtable.h consolidate io_remap_pfn_range definitions 2013-06-29 12:46:35 +04:00
posix_types.h UAPI: (Scripted) Disintegrate arch/sh/include/asm 2012-10-09 09:47:37 +01:00
processor_32.h sh: move fpu_counter into ARCH specific thread_struct 2013-11-13 12:09:13 +09:00
processor_64.h sh: move fpu_counter into ARCH specific thread_struct 2013-11-13 12:09:13 +09:00
processor.h UAPI: (Scripted) Convert #include "..." to #include <path/...> in kernel system headers 2012-10-02 18:01:25 +01:00
ptrace_32.h UAPI: (Scripted) Disintegrate arch/sh/include/asm 2012-10-09 09:47:37 +01:00
ptrace_64.h UAPI: (Scripted) Disintegrate arch/sh/include/asm 2012-10-09 09:47:37 +01:00
ptrace.h UAPI: (Scripted) Disintegrate arch/sh/include/asm 2012-10-09 09:47:37 +01:00
push-switch.h
reboot.h
romimage-macros.h
rtc.h
rwsem.h rwsem: Move duplicate function prototypes to linux/rwsem.h 2011-01-27 12:30:39 +01:00
seccomp.h
sections.h mtd/uclinux: Use generic __bss_stop instead of _ebss 2012-06-27 09:59:43 +02:00
segment.h
setup.h UAPI: (Scripted) Disintegrate arch/sh/include/asm 2012-10-09 09:47:37 +01:00
sfp-machine.h
sh7760fb.h
sh_bios.h
shmparam.h
siu.h sh: remove unused DMA device pointer from SIU platform data 2012-07-20 11:23:44 +05:30
smc37c93x.h
smp-ops.h
smp.h atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
sparsemem.h
spi.h
spinlock_types.h
spinlock.h
sram.h
stackprotector.h sh: initial stack protector support. 2012-04-19 15:45:57 +09:00
stacktrace.h sh: remove warning and warning_symbol from struct stacktrace_ops 2011-05-23 14:42:15 +09:00
string_32.h
string_64.h
string.h UAPI: (Scripted) Convert #include "..." to #include <path/...> in kernel system headers 2012-10-02 18:01:25 +01:00
suspend.h SH: cpuidle: check error code at init 2013-04-22 00:35:53 +02:00
switch_to_32.h Disintegrate asm/system.h for SH 2012-03-28 18:30:03 +01:00
switch_to_64.h Disintegrate asm/system.h for SH 2012-03-28 18:30:03 +01:00
switch_to.h UAPI: (Scripted) Convert #include "..." to #include <path/...> in kernel system headers 2012-10-02 18:01:25 +01:00
syscall_32.h
syscall_64.h
syscall.h UAPI: (Scripted) Convert #include "..." to #include <path/...> in kernel system headers 2012-10-02 18:01:25 +01:00
syscalls_32.h sh: push extra copy of r0-r2 for syscall parameters 2014-04-03 16:20:52 -07:00
syscalls_64.h sh: switch to generic fork/vfork/clone 2012-11-28 22:36:47 -05:00
syscalls.h UAPI: (Scripted) Convert #include "..." to #include <path/...> in kernel system headers 2012-10-02 18:01:25 +01:00
thread_info.h preempt: Make PREEMPT_ACTIVE generic 2013-11-13 20:21:47 +01:00
timex.h
tlb_64.h
tlb.h mm: split 'tlb_flush_mmu()' into tlb flushing and memory freeing parts 2014-04-25 16:05:40 -07:00
tlbflush.h
topology.h sched/numa: Rewrite the CONFIG_NUMA sched domain support 2012-05-09 15:00:55 +02:00
traps_32.h sh: don't pass saved userspace state to exception handlers 2014-04-03 16:20:52 -07:00
traps_64.h sh64: Provide EXPEVT helper. 2012-05-14 13:04:08 +09:00
traps.h UAPI: (Scripted) Convert #include "..." to #include <path/...> in kernel system headers 2012-10-02 18:01:25 +01:00
types.h UAPI: (Scripted) Disintegrate arch/sh/include/asm 2012-10-09 09:47:37 +01:00
uaccess_32.h sh: use the new generic strnlen_user() function 2012-06-13 10:28:37 +09:00
uaccess_64.h sh: use the new generic strnlen_user() function 2012-06-13 10:28:37 +09:00
uaccess.h UAPI: (Scripted) Convert #include "..." to #include <path/...> in kernel system headers 2012-10-02 18:01:25 +01:00
unaligned-sh4a.h Fix common misspellings 2011-03-31 11:26:23 -03:00
unaligned.h
uncached.h
unistd.h consolidate cond_syscall and SYSCALL_ALIAS declarations 2013-03-03 22:55:19 -05:00
unwinder.h
user.h
vga.h
vmlinux.lds.h
watchdog.h
word-at-a-time.h sh: use the new generic strnlen_user() function 2012-06-13 10:28:37 +09:00