Il 21/10/2013 08:56, Arthur Chunqi Li ha scritto: > Hi there, > > I noticed that kvm_mmu_reload() is called every time in vcpu enter, > and kvm_mmu_load() is called in this function when root_hpa is > INVALID_PAGE. I get confused why and when root_hpa can be set to > INVALID_PAGE? I find one condition that if vcpu get request > KVM_REQ_MMU_RELOAD, kvm_mmu_unload() is called to invalid root_hpa, > but this condition cannot cover all occasions. Look also at mmu_free_roots, kvm_mmu_unload and kvm_mmu_reset_context. In "normal" cases and without EPT, it should be called when CR3 changes or when the paging mode changes (32-bit, PAE, 64-bit, no paging). With EPT, this kind of change won't reset the MMU (CR3 changes won't cause a vmexit at all, in fact). With nested virtualization, roots are invalidated whenever kvm->arch.mmu changes meaning from L1->L0 or L2->L0 or vice versa (in the special case where EPT is disabled on L0, this is trivially because vmentry loads CR3 from the vmcs02). Paolo -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html