kernel-fxtec-pro1x/drivers/s390/char
Martin Schwidefsky abf09bed3c s390/mm: implement software dirty bits
The s390 architecture is unique in respect to dirty page detection,
it uses the change bit in the per-page storage key to track page
modifications. All other architectures track dirty bits by means
of page table entries. This property of s390 has caused numerous
problems in the past, e.g. see git commit ef5d437f71
"mm: fix XFS oops due to dirty pages without buffers on s390".

To avoid future issues in regard to per-page dirty bits convert
s390 to a fault based software dirty bit detection mechanism. All
user page table entries which are marked as clean will be hardware
read-only, even if the pte is supposed to be writable. A write by
the user process will trigger a protection fault which will cause
the user pte to be marked as dirty and the hardware read-only bit
is removed.

With this change the dirty bit in the storage key is irrelevant
for Linux as a host, but the storage key is still required for
KVM guests. The effect is that page_test_and_clear_dirty and the
related code can be removed. The referenced bit in the storage
key is still used by the page_test_and_clear_young primitive to
provide page age information.

For page cache pages of mappings with mapping_cap_account_dirty
there will not be any change in behavior as the dirty bit tracking
already uses read-only ptes to control the amount of dirty pages.
Only for swap cache pages and pages of mappings without
mapping_cap_account_dirty there can be additional protection faults.
To avoid an excessive number of additional faults the mk_pte
primitive checks for PageDirty if the pgprot value allows for writes
and pre-dirties the pte. That avoids all additional faults for
tmpfs and shmem pages until these pages are added to the swap cache.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2013-02-14 15:55:23 +01:00
..
con3215.c s390/3215: partially revert tty close handling fix 2013-01-08 10:57:08 +01:00
con3270.c s390/3270: drop unused spinlock from struct con3270 2012-09-26 15:45:11 +02:00
ctrlchar.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
ctrlchar.h s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
defkeymap.c Build fix for drivers/s390/char/defkeymap.c 2008-03-04 08:01:26 -08:00
defkeymap.map
fs3270.c s390/3270: introduce device notifier 2013-02-14 15:55:02 +01:00
Kconfig [S390] kconfig: remove tape interface support comment 2011-07-24 10:48:00 +02:00
keyboard.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
keyboard.h s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
Makefile [S390] get CPC image name 2011-05-23 10:24:32 +02:00
monreader.c drivers/s390/char/monreader.c: fix error return code 2012-09-26 15:45:26 +02:00
monwriter.c [S390] monwriter: fix return code handling 2011-05-23 10:24:29 +02:00
raw3270.c s390/3270: asynchronous size sensing 2013-02-14 15:55:03 +01:00
raw3270.h s390/3270: asynchronous size sensing 2013-02-14 15:55:03 +01:00
sclp.c s390/time: rename tod clock access functions 2013-02-14 15:55:10 +01:00
sclp.h s390/pci: PCI hotplug support via SCLP 2012-11-30 17:47:25 +01:00
sclp_async.c [S390] sclp_async: Use kstrtoul_from_user 2011-08-03 16:44:20 +02:00
sclp_cmd.c s390/mm: implement software dirty bits 2013-02-14 15:55:23 +01:00
sclp_con.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
sclp_config.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
sclp_cpi.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
sclp_cpi_sys.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
sclp_cpi_sys.h s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
sclp_ocf.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
sclp_quiesce.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
sclp_rw.c s390/sclp: use -EOPNOTSUPP instead of -ENOSYS 2012-09-26 15:45:13 +02:00
sclp_rw.h [S390] sclp: fix compile error for !SCLP_CONSOLE 2009-07-07 16:37:50 +02:00
sclp_sdias.c s390/sclp_sdias: Add missing break and "fall through" 2012-08-08 07:32:55 -07:00
sclp_tty.c TTY: call tty_port_destroy in the rest of drivers 2012-11-15 17:20:58 -08:00
sclp_tty.h s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
sclp_vt220.c TTY: call tty_port_destroy in the rest of drivers 2012-11-15 17:20:58 -08:00
tape.h s390/tape: remove even more tape block leftovers 2012-09-26 15:45:20 +02:00
tape_34xx.c s390/irq: remove split irq fields from /proc/stat 2013-01-08 10:57:07 +01:00
tape_3590.c s390/irq: remove split irq fields from /proc/stat 2013-01-08 10:57:07 +01:00
tape_3590.h s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
tape_char.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
tape_class.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
tape_class.h s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
tape_core.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
tape_proc.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
tape_std.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
tape_std.h s390/tape: remove even more tape block leftovers 2012-09-26 15:45:20 +02:00
tty3270.c s390/3270: asynchronous size sensing 2013-02-14 15:55:03 +01:00
tty3270.h s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
vmcp.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
vmcp.h s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
vmlogrdr.c s390/vmlogrdr: change return value from -ENOSYS to -EOPNOTSUPP 2012-09-26 15:45:16 +02:00
vmur.c s390/irq: remove split irq fields from /proc/stat 2013-01-08 10:57:07 +01:00
vmur.h [S390] vmur: Use wait queue instead of mutex to serialize open 2008-04-17 07:46:59 +02:00
vmwatchdog.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
zcore.c s390/time: rename tod clock access functions 2013-02-14 15:55:10 +01:00