kernel_optimize_test/include/asm-s390
Christian Borntraeger 5b7baf0578 s390: KVM preparation: host memory management changes for s390 kvm
This patch changes the s390 memory management defintions to use the pgste field
for dirty and reference bit tracking of host and guest code. Usually on s390,
dirty and referenced are tracked in storage keys, which belong to the physical
page. This changes with virtualization: The guest and host dirty/reference bits
are defined to be the logical OR of the values for the mapping and the physical
page. This patch implements the necessary changes in pgtable.h for s390.

There is a common code change in mm/rmap.c, the call to
page_test_and_clear_young must be moved. This is a no-op for all
architecture but s390. page_referenced checks the referenced bits for
the physiscal page and for all mappings:
o The physical page is checked with page_test_and_clear_young.
o The mappings are checked with ptep_test_and_clear_young and friends.

Without pgstes (the current implementation on Linux s390) the physical page
check is implemented but the mapping callbacks are no-ops because dirty
and referenced are not tracked in the s390 page tables. The pgstes introduces
guest and host dirty and reference bits for s390 in the host mapping. These
mapping must be checked before page_test_and_clear_young resets the reference
bit.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Acked-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Acked-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Carsten Otte <cotte@de.ibm.com>
Signed-off-by: Avi Kivity <avi@qumranet.com>
2008-04-27 12:00:40 +03:00
..
airq.h [S390] cio: Extend adapter interrupt interface. 2008-01-26 14:11:00 +01:00
appldata.h [S390] Inline assembly cleanup. 2006-09-28 16:56:43 +02:00
atomic.h [S390] Change atomic_read/set to inline functions with barrier semantics. 2007-08-22 13:51:49 +02:00
auxvec.h
bitops.h generic: implement __fls on all 64-bit archs 2008-04-26 19:21:16 +02:00
bug.h Fix WARN_ON() on bitfield ops for all other archs 2007-08-01 20:45:38 -07:00
bugs.h [S390] check_bugs() should be inline. 2007-03-05 23:35:50 +01:00
byteorder.h [S390] Inline assembly cleanup. 2006-09-28 16:56:43 +02:00
cache.h [S390] Get rid of ARCH_KMALLOC_MINALIGN. 2007-10-12 16:13:07 +02:00
cacheflush.h [S390] DEBUG_PAGEALLOC support for s390. 2008-02-05 16:50:54 +01:00
ccwdev.h [S390] cio: Introduce ccw_bus_type.shutdown. 2007-10-12 16:13:01 +02:00
ccwgroup.h [S390] cio: Add shutdown callback for ccwgroup. 2008-02-05 16:50:54 +01:00
checksum.h [S390] Fix TCP/UDP pseudo header checksum computation. 2007-03-26 20:43:46 +02:00
chpid.h [S390] cio: Channel-path configure function. 2007-04-27 16:01:39 +02:00
cio.h [S390] Fix a lot of sparse warnings. 2008-04-17 07:47:06 +02:00
cmb.h [S390] cio: Kerneldoc comments for cmf. 2007-10-12 16:12:59 +02:00
compat.h asm-*/compat.h: fix typo in comment 2008-02-03 16:32:51 +02:00
cpcmd.h [S390] cpcmd <-> __cpcmd calling issues 2006-12-04 15:40:30 +01:00
cpu.h [S390] Convert monitor calls to function calls. 2008-04-17 07:47:05 +02:00
cputime.h taskstats scaled time cleanup 2008-02-06 10:41:00 -08:00
current.h
dasd.h [S390] include/asm-s390/: Spelling fixes 2008-01-26 14:11:25 +01:00
debug.h [S390] Add debug_register_mode() function to debug feature API 2008-04-17 07:47:03 +02:00
delay.h
device.h Driver core: add dev_archdata to struct device 2006-12-01 14:52:01 -08:00
diag.h [S390] vmur: fix diag14 exceptions with addresses > 2GB. 2007-08-22 13:51:47 +02:00
div64.h [S390] __div64_32 for 31 bit. 2006-09-28 16:55:39 +02:00
dma.h
ebcdic.h [S390] Inline assembly cleanup. 2006-09-28 16:56:43 +02:00
elf.h [S390] dynamic page tables. 2008-02-09 18:24:41 +01:00
emergency-restart.h
errno.h
etr.h [S390] ETR support. 2007-02-05 21:18:19 +01:00
extmem.h [S390] Remove code duplication from monreader / dcssblk. 2008-04-17 07:47:07 +02:00
fb.h fbdev: detect primary display device 2007-07-17 10:23:11 -07:00
fcntl.h
futex.h [S390] don't call handle_mm_fault() if in an atomic context. 2007-01-09 10:18:50 +01:00
hardirq.h [S390] Convert s390 to GENERIC_CLOCKEVENTS. 2008-04-17 07:47:05 +02:00
idals.h
io.h [S390] remove __io_virt and mmiowb. 2007-02-12 15:49:57 +01:00
ioctl.h
ioctls.h tty: s390 support for termios2. 2008-02-08 09:22:24 -08:00
ipcbuf.h
ipl.h [S390] Use diag308 subcodes 3 and 6 for reboot and dump when possible. 2008-01-26 14:11:24 +01:00
irq_regs.h [S390] irq change build fixes. 2006-10-06 16:38:35 +02:00
irq.h [PATCH] Make touch_nmi_watchdog imply touch_softlockup_watchdog on all archs 2006-09-29 09:18:05 -07:00
irqflags.h [S390] Inline assembly cleanup. 2006-09-28 16:56:43 +02:00
Kbuild
kdebug.h x86: optimize page faults like all other achitectures and kill notifier cruft 2007-10-16 09:42:50 -07:00
kexec.h Unexport asm/page.h 2008-02-07 08:42:30 -08:00
kmap_types.h
kprobes.h Kprobes: indicate kretprobe support in Kconfig 2008-03-04 16:35:11 -08:00
kvm.h kvm: provide kvm.h for all architecture: fixes headers_install 2008-04-02 15:28:18 -07:00
linkage.h
local.h [S390] local_t cleanup : use asm-generic/local.h. 2007-02-21 10:55:55 +01:00
lowcore.h [S390] kernel: show last breaking-event-address on oops 2008-04-17 07:47:07 +02:00
mathemu.h
mman.h
mmu_context.h s390: KVM preparation: provide hook to enable pgstes in user pagetable 2008-04-27 12:00:40 +03:00
mmu.h s390: KVM preparation: provide hook to enable pgstes in user pagetable 2008-04-27 12:00:40 +03:00
module.h
monwriter.h
msgbuf.h
mutex.h
namei.h
page.h [S390] 1K/2K page table pages. 2008-02-09 18:24:40 +01:00
param.h [S390] Kconfig: use common Kconfig files for s390. 2007-05-10 15:46:08 +02:00
pci.h
percpu.h s390: use generic percpu linux-2.6.git 2008-01-30 23:27:58 +01:00
pgalloc.h [S390] dynamic page tables. 2008-02-09 18:24:41 +01:00
pgtable.h s390: KVM preparation: host memory management changes for s390 kvm 2008-04-27 12:00:40 +03:00
poll.h Consolidate asm/poll.h 2007-05-11 08:29:34 -07:00
posix_types.h [PATCH] FD_ZERO build fix 2007-01-11 18:18:22 -08:00
processor.h [S390] kernel: show last breaking-event-address on oops 2008-04-17 07:47:07 +02:00
ptrace.h [S390] single-step cleanup 2008-01-26 14:11:27 +01:00
qdio.h [S390] include/asm-s390/: Spelling fixes 2008-01-26 14:11:25 +01:00
qeth.h
reset.h [S390] Convert memory detection into C code. 2007-02-05 21:18:37 +01:00
resource.h
rwsem.h [S390] Use new style spinlock initializer in __RWSEM_INITIALIZER. 2008-01-26 14:11:15 +01:00
s390_ext.h [S390] remove packed attribute from ext_int_info_t. 2007-10-12 16:13:07 +02:00
s390_rdev.h
scatterlist.h Add CONFIG_DEBUG_SG sg validation 2007-10-22 21:20:03 +02:00
sclp.h [S390] Get rid of additional_cpus kernel parameter. 2008-01-26 14:11:15 +01:00
sections.h [S390] nss: Free unused memory in kernel image. 2007-02-21 10:55:37 +01:00
segment.h
semaphore.h Generic semaphore implementation 2008-04-17 10:42:34 -04:00
sembuf.h
setup.h [S390] zfcpdump support. 2007-04-27 16:01:44 +02:00
sfp-machine.h [S390] Bogomips calculation for 64 bit. 2007-07-10 11:24:47 +02:00
sfp-util.h [S390] Bogomips calculation for 64 bit. 2007-07-10 11:24:47 +02:00
shmbuf.h
shmparam.h
sigcontext.h
siginfo.h
signal.h
sigp.h [S390] Inline assembly cleanup. 2006-09-28 16:56:43 +02:00
smp.h [S390] Vertical cpu management. 2008-04-17 07:47:01 +02:00
socket.h [NET]: Introducing socket mark socket option. 2008-01-31 19:27:19 -08:00
sockios.h [NET]: Introduce SIOCGSTAMPNS ioctl to get timestamps with nanosec resolution 2007-04-25 22:24:04 -07:00
spinlock_types.h [S390] Remove owner_pc member from raw_spinlock_t. 2008-01-26 14:11:14 +01:00
spinlock.h [S390] do local_irq_restore while spinning in spin_lock_irqsave. 2008-01-26 14:11:31 +01:00
stat.h
statfs.h
string.h [S390] Inline assembly cleanup. 2006-09-28 16:56:43 +02:00
suspend.h
sysinfo.h [S390] Add new fields for System z10 to /proc/sysinfo 2008-04-17 07:47:01 +02:00
system.h [S390] Export stfle. 2008-04-17 07:47:01 +02:00
tape390.h [S390] Add crypto support for 3592 tape devices 2007-02-05 21:18:26 +01:00
termbits.h tty: s390 support for termios2. 2008-02-08 09:22:24 -08:00
termios.h tty: s390 support for termios2. 2008-02-08 09:22:24 -08:00
thread_info.h
timer.h [S390] Get rid of a lot of sparse warnings. 2007-02-05 21:16:47 +01:00
timex.h [S390] Fix a lot of sparse warnings. 2008-04-17 07:47:06 +02:00
tlb.h [S390] dynamic page tables. 2008-02-09 18:24:41 +01:00
tlbflush.h [S390] Fix a lot of sparse warnings. 2008-04-17 07:47:06 +02:00
todclk.h
topology.h [S390] Vertical cpu management. 2008-04-17 07:47:01 +02:00
types.h remove strict ansi check from __u64 in asm/types.h 2007-10-17 08:42:53 -07:00
uaccess.h [S390] noexec protection 2007-02-05 21:18:17 +01:00
ucontext.h
unaligned.h
unistd.h [S390] Wire up new timerfd syscalls. 2008-02-09 18:24:37 +01:00
user.h Sanitize the type of struct user.u_ar0 2008-02-07 08:42:30 -08:00
vtoc.h
xor.h
zcrypt.h [S390] include/asm-s390/: Spelling fixes 2008-01-26 14:11:25 +01:00