From: Mingwei Zhang <mizhang@google.com>
To: Sean Christopherson <seanjc@google.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
kvm@vger.kernel.org, linux-doc@vger.kernel.org,
linux-kernel@vger.kernel.org, Kai Huang <kai.huang@intel.com>,
Jim Mattson <jmattson@google.com>,
David Matlack <dmatlack@google.com>,
Ben Gardon <bgardon@google.com>, Xu Yilun <yilun.xu@intel.com>,
Zhi Wang <zhi.wang.linux@gmail.com>
Subject: Re: [PATCH v2 4/6] KVM: Documentation: Add the missing description for tdp_mmu_root_count into kvm_mmu_page
Date: Mon, 31 Jul 2023 18:41:40 +0000 [thread overview]
Message-ID: <ZMgAZMp148BRrazJ@google.com> (raw)
In-Reply-To: <ZJsFKjbaCKk+fFkv@google.com>
On Tue, Jun 27, 2023, Sean Christopherson wrote:
> On Mon, Jun 26, 2023, Mingwei Zhang wrote:
> > Add the description of tdp_mmu_root_count into kvm_mmu_page description.
> > tdp_mmu_root_count is an atomic counter used only in TDP MMU. Its usage and
> > meaning is slightly different with root_counter in shadow MMU. Update the
> > doc.
> >
> > Signed-off-by: Mingwei Zhang <mizhang@google.com>
> > ---
> > Documentation/virt/kvm/x86/mmu.rst | 5 +++++
> > 1 file changed, 5 insertions(+)
> >
> > diff --git a/Documentation/virt/kvm/x86/mmu.rst b/Documentation/virt/kvm/x86/mmu.rst
> > index 5cd6cd5e8926..97d695207e11 100644
> > --- a/Documentation/virt/kvm/x86/mmu.rst
> > +++ b/Documentation/virt/kvm/x86/mmu.rst
> > @@ -231,6 +231,11 @@ Shadow pages contain the following information:
> > A counter keeping track of how many hardware registers (guest cr3 or
> > pdptrs) are now pointing at the page. While this counter is nonzero, the
> > page cannot be destroyed. See role.invalid.
> > + tdp_mmu_root_count:
> > + An atomic reference counter in TDP MMU root page that allows for parallel
> > + accesses.
>
> I find the "parallel accesses" simultaneously redundant and confusing. The fact
> that's it's an atomic implies that there are concurrent accesses. And need for
> an atomic is really just a minor note, i.e. shouldn't be the focus of the
> documentation.
>
> On a related topic, the description for "root_count" is stale now that KVM keeps
> references to roots.
>
> What if we take this opportunity to unify the documentation?
>
> root_count / tdp_mmu_rount_count:
>
> A reference counter for root shadow pages. vCPUs elevate the refcount when
> getting a shadow page that will be used as a root, i.e. will be loaded into
> hardware directly (CR3, PDPTRs, nCR3 EPTP). Root pages cannnot be freed
> while their refcount is non-zero. The TDP MMU uses an atomic refcount as
> vCPUs can acquire references while holding mmu_lock for read. See
> role.invalid and Root Pages.
Ok, I think this one is reasonable and this clarifies that this field
only works for root pages.
>
> And then add a section specifically for root pages? I think trying to cram
> everything important about root pages into the description for their refcount
> will be difficult and kludgy. E.g. this doc should also provide an explanation of
> previous roots.
>
> Root Pages
> ==========
>
> Key talking points:
>
> - Definition of a root page
> - Lifecycle of roots for both the shadow MMU and TDP MMU
> - Previous root tracking, and why only KVM doesn'y track previous roots when
> using PAE paging
> - The importance of preserving roots that are currently not referenced by any
> vCPU, i.e. why TDP MMU roots are initialized with a refcount of '2'
> - Why shadow MMU roots don't gift a reference to the MMU itself, i.e. why they
> naturally survive their refcount going to zero
>
I am not sure if I can add the whole section in this commit. Maybe
I can push it back separately into a different series. For root_count, a
brief introduction of root pages should be good enough, which is explain
in your suggestion: page that "will be loaded into hardware directly
(CR3, PDPTRs, nCR3 EPTP)".
>
> > Accessing the page requires lifting the counter value. The
> > + initial value is set to 2 indicating one reference from vCPU and one
> > + from TDP MMU itself. Note this field is a union with root_count.
> > parent_ptes:
> > The reverse mapping for the pte/ptes pointing at this page's spt. If
> > parent_ptes bit 0 is zero, only one spte points at this page and
> > --
> > 2.41.0.162.gfafddb0af9-goog
> >
next prev parent reply other threads:[~2023-07-31 18:41 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-26 18:20 [PATCH v2 0/6] Update document description for kvm_mmu_page and kvm_mmu_page_role Mingwei Zhang
2023-06-26 18:20 ` [PATCH v2 1/6] KVM: Documentation: Add the missing description for guest_mode in kvm_mmu_page_role Mingwei Zhang
2023-06-26 18:20 ` [PATCH v2 2/6] KVM: Documentation: Update the field name gfns and its description in kvm_mmu_page Mingwei Zhang
2023-06-26 21:49 ` Randy Dunlap
2023-07-31 17:54 ` Mingwei Zhang
2023-07-31 18:24 ` Sean Christopherson
2023-07-31 18:59 ` Mingwei Zhang
2023-06-26 18:20 ` [PATCH v2 3/6] KVM: Documentation: Add the missing description for ptep " Mingwei Zhang
2023-06-26 21:44 ` Randy Dunlap
2023-06-26 22:20 ` Huang, Kai
2023-06-27 15:27 ` Sean Christopherson
2023-07-31 18:09 ` Mingwei Zhang
2023-06-26 18:20 ` [PATCH v2 4/6] KVM: Documentation: Add the missing description for tdp_mmu_root_count into kvm_mmu_page Mingwei Zhang
2023-06-26 22:21 ` Huang, Kai
2023-06-27 15:50 ` Sean Christopherson
2023-07-31 18:41 ` Mingwei Zhang [this message]
2023-06-26 18:20 ` [PATCH v2 5/6] KVM: Documentation: Add the missing description for mmu_valid_gen " Mingwei Zhang
2023-06-27 16:13 ` Sean Christopherson
2023-07-31 22:02 ` Mingwei Zhang
2023-06-26 18:20 ` [PATCH v2 6/6] KVM: Documentation: Add the missing description for tdp_mmu_page " Mingwei Zhang
2023-06-26 22:23 ` Huang, Kai
2023-06-27 16:16 ` Sean Christopherson
2023-07-31 22:28 ` Mingwei Zhang
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=ZMgAZMp148BRrazJ@google.com \
--to=mizhang@google.com \
--cc=bgardon@google.com \
--cc=dmatlack@google.com \
--cc=jmattson@google.com \
--cc=kai.huang@intel.com \
--cc=kvm@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pbonzini@redhat.com \
--cc=seanjc@google.com \
--cc=yilun.xu@intel.com \
--cc=zhi.wang.linux@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.