public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: "Edgecombe, Rick P" <rick.p.edgecombe@intel.com>
To: "Yamahata, Isaku" <isaku.yamahata@intel.com>
Cc: "isaku.yamahata@gmail.com" <isaku.yamahata@gmail.com>,
	"seanjc@google.com" <seanjc@google.com>,
	"Huang, Kai" <kai.huang@intel.com>,
	"sagis@google.com" <sagis@google.com>,
	"isaku.yamahata@linux.intel.com" <isaku.yamahata@linux.intel.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"Zhao, Yan Y" <yan.y.zhao@intel.com>,
	"Aktas, Erdem" <erdemaktas@google.com>,
	"dmatlack@google.com" <dmatlack@google.com>,
	"pbonzini@redhat.com" <pbonzini@redhat.com>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>
Subject: Re: [PATCH v2 11/15] KVM: x86/tdp_mmu: Reflect tearing down mirror page tables
Date: Fri, 14 Jun 2024 23:11:35 +0000	[thread overview]
Message-ID: <dd0fe900fc9437d3a0e6d9640ec1f966055c729b.camel@intel.com> (raw)
In-Reply-To: <20240612183905.GJ386318@ls.amr.corp.intel.com>

On Wed, 2024-06-12 at 11:39 -0700, Isaku Yamahata wrote:
> > TDX of course has the limitation around the ordering of the zapping S-EPT.
> > So I
> > read the comment to be referring to how the implementation avoids zapping
> > any
> > non-leaf PTEs during TD runtime.
> > 
> > But I'm going to have to circle back here after investigating a bit more.
> > Isaku,
> > any comments on this comment and conditional?
> 
> It's for large page page merge/split.  At this point, it seems only confusing.
> We need only leaf zapping.  Maybe reflect_removed_leaf_spte() or something.
> Later we can come back when large page support.

Yes, I don't see the need for the is_shadow_present_pte() in this function. The
leaf check is needed, but actually it could be done well enough in TDX code for
now (for as long as we have no huge pages).

