linux_dsm_epyc7002/arch/s390
Martin Schwidefsky cd94154cc6 [S390] fix tlb flushing for page table pages
Git commit 36409f6353 "use generic RCU
page-table freeing code" introduced a tlb flushing bug. Partially revert
the above git commit and go back to s390 specific page table flush code.

For s390 the TLB can contain three types of entries, "normal" TLB
page-table entries, TLB combined region-and-segment-table (CRST) entries
and real-space entries. Linux does not use real-space entries which
leaves normal TLB entries and CRST entries. The CRST entries are
intermediate steps in the page-table translation called translation paths.
For example a 4K page access in a three-level page table setup will
create two CRST TLB entries and one page-table TLB entry. The advantage
of that approach is that a page access next to the previous one can reuse
the CRST entries and needs just a single read from memory to create the
page-table TLB entry. The disadvantage is that the TLB flushing rules are
more complicated, before any page-table may be freed the TLB needs to be
flushed.

In short: the generic RCU page-table freeing code is incorrect for the
CRST entries, in particular the check for mm_users < 2 is troublesome.

This is applicable to 3.0+ kernels.

Cc: <stable@vger.kernel.org>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2012-04-11 14:28:24 +02:00
..
appldata sched/accounting: Change cpustat fields to an array 2011-12-06 09:06:38 +01:00
boot [S390] Remove Kerntypes leftovers 2011-12-27 11:27:12 +01:00
crypto Disintegrate asm/system.h for S390 2012-03-28 18:30:02 +01:00
hypfs switch open-coded instances of d_make_root() to new helper 2012-03-20 21:29:35 -04:00
include/asm [S390] fix tlb flushing for page table pages 2012-04-11 14:28:24 +02:00
kernel [S390] Fix build errors (fallout from system.h disintegration) 2012-03-30 09:41:12 +02:00
kvm Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
lib [S390] rework idle code 2012-03-11 11:59:28 -04:00
math-emu s390: change to new flag variable 2011-03-17 14:02:57 +01:00
mm [S390] fix tlb flushing for page table pages 2012-04-11 14:28:24 +02:00
oprofile Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
defconfig [S390] defconfig: switch on CONFIG_DEVTMPFS 2011-10-30 15:16:42 +01:00
Kbuild [S390] make arch/s390 subdirectories depend on config option 2011-12-27 11:27:12 +01:00
Kconfig [S390] fix tlb flushing for page table pages 2012-04-11 14:28:24 +02:00
Kconfig.debug [S390] Write protect module text and RO data 2011-03-15 17:08:23 +01:00
Makefile [S390] cleanup entry point definition 2012-01-18 18:03:41 +01:00