• Alexey Kardashevskiy's avatar
    KVM: PPC: Book3S HV: Fix dirty map for hugepages · 687414be
    Alexey Kardashevskiy authored
    The dirty map that we construct for the KVM_GET_DIRTY_LOG ioctl has
    one bit per system page (4K/64K).  Currently, we only set one bit in
    the map for each HPT entry with the Change bit set, even if the HPT is
    for a large page (e.g., 16MB).  Userspace then considers only the
    first system page dirty, though in fact the guest may have modified
    anywhere in the large page.
    
    To fix this, we make kvm_test_clear_dirty() return the actual number
    of pages that are dirty (and rename it to kvm_test_clear_dirty_npages()
    to emphasize that that's what it returns).  In kvmppc_hv_get_dirty_log()
    we then set that many bits in the dirty map.
    Signed-off-by: default avatarAlexey Kardashevskiy <aik@ozlabs.ru>
    Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
    Signed-off-by: default avatarAlexander Graf <agraf@suse.de>
    687414be
book3s_64_mmu_hv.c 42 KB