• Paolo Bonzini's avatar
    KVM: x86/mmu: do not consult levels when freeing roots · 594bef79
    Paolo Bonzini authored
    
    
    Right now, PGD caching requires a complicated dance of first computing
    the MMU role and passing it to __kvm_mmu_new_pgd(), and then separately calling
    kvm_init_mmu().
    
    Part of this is due to kvm_mmu_free_roots using mmu->root_level and
    mmu->shadow_root_level to distinguish whether the page table uses a single
    root or 4 PAE roots.  Because kvm_init_mmu() can overwrite mmu->root_level,
    kvm_mmu_free_roots() must be called before kvm_init_mmu().
    
    However, even after kvm_init_mmu() there is a way to detect whether the
    page table may hold PAE roots, as root.hpa isn't backed by a shadow when
    it points at PAE roots.  Using this method results in simpler code, and
    is one less obstacle in moving all calls to __kvm_mmu_new_pgd() after the
    MMU has been initialized.
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    594bef79
mmu.c 169 KB