• Christian Borntraeger's avatar
    s390: KVM preparation: host memory management changes for s390 kvm · 5b7baf05
    Christian Borntraeger authored
    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: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
    Acked-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
    Acked-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarCarsten Otte <cotte@de.ibm.com>
    Signed-off-by: default avatarAvi Kivity <avi@qumranet.com>
    5b7baf05
rmap.c 27.7 KB