linux_dsm_epyc7002/arch/arm/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
..
hardware ARM: MM: Add DT binding for Feroceon L2 cache 2014-02-22 20:43:49 +00:00
mach
xen xen/grant-table: Refactor gnttab_[un]map_refs to avoid m2p_override 2014-03-18 14:40:19 +00:00
arch_timer.h
asm-offsets.h
assembler.h ARM: 8018/1: Add {inc,dec}_preempt_count asm macros 2014-04-09 13:08:08 +01:00
atomic.h ARM: 7983/1: atomics: implement a better __atomic_add_unless for v6+ 2014-02-25 11:35:08 +00:00
barrier.h
bitops.h
bL_switcher.h
bug.h
bugs.h
cache.h
cacheflush.h ARM: 7957/1: add DSB after icache flush in __flush_icache_all() 2014-02-17 23:09:00 +00:00
cachetype.h
checksum.h
clkdev.h
cmpxchg.h ARM: 7984/1: prefetch: add prefetchw invocations for barriered atomics 2014-02-25 11:30:20 +00:00
compiler.h
cp15.h
cpu.h
cpuidle.h
cputype.h ARM: 8015/1: Add cpu_is_pj4 to distinguish PJ4 because it has some differences with V7 2014-04-08 17:55:27 +01:00
cti.h
delay.h
device.h
div64.h ARM: 8027/1: fix do_div() bug in big-endian systems 2014-04-22 22:23:57 +01:00
dma-contiguous.h
dma-iommu.h arm: dma-mapping: remove order parameter from arm_iommu_create_mapping() 2014-02-28 11:55:18 +01:00
dma-mapping.h
dma.h
domain.h
ecard.h
edac.h
elf.h
entry-macro-multi.S
exception.h
fb.h
fiq.h
firmware.h ARM: firmware: add prepare_idle() operation 2014-02-18 13:46:42 -07:00
fixmap.h
flat.h
floppy.h ARM: 7996/1: floppy.h: remove deprecated IRQF_DISABLED 2014-03-12 10:32:29 +00:00
fncpy.h
fpstate.h
ftrace.h
futex.h ARM: 7984/1: prefetch: add prefetchw invocations for barriered atomics 2014-02-25 11:30:20 +00:00
glue-cache.h
glue-df.h
glue-pf.h
glue-proc.h
glue.h
gpio.h
hardirq.h
highmem.h
hugetlb-3level.h
hugetlb.h
hw_breakpoint.h ARM: 7948/1: hw_breakpoint: Add ARMv8 support 2014-02-10 11:48:05 +00:00
hw_irq.h
hwcap.h ARM: 7981/1: add support for AT_HWCAP2 ELF auxv entry 2014-02-25 11:40:48 +00:00
hypervisor.h
ide.h
idmap.h
io.h
irq.h
irqflags.h
jump_label.h ARM: 7989/1: Delete asm/system.h 2014-02-25 11:33:37 +00:00
Kbuild locking/mcs: Allow architecture specific asm files to be used for contended case 2014-02-09 21:18:52 +01:00
kexec.h
kgdb.h
kmap_types.h
kprobes.h ARM: Make arch_specific_insn a define for new arch_probes_insn structure 2014-03-18 16:39:40 -04:00
kvm_arm.h ARM: KVM: trap VM system registers until MMU and caches are ON 2014-03-03 01:15:24 +00:00
kvm_asm.h ARM: KVM: add world-switch for AMAIR{0,1} 2014-03-03 01:15:24 +00:00
kvm_coproc.h
kvm_emulate.h
kvm_host.h ARM: KVM: introduce per-vcpu HYP Configuration Register 2014-03-03 01:15:23 +00:00
kvm_mmio.h
kvm_mmu.h ARM: KVM: force cache clean on page fault when caches are off 2014-03-03 01:15:22 +00:00
kvm_psci.h
limits.h
linkage.h
mach-types.h
mc146818rtc.h
mcpm.h ARM: 8032/1: bL_switcher: fix validation check before its activation 2014-04-22 22:23:59 +01:00
memblock.h
memory.h Merge branches 'amba', 'fixes', 'misc', 'mmci', 'unstable/omap-dma' and 'unstable/sa11x0' into for-next 2014-04-04 00:33:32 +01:00
mmu_context.h
mmu.h
module.h
mpu.h
mtd-xip.h
mutex.h
neon.h
nwflash.h
opcodes-sec.h
opcodes-virt.h
opcodes.h
outercache.h
page-nommu.h
page.h
pci.h
percpu.h
perf_event.h
pgalloc.h
pgtable-2level-hwdef.h
pgtable-2level-types.h
pgtable-2level.h ARM: 7954/1: mm: remove remaining domain support from ARMv6 2014-02-10 11:48:13 +00:00
pgtable-3level-hwdef.h
pgtable-3level-types.h
pgtable-3level.h ARM: 7950/1: mm: Fix stage-2 device memory attributes 2014-02-10 11:44:05 +00:00
pgtable-hwdef.h
pgtable-nommu.h
pgtable.h ARM: 7985/1: mm: implement pte_accessible for faulting mappings 2014-02-25 11:32:40 +00:00
pmu.h ARM: perf: add hook for event index clearing 2014-02-21 11:11:08 +00:00
probes.h ARM: Make arch_specific_insn a define for new arch_probes_insn structure 2014-03-18 16:39:40 -04:00
proc-fns.h
processor.h
procinfo.h
prom.h
psci.h
ptrace.h Merge branch 'uprobes-v7' of git://git.linaro.org/people/dave.long/linux into devel-stable 2014-03-19 20:15:46 +00:00
scatterlist.h
seccomp.h
setup.h
shmparam.h
signal.h
smp_plat.h
smp_scu.h
smp_twd.h
smp.h ARM: SoC specific changes 2014-04-05 14:19:54 -07:00
sparsemem.h
spinlock_types.h
spinlock.h ARM: 7955/1: spinlock: ensure we have a compiler barrier before sev 2014-02-10 11:44:50 +00:00
stackprotector.h
stacktrace.h
string.h
suspend.h
swab.h
switch_to.h
sync_bitops.h ARM: 7989/1: Delete asm/system.h 2014-02-25 11:33:37 +00:00
syscall.h audit: use uapi/linux/audit.h for AUDIT_ARCH declarations 2014-03-20 10:11:59 -04:00
system_info.h
system_misc.h
tcm.h
therm.h
thread_info.h ARM: add uprobes support 2014-03-18 16:39:40 -04:00
thread_notify.h
timex.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
tls.h
topology.h sched: Remove unused mc_capable() and smt_capable() 2014-03-11 12:05:45 +01:00
traps.h
trusted_foundations.h ARM: trusted_foundations: fallback when TF support is missing 2014-02-18 13:46:32 -07:00
types.h
uaccess.h ARM: 7951/1: uaccess: use CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS 2014-02-10 11:48:10 +00:00
ucontext.h
unified.h
unistd.h ARM: 8007/1: Remove extraneous kcmp syscall ignore 2014-03-19 20:20:37 +00:00
unwind.h
uprobes.h ARM: add uprobes support 2014-03-18 16:39:40 -04:00
user.h
v7m.h
vfp.h
vfpmacros.h
vga.h
virt.h
word-at-a-time.h
xor.h