From: Paolo Bonzini <pbonzini@redhat.com>
To: Arthur Chunqi Li <yzt356@gmail.com>
Cc: kvm <kvm@vger.kernel.org>, Jan Kiszka <jan.kiszka@web.de>
Subject: Re: Calling to kvm_mmu_load
Date: Wed, 23 Oct 2013 07:21:40 +0100 [thread overview]
Message-ID: <52676AF4.4080906@redhat.com> (raw)
In-Reply-To: <CABpY8MLLZ12H0jzqCBcQU0LM2-vd4O4pm7Og_LF4ThJO3PL25Q@mail.gmail.com>
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
next prev parent reply other threads:[~2013-10-23 6:21 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-21 7:56 Calling to kvm_mmu_load Arthur Chunqi Li
2013-10-23 6:21 ` Paolo Bonzini [this message]
2013-10-24 7:55 ` Arthur Chunqi Li
2013-10-25 0:43 ` Paolo Bonzini
2013-10-29 5:39 ` Arthur Chunqi Li
2013-10-29 12:55 ` Paolo Bonzini
2013-10-30 11:39 ` Arthur Chunqi Li
2013-10-30 11:44 ` Paolo Bonzini
2013-10-31 8:05 ` Arthur Chunqi Li
2013-10-31 9:52 ` Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=52676AF4.4080906@redhat.com \
--to=pbonzini@redhat.com \
--cc=jan.kiszka@web.de \
--cc=kvm@vger.kernel.org \
--cc=yzt356@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.