linux/arch/s390
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
..
appldata s390/appldata_os: fix cpu array size calculation 2014-03-07 15:25:55 +01:00
boot s390/boot: Install bzImage as default kernel image 2013-11-15 14:08:36 +01:00
configs Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2014-04-12 14:49:50 -07:00
crypto crypto: s390 - fix des and des3_ede ctr concurrency issue 2014-01-30 21:45:14 +08:00
hypfs hypfs: Add clarification for "weight_min" attribute 2014-03-17 15:53:03 +01:00
include mm: split 'tlb_flush_mmu()' into tlb flushing and memory freeing parts 2014-04-25 16:05:40 -07:00
kernel s390/compat: fix typo 2014-04-11 13:53:35 +02:00
kvm Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2014-04-08 12:02:28 -07:00
lib s390/uaccess: fix possible register corruption in strnlen_user_srst() 2014-04-11 13:53:33 +02:00
math-emu s390: fix save and restore of the floating-point-control register 2013-10-24 17:17:11 +02:00
mm s390/mm: print control registers and page table walk on crash 2014-04-09 10:19:13 +02:00
net net: filter: add jited flag to indicate jit compiled filters 2014-03-31 00:45:08 -04:00
oprofile s390/irq: Use defines for external interruption codes 2014-04-03 14:30:52 +02:00
pci Driver core / sysfs patches for 3.15-rc1 2014-04-01 16:28:19 -07:00
defconfig s390: update defconfigs 2014-03-17 15:52:57 +01:00
Kbuild s390/pci: base support 2012-11-30 15:40:45 +01:00
Kconfig Merge git://git.infradead.org/users/eparis/audit 2014-04-12 12:38:53 -07:00
Kconfig.debug Kconfig: consolidate CONFIG_DEBUG_STRICT_USER_COPY_CHECKS 2013-04-30 17:04:09 -07:00
Makefile s390: allow to set gcc -mtune flag 2013-10-31 09:54:01 +01:00