Re: Calling to kvm_mmu_load

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Paolo,

Thanks for your reply.

On Wed, Oct 23, 2013 at 2:21 PM, Paolo Bonzini <pbonzini@xxxxxxxxxx> wrote:
> 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).

When EPT is enabled, why will root_hpa be set to INVALID_PAGE when a
VM boots? I find that Qemu reset root_hpa with KVM_REQ_MMU_RELOAD
request several time when booting a VM, why?

And will VM use EPT from the very beginning when booting?

>
> 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).

Besides, in function tdp_page_fault(), I find two different execution
flow which may not reach __direct_map() (which I think is the normal
path to handle PF), they are fast_page_fault() and try_async_pf().
When will these two paths called when handling EPT page fault?

Thanks,
Arthur
>
> Paolo



-- 
Arthur Chunqi Li
Department of Computer Science
School of EECS
Peking University
Beijing, China
--
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




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux