[S390] Optimize storage key handling for anonymous pages
authorChristian Borntraeger <borntraeger@de.ibm.com>
Tue, 20 Nov 2007 10:13:36 +0000 (11:13 +0100)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Tue, 20 Nov 2007 10:13:46 +0000 (11:13 +0100)
commitce7e9fae8db07af4080e868f4588f8f095f803dc
tree000a6cc755ee35ef3cfc0795c13ed500dc5457de
parentb8e7a54cd06b0b0174029ef3a7f5a1415a2c28f2
[S390] Optimize storage key handling for anonymous pages

page_mkclean used to call page_clear_dirty for every given page. This
is different to all other architectures, where the dirty bit in the
PTEs is only resetted, if page_mapping() returns a non-NULL pointer.
We can move the page_test_dirty/page_clear_dirty sequence into the
2nd if to avoid unnecessary iske/sske sequences, which are expensive.

This change also helps kvm for s390 as the host must transfer the
dirty bit into the guest status bits. By moving the page_clear_dirty
operation into the 2nd if, the vm will only call page_clear_dirty
for pages where it walks the mapping anyway. There it calls
ptep_clear_flush for writable ptes, so we can transfer the dirty bit
to the guest.

Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
mm/rmap.c