linux/arch/s390/include/asm
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
..
airq.h
appldata.h
asm-offsets.h kbuild: move asm-offsets.h to include/generated 2009-12-12 13:08:14 +01:00
atomic.h Disintegrate asm/system.h for S390 2012-03-28 18:30:02 +01:00
auxvec.h [S390] introduce vdso on s390 2008-12-25 13:38:55 +01:00
barrier.h Disintegrate asm/system.h for S390 2012-03-28 18:30:02 +01:00
bitops.h asm-generic: add another generic ext2 atomic bitops 2011-07-26 16:49:46 -07:00
bitsperlong.h asm-generic: introduce asm/bitsperlong.h 2009-06-11 21:02:14 +02:00
bug.h panic: Allow warnings to set different taint flags 2010-05-19 08:36:48 +01:00
bugs.h
byteorder.h byteorder: make swab.h include asm/swab.h like a regular header 2009-01-14 19:56:50 -08:00
cache.h [S390] net: provide architecture specific NET_SKB_PAD 2011-02-17 13:13:59 +01:00
cacheflush.h module: undo module RONX protection correctly. 2011-05-19 16:55:26 +09:30
ccwdev.h [S390] fix mismatch in summation of I/O IRQ statistics 2011-10-30 15:16:15 +01:00
ccwgroup.h [S390] ccwgroup_driver: remove duplicate members 2011-03-23 10:15:59 +01:00
checksum.h [S390] convert/optimize csum_fold() to C 2009-09-11 10:29:43 +02:00
chpid.h UAPI: Alter the S390 asm include guards to be recognisable by the UAPI splitter 2011-12-13 09:26:45 +00:00
chsc.h [S390] cio: move scsw helper functions to header file 2009-09-11 10:29:36 +02:00
cio.h Fix common misspellings 2011-03-31 11:26:23 -03:00
cmb.h [S390] types: add/fix types.h include in header files 2009-01-09 12:15:06 +01:00
cmpxchg.h [S390] percpu: implement arch specific irqsafe_cpu_ops 2011-05-23 10:24:29 +02:00
compat.h compat: fix compile breakage on s390 2012-02-27 07:54:27 -08:00
cpcmd.h
cpu_mf.h [S390] Fix build errors (fallout from system.h disintegration) 2012-03-30 09:41:12 +02:00
cpu.h [S390] correct alignment of cpuid structure 2010-10-25 16:10:19 +02:00
cputime.h [S390] rework idle code 2012-03-11 11:59:28 -04:00
crw.h [S390] cio: wait for channel report 2010-02-26 22:37:29 +01:00
ctl_reg.h Disintegrate asm/system.h for S390 2012-03-28 18:30:02 +01:00
current.h
dasd.h [S390] dasd: Add support for raw ECKD access. 2011-01-05 12:47:30 +01:00
debug.h [S390] kernel: Add z/VM LGR detection 2012-03-11 11:59:29 -04:00
delay.h [S390] delay: implement ndelay 2011-05-26 09:48:25 +02:00
device.h
diag.h [S390] replace diag10() with diag10_range() function 2011-05-10 17:13:43 +02:00
div64.h
dma.h
ebcdic.h
elf.h Disintegrate asm/system.h for S390 2012-03-28 18:30:02 +01:00
emergency-restart.h
errno.h
etr.h [S390] use inline assembly contraints available with gcc 3.3.3 2010-02-26 22:37:30 +01:00
exec.h Disintegrate asm/system.h for S390 2012-03-28 18:30:02 +01:00
extmem.h
facility.h Disintegrate asm/system.h for S390 2012-03-28 18:30:02 +01:00
fb.h
fcntl.h
fcx.h [S390] cio: update sac values 2008-12-25 13:39:06 +01:00
ftrace.h ftrace/s390: mcount offset calculation 2011-05-16 15:05:06 -04:00
futex.h futex: Sanitize futex ops argument types 2011-03-11 12:23:31 +01:00
hardirq.h [S390] irq: set __ARCH_IRQ_EXIT_IRQS_DISABLED 2012-03-11 11:59:28 -04:00
hugetlb.h [S390] Remove data execution protection 2011-05-23 10:24:28 +02:00
idals.h [S390] dasd: add High Performance FICON support 2009-03-26 15:24:05 +01:00
io.h
ioctl.h
ioctls.h ioctl: Use asm-generic/ioctls.h on s390 (enables termiox) 2010-10-22 10:20:01 -07:00
ipcbuf.h
ipl.h [S390] kernel: Add z/VM LGR detection 2012-03-11 11:59:29 -04:00
irq_regs.h
irq.h [S390] oprofile: Allow multiple users of the measurement alert interrupt 2012-03-23 11:13:24 +01:00
irqflags.h [S390] irqs: Do not trace arch_local_{*,irq_*} functions 2011-07-24 10:48:00 +02:00
isc.h [S390] zcrypt: Use of Thin Interrupts 2008-12-25 13:38:57 +01:00
itcw.h UAPI: Alter the S390 asm include guards to be recognisable by the UAPI splitter 2011-12-13 09:26:45 +00:00
jump_label.h static keys: Introduce 'struct static_key', static_key_true()/false() and static_key_slow_[inc|dec]() 2012-02-24 10:05:59 +01:00
Kbuild KVM: S390: Export kvm_virtio.h 2010-10-24 10:51:30 +02:00
kdebug.h [S390] cleanup trap handling 2011-12-27 11:27:12 +01:00
kexec.h kdump: define KEXEC_NOTE_BYTES arch specific for s390x 2012-01-23 08:38:48 -08:00
kmap_types.h kmap_types: make most arches use generic header file 2009-06-16 19:47:51 -07:00
kprobes.h [S390] kprobes: jprobe save and restore 2011-01-05 12:47:24 +01:00
kvm_host.h KVM: Introduce kvm_memory_slot::arch and move lpage_info into it 2012-03-08 14:10:22 +02:00
kvm_para.h KVM: Add __KERNEL__ guards to exported headers 2009-09-10 10:46:48 +03:00
kvm_virtio.h KVM: S390: Add virtio hotplug add support 2010-10-24 10:51:29 +02:00
kvm.h KVM: s390: provide control registers via kvm_run 2012-03-08 14:10:18 +02:00
linkage.h [S390] fix s390 assembler code alignments 2011-07-24 10:48:21 +02:00
local64.h arch: Implement local64_t 2010-06-09 11:12:36 +02:00
local.h
lowcore.h [S390] Ensure that vmcore_info pointer is never accessed directly 2012-03-11 11:59:30 -04:00
mathemu.h
mman.h UAPI: Split trivial #if defined(__KERNEL__) && X conditionals 2011-12-13 15:07:49 +00:00
mmu_context.h Disintegrate asm/system.h for S390 2012-03-28 18:30:02 +01:00
mmu.h [S390] Fix build errors (fallout from system.h disintegration) 2012-03-30 09:41:12 +02:00
module.h
monwriter.h
msgbuf.h
mutex.h [S390] mutex: Introduce arch_mutex_cpu_relax() 2011-01-05 12:47:31 +01:00
nmi.h [S390] split/move machine check handler code 2009-03-26 15:24:10 +01:00
os_info.h [S390] kernel: Add OS info memory interface 2012-03-11 11:59:29 -04:00
page.h [S390] sparse: fix sparse warnings about missing prototypes 2011-10-30 15:16:46 +01:00
param.h [S390] Have param.h simply include <asm-generic/param.h>. 2010-01-04 09:05:58 +01:00
pci.h
percpu.h percpu: Remove irqsafe_cpu_xxx variants 2011-12-22 10:40:20 -08:00
perf_event.h [S390] perf: add support for s390x CPU counters 2012-03-23 11:13:25 +01:00
pgalloc.h [S390] fix tlb flushing for page table pages 2012-04-11 14:28:24 +02:00
pgtable.h [S390] add support for physical memory > 4TB 2011-12-27 11:27:10 +01:00
poll.h
posix_types.h s390: Use generic posix_types.h 2012-02-14 12:01:29 -08:00
processor.h Disintegrate asm/system.h for S390 2012-03-28 18:30:02 +01:00
ptrace.h Audit: push audit success and retcode into arch ptrace.h 2012-01-17 16:16:56 -05:00
qdio.h [S390] qdio: fix kernel panic for zfcp 31-bit 2011-12-27 11:27:14 +01:00
qeth.h qeth: add query OSA address table support 2012-02-08 18:50:20 -05:00
reset.h [S390] kdump backend code 2011-10-30 15:16:42 +01:00
resource.h
rwsem.h rwsem: Move duplicate function prototypes to linux/rwsem.h 2011-01-27 12:30:39 +01:00
scatterlist.h [S390] set ARCH_HAS_SG_CHAIN for s390 2010-10-25 16:10:15 +02:00
schid.h [S390] types: add/fix types.h include in header files 2009-01-09 12:15:06 +01:00
sclp.h
scsw.h [S390] cio: move scsw helper functions to header file 2009-09-11 10:29:36 +02:00
seccomp.h [S390] secure computing arch backend 2009-06-12 10:27:31 +02:00
sections.h
segment.h
sembuf.h
setup.h Disintegrate asm/system.h for S390 2012-03-28 18:30:02 +01:00
sfp-machine.h
sfp-util.h [S390] sparse: fix sparse warnings in math-emu 2011-10-30 15:16:46 +01:00
shmbuf.h
shmparam.h
sigcontext.h
siginfo.h
signal.h asm-generic: rename termios.h, signal.h and mman.h 2009-06-11 21:01:52 +02:00
smp.h Disintegrate asm/system.h for S390 2012-03-28 18:30:02 +01:00
socket.h net: Add framework to allow sending packets with customized CRC. 2012-02-24 01:37:35 -08:00
sockios.h [S390] use generic sockios.h header file 2009-12-07 12:51:37 +01:00
sparsemem.h [S390] add support for physical memory > 4TB 2011-12-27 11:27:10 +01:00
spinlock_types.h locking: Convert raw_rwlock to arch_rwlock 2009-12-14 23:55:32 +01:00
spinlock.h [S390] sparse: fix sparse warnings about missing prototypes 2011-10-30 15:16:46 +01:00
stat.h
statfs.h add f_flags to struct statfs(64) 2010-08-09 16:48:44 -04:00
string.h [S390] use compiler builtin versions of strlen/strcpy/strcat 2009-03-26 15:24:24 +01:00
swab.h [S390] use inline assembly contraints available with gcc 3.3.3 2010-02-26 22:37:30 +01:00
switch_to.h Disintegrate asm/system.h for S390 2012-03-28 18:30:02 +01:00
syscall.h [S390] cleanup trap handling 2011-12-27 11:27:12 +01:00
sysinfo.h [S390] topology: move topology sysinfo code 2010-10-25 16:10:21 +02:00
tape390.h
termbits.h [S390] use generic termbits.h header file 2009-12-07 12:51:37 +01:00
termios.h asm-generic: rename termios.h, signal.h and mman.h 2009-06-11 21:01:52 +02:00
thread_info.h freezer: remove now unused TIF_FREEZE 2011-11-21 12:32:25 -08:00
timer.h [S390] rework idle code 2012-03-11 11:59:28 -04:00
timex.h [S390] avoid STCKF if running in ESA mode 2011-11-14 11:19:09 +01:00
tlb.h [S390] fix tlb flushing for page table pages 2012-04-11 14:28:24 +02:00
tlbflush.h [S390] add missing __tlb_flush_global() for !CONFIG_SMP 2011-10-30 15:16:47 +01:00
topology.h [S390] topology: increase poll frequency if change is anticipated 2011-12-27 11:27:12 +01:00
types.h consolidate umode_t declarations 2012-01-03 22:55:17 -05:00
uaccess.h Disintegrate asm/system.h for S390 2012-03-28 18:30:02 +01:00
ucontext.h [S390] 64-bit register support for 31-bit processes 2009-10-06 10:35:10 +02:00
unaligned.h
unistd.h [S390] ipc: call generic sys_ipc demultiplexer 2011-12-27 11:27:13 +01:00
user.h
vdso.h [S390] rework smp code 2012-03-11 11:59:28 -04:00
vtoc.h [S390] dasd: add large volume support 2009-03-26 15:24:05 +01:00
xor.h
zcrypt.h