diff --git a/arch/x86/kvm/vmx/tdx.c b/arch/x86/kvm/vmx/tdx.c
index 0155b8330e15..e54dd2355005 100644
--- a/arch/x86/kvm/vmx/tdx.c
+++ b/arch/x86/kvm/vmx/tdx.c
@@ -1721,6 +1721,10 @@ static int tdx_sept_remove_private_spte(struct kvm *kvm,
gfn_t gfn,
 {
        int ret;
 
+       /* Only 4k pages currently, nothing to do for other levels */
+       if (level != PG_LEVEL_4K)
+               return 0;
+
        ret = tdx_sept_zap_private_spte(kvm, gfn, level);
        if (ret)
                return ret;


The benefits would be that we have less mirror logic in core MMU code that
actually is about TDX specifics unrelated to the mirror concept. The downsides
are returning success there feels kind of wrong. I'm going to move forward with
dropping the is_shadow_present_pte() check and adding a comment (see below), but
I thought the alternative was worth mentioning because I was tempted.

/*
 * External (TDX) SPTEs are limited to PG_LEVEL_4K, and external
 * PTs are removed in a special order, involving free_external_spt().
 * But remove_external_spte() will be called on non-leaf PTEs via
 * __tdp_mmu_zap_root(), so avoid the error the former would return
 * in this case.
 */

  reply	other threads:[~2024-06-14 23:11 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-30 21:06 [PATCH v2 00/15] TDX MMU prep series part 1 Rick Edgecombe
2024-05-30 21:07 ` [PATCH v2 01/15] KVM: Add member to struct kvm_gfn_range for target alias Rick Edgecombe
2024-06-06 15:55   ` Paolo Bonzini
2024-06-06 16:06     ` Edgecombe, Rick P
2024-05-30 21:07 ` [PATCH v2 02/15] KVM: x86: Add a VM type define for TDX Rick Edgecombe
2024-05-30 21:07 ` [PATCH v2 03/15] KVM: x86/mmu: Add a mirrored pointer to struct kvm_mmu_page Rick Edgecombe
2024-06-06 16:04   ` Paolo Bonzini
2024-06-06 16:12     ` Edgecombe, Rick P
2024-05-30 21:07 ` [PATCH v2 04/15] KVM: x86/mmu: Add a new mirror_pt member for union kvm_mmu_page_role Rick Edgecombe
2024-06-06 16:06   ` Paolo Bonzini
2024-06-06 16:15     ` Edgecombe, Rick P
2024-05-30 21:07 ` [PATCH v2 05/15] KVM: x86/mmu: Make kvm_tdp_mmu_alloc_root() return void Rick Edgecombe
2024-06-06 16:10   ` Paolo Bonzini
2024-05-30 21:07 ` [PATCH v2 06/15] KVM: x86/mmu: Support GFN direct mask Rick Edgecombe
2024-06-07  7:59   ` Paolo Bonzini
2024-06-07 18:39     ` Edgecombe, Rick P
2024-06-08  8:52       ` Paolo Bonzini
2024-06-08  9:08       ` Paolo Bonzini
2024-06-09 23:25         ` Edgecombe, Rick P
2024-06-07  8:00   ` Paolo Bonzini
2024-05-30 21:07 ` [PATCH v2 07/15] KVM: x86/tdp_mmu: Extract root invalid check from tdx_mmu_next_root() Rick Edgecombe
2024-05-30 21:07 ` [PATCH v2 08/15] KVM: x86/tdp_mmu: Introduce KVM MMU root types to specify page table type Rick Edgecombe
2024-06-07  8:10   ` Paolo Bonzini
2024-06-07 20:06     ` Edgecombe, Rick P
2024-05-30 21:07 ` [PATCH v2 09/15] KVM: x86/tdp_mmu: Support mirror root for TDP MMU Rick Edgecombe
2024-05-30 21:57   ` Edgecombe, Rick P
2024-06-07  8:27     ` Paolo Bonzini
2024-06-07  8:46   ` Paolo Bonzini
2024-06-07 20:27     ` Edgecombe, Rick P
2024-06-08  9:13       ` Paolo Bonzini
2024-06-10  0:08         ` Edgecombe, Rick P
2024-06-10  9:23           ` Paolo Bonzini
2024-06-10 16:00             ` Edgecombe, Rick P
2024-05-30 21:07 ` [PATCH v2 10/15] KVM: x86/tdp_mmu: Reflect building mirror page tables Rick Edgecombe
2024-06-07 10:10   ` Paolo Bonzini
2024-06-07 20:52     ` Edgecombe, Rick P
2024-05-30 21:07 ` [PATCH v2 11/15] KVM: x86/tdp_mmu: Reflect tearing down " Rick Edgecombe
2024-06-07 11:37   ` Paolo Bonzini
2024-06-07 21:46     ` Edgecombe, Rick P
2024-06-08  9:25       ` Paolo Bonzini
2024-06-12 18:39       ` Isaku Yamahata
2024-06-14 23:11         ` Edgecombe, Rick P [this message]
2024-05-30 21:07 ` [PATCH v2 12/15] KVM: x86/tdp_mmu: Take root types for kvm_tdp_mmu_invalidate_all_roots() Rick Edgecombe
2024-05-30 21:07 ` [PATCH v2 13/15] KVM: x86/tdp_mmu: Make mmu notifier callbacks to check kvm_process Rick Edgecombe
2024-06-07  8:56   ` Paolo Bonzini
2024-06-07 22:12     ` Edgecombe, Rick P
2024-06-08  9:15       ` Paolo Bonzini
2024-06-10  1:06         ` Edgecombe, Rick P
2024-05-30 21:07 ` [PATCH v2 14/15] KVM: x86/tdp_mmu: Invalidate correct roots Rick Edgecombe
2024-06-07  9:03   ` Paolo Bonzini
2024-06-07 22:31     ` Edgecombe, Rick P
2024-05-30 21:07 ` [PATCH v2 15/15] KVM: x86/tdp_mmu: Add a helper function to walk down the TDP MMU Rick Edgecombe
2024-06-07  9:31   ` Paolo Bonzini
2024-06-07 23:39     ` Edgecombe, Rick P
2024-06-08  9:17       ` Paolo Bonzini
2024-06-12 18:56       ` Isaku Yamahata
2024-06-07 11:39 ` [PATCH v2 00/15] TDX MMU prep series part 1 Paolo Bonzini
2024-06-07 22:54   ` Edgecombe, Rick P

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=dd0fe900fc9437d3a0e6d9640ec1f966055c729b.camel@intel.com \
    --to=rick.p.edgecombe@intel.com \
    --cc=dmatlack@google.com \
    --cc=erdemaktas@google.com \
    --cc=isaku.yamahata@gmail.com \
    --cc=isaku.yamahata@intel.com \
    --cc=isaku.yamahata@linux.intel.com \
    --cc=kai.huang@intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=sagis@google.com \
    --cc=seanjc@google.com \
    --cc=yan.y.zhao@intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox