• Paul Mackerras's avatar
    KVM: PPC: Book3S HV: Reset reverse-map chains when resetting the HPT · a64fd707
    Paul Mackerras authored
    With HV-style KVM, we maintain reverse-mapping lists that enable us to
    find all the HPT (hashed page table) entries that reference each guest
    physical page, with the heads of the lists in the memslot->arch.rmap
    arrays.  When we reset the HPT (i.e. when we reboot the VM), we clear
    out all the HPT entries but we were not clearing out the reverse
    mapping lists.  The result is that as we create new HPT entries, the
    lists get corrupted, which can easily lead to loops, resulting in the
    host kernel hanging when it tries to traverse those lists.
    
    This fixes the problem by zeroing out all the reverse mapping lists
    when we zero out the HPT.  This incidentally means that we are also
    zeroing our record of the referenced and changed bits (not the bits
    in the Linux PTEs, used by the Linux MM subsystem, but the bits used
    by the KVM_GET_DIRTY_LOG ioctl, and those used by kvm_age_hva() and
    kvm_test_age_hva()).
    Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
    Signed-off-by: default avatarAlexander Graf <agraf@suse.de>
    a64fd707
book3s_64_mmu_hv.c 38.8 KB