From: Binbin Wu <binbin.wu@linux.intel.com>
To: Sean Christopherson <seanjc@google.com>
Cc: Marc Zyngier <maz@kernel.org>,
Oliver Upton <oliver.upton@linux.dev>,
Tianrui Zhao <zhaotianrui@loongson.cn>,
Bibo Mao <maobibo@loongson.cn>,
Huacai Chen <chenhuacai@kernel.org>,
Madhavan Srinivasan <maddy@linux.ibm.com>,
Anup Patel <anup@brainfault.org>, Paul Walmsley <pjw@kernel.org>,
Palmer Dabbelt <palmer@dabbelt.com>,
Albert Ou <aou@eecs.berkeley.edu>,
Christian Borntraeger <borntraeger@linux.ibm.com>,
Janosch Frank <frankja@linux.ibm.com>,
Claudio Imbrenda <imbrenda@linux.ibm.com>,
Paolo Bonzini <pbonzini@redhat.com>,
"Kirill A. Shutemov" <kas@kernel.org>,
linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev,
kvm@vger.kernel.org, loongarch@lists.linux.dev,
linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org,
x86@kernel.org, linux-coco@lists.linux.dev,
linux-kernel@vger.kernel.org, Ira Weiny <ira.weiny@intel.com>,
Kai Huang <kai.huang@intel.com>,
Michael Roth <michael.roth@amd.com>,
Yan Zhao <yan.y.zhao@intel.com>,
Vishal Annapurve <vannapurve@google.com>,
Rick Edgecombe <rick.p.edgecombe@intel.com>,
Ackerley Tng <ackerleytng@google.com>
Subject: Re: [PATCH v4 16/28] KVM: TDX: ADD pages to the TD image while populating mirror EPT entries
Date: Fri, 31 Oct 2025 16:54:39 +0800 [thread overview]
Message-ID: <91e3ca2f-2336-416a-bd37-3f6fa84d0613@linux.intel.com> (raw)
In-Reply-To: <20251030200951.3402865-17-seanjc@google.com>
On 10/31/2025 4:09 AM, Sean Christopherson wrote:
> When populating the initial memory image for a TDX guest, ADD pages to the
> TD as part of establishing the mappings in the mirror EPT, as opposed to
> creating the mappings and then doing ADD after the fact. Doing ADD in the
> S-EPT callbacks eliminates the need to track "premapped" pages, as the
> mirror EPT (M-EPT) and S-EPT are always synchronized, e.g. if ADD fails,
> KVM reverts to the previous M-EPT entry (guaranteed to be !PRESENT).
>
> Eliminating the hole where the M-EPT can have a mapping that doesn't exist
> in the S-EPT in turn obviates the need to handle errors that are unique to
> encountering a missing S-EPT entry (see tdx_is_sept_zap_err_due_to_premap()).
>
> Keeping the M-EPT and S-EPT synchronized also eliminates the need to check
> for unconsumed "premap" entries during tdx_td_finalize(), as there simply
> can't be any such entries. Dropping that check in particular reduces the
> overall cognitive load, as the management of nr_premapped with respect
> to removal of S-EPT is _very_ subtle. E.g. successful removal of an S-EPT
> entry after it completed ADD doesn't adjust nr_premapped, but it's not
> clear why that's "ok" but having half-baked entries is not (it's not truly
> "ok" in that removing pages from the image will likely prevent the guest
> from booting, but from KVM's perspective it's "ok").
>
> Doing ADD in the S-EPT path requires passing an argument via a scratch
> field, but the current approach of tracking the number of "premapped"
> pages effectively does the same. And the "premapped" counter is much more
> dangerous, as it doesn't have a singular lock to protect its usage, since
> nr_premapped can be modified as soon as mmu_lock is dropped, at least in
> theory. I.e. nr_premapped is guarded by slots_lock, but only for "happy"
> paths.
>
> Note, this approach was used/tried at various points in TDX development,
> but was ultimately discarded due to a desire to avoid stashing temporary
> state in kvm_tdx. But as above, KVM ended up with such state anyways,
> and fully committing to using temporary state provides better access
> rules (100% guarded by slots_lock), and makes several edge cases flat out
> impossible.
>
> Note #2, continue to extend the measurement outside of mmu_lock, as it's
> a slow operation (typically 16 SEAMCALLs per page whose data is included
> in the measurement), and doesn't *need* to be done under mmu_lock, e.g.
> for consistency purposes. However, MR.EXTEND isn't _that_ slow, e.g.
> ~1ms latency to measure a full page, so if it needs to be done under
> mmu_lock in the future, e.g. because KVM gains a flow that can remove
> S-EPT entries during KVM_TDX_INIT_MEM_REGION, then extending the
> measurement can also be moved into the S-EPT mapping path (again, only if
> absolutely necessary). P.S. _If_ MR.EXTEND is moved into the S-EPT path,
> take care not to return an error up the stack if TDH_MR_EXTEND fails, as
> removing the M-EPT entry but not the S-EPT entry would result in
> inconsistent state!
>
> Reviewed-by: Rick Edgecombe <rick.p.edgecombe@intel.com>
> Reviewed-by: Kai Huang <kai.huang@intel.com>
> Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Binbin Wu <binbin.wu@linux.intel.com>
One nit below.
> ---
> arch/x86/kvm/vmx/tdx.c | 106 ++++++++++++++---------------------------
> arch/x86/kvm/vmx/tdx.h | 8 +++-
> 2 files changed, 43 insertions(+), 71 deletions(-)
>
[...]
> diff --git a/arch/x86/kvm/vmx/tdx.h b/arch/x86/kvm/vmx/tdx.h
> index ca39a9391db1..1b00adbbaf77 100644
> --- a/arch/x86/kvm/vmx/tdx.h
> +++ b/arch/x86/kvm/vmx/tdx.h
> @@ -36,8 +36,12 @@ struct kvm_tdx {
>
> struct tdx_td td;
>
> - /* For KVM_TDX_INIT_MEM_REGION. */
> - atomic64_t nr_premapped;
> + /*
> + * Scratch pointer used to pass the source page to tdx_mem_page_add.
tdx_mem_page_add -> tdx_mem_page_add()
> + * Protected by slots_lock, and non-NULL only when mapping a private
> + * pfn via tdx_gmem_post_populate().
> + */
> + struct page *page_add_src;
>
> /*
> * Prevent vCPUs from TD entry to ensure SEPT zap related SEAMCALLs do
--
kvm-riscv mailing list
kvm-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kvm-riscv
WARNING: multiple messages have this Message-ID (diff)
From: Binbin Wu <binbin.wu@linux.intel.com>
To: Sean Christopherson <seanjc@google.com>
Cc: Marc Zyngier <maz@kernel.org>,
Oliver Upton <oliver.upton@linux.dev>,
Tianrui Zhao <zhaotianrui@loongson.cn>,
Bibo Mao <maobibo@loongson.cn>,
Huacai Chen <chenhuacai@kernel.org>,
Madhavan Srinivasan <maddy@linux.ibm.com>,
Anup Patel <anup@brainfault.org>, Paul Walmsley <pjw@kernel.org>,
Palmer Dabbelt <palmer@dabbelt.com>,
Albert Ou <aou@eecs.berkeley.edu>,
Christian Borntraeger <borntraeger@linux.ibm.com>,
Janosch Frank <frankja@linux.ibm.com>,
Claudio Imbrenda <imbrenda@linux.ibm.com>,
Paolo Bonzini <pbonzini@redhat.com>,
"Kirill A. Shutemov" <kas@kernel.org>,
linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev,
kvm@vger.kernel.org, loongarch@lists.linux.dev,
linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org,
x86@kernel.org, linux-coco@lists.linux.dev,
linux-kernel@vger.kernel.org, Ira Weiny <ira.weiny@intel.com>,
Kai Huang <kai.huang@intel.com>,
Michael Roth <michael.roth@amd.com>,
Yan Zhao <yan.y.zhao@intel.com>,
Vishal Annapurve <vannapurve@google.com>,
Rick Edgecombe <rick.p.edgecombe@intel.com>,
Ackerley Tng <ackerleytng@google.com>
Subject: Re: [PATCH v4 16/28] KVM: TDX: ADD pages to the TD image while populating mirror EPT entries
Date: Fri, 31 Oct 2025 16:54:39 +0800 [thread overview]
Message-ID: <91e3ca2f-2336-416a-bd37-3f6fa84d0613@linux.intel.com> (raw)
In-Reply-To: <20251030200951.3402865-17-seanjc@google.com>
On 10/31/2025 4:09 AM, Sean Christopherson wrote:
> When populating the initial memory image for a TDX guest, ADD pages to the
> TD as part of establishing the mappings in the mirror EPT, as opposed to
> creating the mappings and then doing ADD after the fact. Doing ADD in the
> S-EPT callbacks eliminates the need to track "premapped" pages, as the
> mirror EPT (M-EPT) and S-EPT are always synchronized, e.g. if ADD fails,
> KVM reverts to the previous M-EPT entry (guaranteed to be !PRESENT).
>
> Eliminating the hole where the M-EPT can have a mapping that doesn't exist
> in the S-EPT in turn obviates the need to handle errors that are unique to
> encountering a missing S-EPT entry (see tdx_is_sept_zap_err_due_to_premap()).
>
> Keeping the M-EPT and S-EPT synchronized also eliminates the need to check
> for unconsumed "premap" entries during tdx_td_finalize(), as there simply
> can't be any such entries. Dropping that check in particular reduces the
> overall cognitive load, as the management of nr_premapped with respect
> to removal of S-EPT is _very_ subtle. E.g. successful removal of an S-EPT
> entry after it completed ADD doesn't adjust nr_premapped, but it's not
> clear why that's "ok" but having half-baked entries is not (it's not truly
> "ok" in that removing pages from the image will likely prevent the guest
> from booting, but from KVM's perspective it's "ok").
>
> Doing ADD in the S-EPT path requires passing an argument via a scratch
> field, but the current approach of tracking the number of "premapped"
> pages effectively does the same. And the "premapped" counter is much more
> dangerous, as it doesn't have a singular lock to protect its usage, since
> nr_premapped can be modified as soon as mmu_lock is dropped, at least in
> theory. I.e. nr_premapped is guarded by slots_lock, but only for "happy"
> paths.
>
> Note, this approach was used/tried at various points in TDX development,
> but was ultimately discarded due to a desire to avoid stashing temporary
> state in kvm_tdx. But as above, KVM ended up with such state anyways,
> and fully committing to using temporary state provides better access
> rules (100% guarded by slots_lock), and makes several edge cases flat out
> impossible.
>
> Note #2, continue to extend the measurement outside of mmu_lock, as it's
> a slow operation (typically 16 SEAMCALLs per page whose data is included
> in the measurement), and doesn't *need* to be done under mmu_lock, e.g.
> for consistency purposes. However, MR.EXTEND isn't _that_ slow, e.g.
> ~1ms latency to measure a full page, so if it needs to be done under
> mmu_lock in the future, e.g. because KVM gains a flow that can remove
> S-EPT entries during KVM_TDX_INIT_MEM_REGION, then extending the
> measurement can also be moved into the S-EPT mapping path (again, only if
> absolutely necessary). P.S. _If_ MR.EXTEND is moved into the S-EPT path,
> take care not to return an error up the stack if TDH_MR_EXTEND fails, as
> removing the M-EPT entry but not the S-EPT entry would result in
> inconsistent state!
>
> Reviewed-by: Rick Edgecombe <rick.p.edgecombe@intel.com>
> Reviewed-by: Kai Huang <kai.huang@intel.com>
> Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Binbin Wu <binbin.wu@linux.intel.com>
One nit below.
> ---
> arch/x86/kvm/vmx/tdx.c | 106 ++++++++++++++---------------------------
> arch/x86/kvm/vmx/tdx.h | 8 +++-
> 2 files changed, 43 insertions(+), 71 deletions(-)
>
[...]
> diff --git a/arch/x86/kvm/vmx/tdx.h b/arch/x86/kvm/vmx/tdx.h
> index ca39a9391db1..1b00adbbaf77 100644
> --- a/arch/x86/kvm/vmx/tdx.h
> +++ b/arch/x86/kvm/vmx/tdx.h
> @@ -36,8 +36,12 @@ struct kvm_tdx {
>
> struct tdx_td td;
>
> - /* For KVM_TDX_INIT_MEM_REGION. */
> - atomic64_t nr_premapped;
> + /*
> + * Scratch pointer used to pass the source page to tdx_mem_page_add.
tdx_mem_page_add -> tdx_mem_page_add()
> + * Protected by slots_lock, and non-NULL only when mapping a private
> + * pfn via tdx_gmem_post_populate().
> + */
> + struct page *page_add_src;
>
> /*
> * Prevent vCPUs from TD entry to ensure SEPT zap related SEAMCALLs do
WARNING: multiple messages have this Message-ID (diff)
From: Binbin Wu <binbin.wu@linux.intel.com>
To: Sean Christopherson <seanjc@google.com>
Cc: Marc Zyngier <maz@kernel.org>,
Oliver Upton <oliver.upton@linux.dev>,
Tianrui Zhao <zhaotianrui@loongson.cn>,
Bibo Mao <maobibo@loongson.cn>,
Huacai Chen <chenhuacai@kernel.org>,
Madhavan Srinivasan <maddy@linux.ibm.com>,
Anup Patel <anup@brainfault.org>, Paul Walmsley <pjw@kernel.org>,
Palmer Dabbelt <palmer@dabbelt.com>,
Albert Ou <aou@eecs.berkeley.edu>,
Christian Borntraeger <borntraeger@linux.ibm.com>,
Janosch Frank <frankja@linux.ibm.com>,
Claudio Imbrenda <imbrenda@linux.ibm.com>,
Paolo Bonzini <pbonzini@redhat.com>,
"Kirill A. Shutemov" <kas@kernel.org>,
linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev,
kvm@vger.kernel.org, loongarch@lists.linux.dev,
linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org,
x86@kernel.org, linux-coco@lists.linux.dev,
linux-kernel@vger.kernel.org, Ira Weiny <ira.weiny@intel.com>,
Kai Huang <kai.huang@intel.com>,
Michael Roth <michael.roth@amd.com>,
Yan Zhao <yan.y.zhao@intel.com>,
Vishal Annapurve <vannapurve@google.com>,
Rick Edgecombe <rick.p.edgecombe@intel.com>,
Ackerley Tng <ackerleytng@google.com>
Subject: Re: [PATCH v4 16/28] KVM: TDX: ADD pages to the TD image while populating mirror EPT entries
Date: Fri, 31 Oct 2025 16:54:39 +0800 [thread overview]
Message-ID: <91e3ca2f-2336-416a-bd37-3f6fa84d0613@linux.intel.com> (raw)
In-Reply-To: <20251030200951.3402865-17-seanjc@google.com>
On 10/31/2025 4:09 AM, Sean Christopherson wrote:
> When populating the initial memory image for a TDX guest, ADD pages to the
> TD as part of establishing the mappings in the mirror EPT, as opposed to
> creating the mappings and then doing ADD after the fact. Doing ADD in the
> S-EPT callbacks eliminates the need to track "premapped" pages, as the
> mirror EPT (M-EPT) and S-EPT are always synchronized, e.g. if ADD fails,
> KVM reverts to the previous M-EPT entry (guaranteed to be !PRESENT).
>
> Eliminating the hole where the M-EPT can have a mapping that doesn't exist
> in the S-EPT in turn obviates the need to handle errors that are unique to
> encountering a missing S-EPT entry (see tdx_is_sept_zap_err_due_to_premap()).
>
> Keeping the M-EPT and S-EPT synchronized also eliminates the need to check
> for unconsumed "premap" entries during tdx_td_finalize(), as there simply
> can't be any such entries. Dropping that check in particular reduces the
> overall cognitive load, as the management of nr_premapped with respect
> to removal of S-EPT is _very_ subtle. E.g. successful removal of an S-EPT
> entry after it completed ADD doesn't adjust nr_premapped, but it's not
> clear why that's "ok" but having half-baked entries is not (it's not truly
> "ok" in that removing pages from the image will likely prevent the guest
> from booting, but from KVM's perspective it's "ok").
>
> Doing ADD in the S-EPT path requires passing an argument via a scratch
> field, but the current approach of tracking the number of "premapped"
> pages effectively does the same. And the "premapped" counter is much more
> dangerous, as it doesn't have a singular lock to protect its usage, since
> nr_premapped can be modified as soon as mmu_lock is dropped, at least in
> theory. I.e. nr_premapped is guarded by slots_lock, but only for "happy"
> paths.
>
> Note, this approach was used/tried at various points in TDX development,
> but was ultimately discarded due to a desire to avoid stashing temporary
> state in kvm_tdx. But as above, KVM ended up with such state anyways,
> and fully committing to using temporary state provides better access
> rules (100% guarded by slots_lock), and makes several edge cases flat out
> impossible.
>
> Note #2, continue to extend the measurement outside of mmu_lock, as it's
> a slow operation (typically 16 SEAMCALLs per page whose data is included
> in the measurement), and doesn't *need* to be done under mmu_lock, e.g.
> for consistency purposes. However, MR.EXTEND isn't _that_ slow, e.g.
> ~1ms latency to measure a full page, so if it needs to be done under
> mmu_lock in the future, e.g. because KVM gains a flow that can remove
> S-EPT entries during KVM_TDX_INIT_MEM_REGION, then extending the
> measurement can also be moved into the S-EPT mapping path (again, only if
> absolutely necessary). P.S. _If_ MR.EXTEND is moved into the S-EPT path,
> take care not to return an error up the stack if TDH_MR_EXTEND fails, as
> removing the M-EPT entry but not the S-EPT entry would result in
> inconsistent state!
>
> Reviewed-by: Rick Edgecombe <rick.p.edgecombe@intel.com>
> Reviewed-by: Kai Huang <kai.huang@intel.com>
> Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Binbin Wu <binbin.wu@linux.intel.com>
One nit below.
> ---
> arch/x86/kvm/vmx/tdx.c | 106 ++++++++++++++---------------------------
> arch/x86/kvm/vmx/tdx.h | 8 +++-
> 2 files changed, 43 insertions(+), 71 deletions(-)
>
[...]
> diff --git a/arch/x86/kvm/vmx/tdx.h b/arch/x86/kvm/vmx/tdx.h
> index ca39a9391db1..1b00adbbaf77 100644
> --- a/arch/x86/kvm/vmx/tdx.h
> +++ b/arch/x86/kvm/vmx/tdx.h
> @@ -36,8 +36,12 @@ struct kvm_tdx {
>
> struct tdx_td td;
>
> - /* For KVM_TDX_INIT_MEM_REGION. */
> - atomic64_t nr_premapped;
> + /*
> + * Scratch pointer used to pass the source page to tdx_mem_page_add.
tdx_mem_page_add -> tdx_mem_page_add()
> + * Protected by slots_lock, and non-NULL only when mapping a private
> + * pfn via tdx_gmem_post_populate().
> + */
> + struct page *page_add_src;
>
> /*
> * Prevent vCPUs from TD entry to ensure SEPT zap related SEAMCALLs do
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
next prev parent reply other threads:[~2025-10-31 8:54 UTC|newest]
Thread overview: 198+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-30 20:09 [PATCH v4 00/28] KVM: x86/mmu: TDX post-populate cleanups Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` [PATCH v4 01/28] KVM: Make support for kvm_arch_vcpu_async_ioctl() mandatory Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` [PATCH v4 02/28] KVM: Rename kvm_arch_vcpu_async_ioctl() to kvm_arch_vcpu_unlocked_ioctl() Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` [PATCH v4 03/28] KVM: TDX: Drop PROVE_MMU=y sanity check on to-be-populated mappings Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` [PATCH v4 04/28] KVM: x86/mmu: Add dedicated API to map guest_memfd pfn into TDP MMU Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-31 7:58 ` Binbin Wu
2025-10-31 7:58 ` Binbin Wu
2025-10-31 7:58 ` Binbin Wu
2025-10-30 20:09 ` [PATCH v4 05/28] KVM: x86/mmu: WARN if KVM attempts to map into an invalid TDP MMU root Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 22:17 ` Huang, Kai
2025-10-30 22:17 ` Huang, Kai
2025-10-30 22:17 ` Huang, Kai
2025-10-30 20:09 ` [PATCH v4 06/28] Revert "KVM: x86/tdp_mmu: Add a helper function to walk down the TDP MMU" Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` [PATCH v4 07/28] KVM: x86/mmu: Rename kvm_tdp_map_page() to kvm_tdp_page_prefault() Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` [PATCH v4 08/28] KVM: TDX: Drop superfluous page pinning in S-EPT management Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-31 8:29 ` Yan Zhao
2025-10-31 8:29 ` Yan Zhao
2025-10-31 8:29 ` Yan Zhao
2025-10-31 17:12 ` Sean Christopherson
2025-10-31 17:12 ` Sean Christopherson
2025-10-31 17:12 ` Sean Christopherson
2025-10-30 20:09 ` [PATCH v4 09/28] KVM: TDX: Return -EIO, not -EINVAL, on a KVM_BUG_ON() condition Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 22:20 ` Huang, Kai
2025-10-30 22:20 ` Huang, Kai
2025-10-30 22:20 ` Huang, Kai
2025-10-30 20:09 ` [PATCH v4 10/28] KVM: TDX: Fold tdx_sept_drop_private_spte() into tdx_sept_remove_private_spte() Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-31 8:23 ` Yan Zhao
2025-10-31 8:23 ` Yan Zhao
2025-10-31 8:23 ` Yan Zhao
2025-10-30 20:09 ` [PATCH v4 11/28] KVM: x86/mmu: Drop the return code from kvm_x86_ops.remove_external_spte() Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 22:26 ` Huang, Kai
2025-10-30 22:26 ` Huang, Kai
2025-10-30 22:26 ` Huang, Kai
2025-10-30 20:09 ` [PATCH v4 12/28] KVM: TDX: WARN if mirror SPTE doesn't have full RWX when creating S-EPT mapping Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 22:59 ` Huang, Kai
2025-10-30 22:59 ` Huang, Kai
2025-10-30 22:59 ` Huang, Kai
2025-10-30 23:40 ` Sean Christopherson
2025-10-30 23:40 ` Sean Christopherson
2025-10-30 23:40 ` Sean Christopherson
2025-10-30 23:59 ` Huang, Kai
2025-10-30 23:59 ` Huang, Kai
2025-10-30 23:59 ` Huang, Kai
2025-10-31 8:19 ` Binbin Wu
2025-10-31 8:19 ` Binbin Wu
2025-10-31 8:19 ` Binbin Wu
2025-10-30 20:09 ` [PATCH v4 13/28] KVM: TDX: Avoid a double-KVM_BUG_ON() in tdx_sept_zap_private_spte() Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` [PATCH v4 14/28] KVM: TDX: Use atomic64_dec_return() instead of a poor equivalent Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` [PATCH v4 15/28] KVM: TDX: Fold tdx_mem_page_record_premap_cnt() into its sole caller Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` [PATCH v4 16/28] KVM: TDX: ADD pages to the TD image while populating mirror EPT entries Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-31 8:54 ` Binbin Wu [this message]
2025-10-31 8:54 ` Binbin Wu
2025-10-31 8:54 ` Binbin Wu
2025-10-30 20:09 ` [PATCH v4 17/28] KVM: TDX: Fold tdx_sept_zap_private_spte() into tdx_sept_remove_private_spte() Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-31 8:56 ` Binbin Wu
2025-10-31 8:56 ` Binbin Wu
2025-10-31 8:56 ` Binbin Wu
2025-10-30 20:09 ` [PATCH v4 18/28] KVM: TDX: Combine KVM_BUG_ON + pr_tdx_error() into TDX_BUG_ON() Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 23:20 ` Huang, Kai
2025-10-30 23:20 ` Huang, Kai
2025-10-30 23:20 ` Huang, Kai
2025-10-31 8:58 ` Binbin Wu
2025-10-31 8:58 ` Binbin Wu
2025-10-31 8:58 ` Binbin Wu
2025-10-30 20:09 ` [PATCH v4 19/28] KVM: TDX: Derive error argument names from the local variable names Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-31 9:00 ` Binbin Wu
2025-10-31 9:00 ` Binbin Wu
2025-10-31 9:00 ` Binbin Wu
2025-10-30 20:09 ` [PATCH v4 20/28] KVM: TDX: Assert that mmu_lock is held for write when removing S-EPT entries Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 23:03 ` Huang, Kai
2025-10-30 23:03 ` Huang, Kai
2025-10-30 23:03 ` Huang, Kai
2025-10-31 9:05 ` Binbin Wu
2025-10-31 9:05 ` Binbin Wu
2025-10-31 9:05 ` Binbin Wu
2025-10-30 20:09 ` [PATCH v4 21/28] KVM: TDX: Add macro to retry SEAMCALLs when forcing vCPUs out of guest Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 23:05 ` Huang, Kai
2025-10-30 23:05 ` Huang, Kai
2025-10-30 23:05 ` Huang, Kai
2025-10-31 9:08 ` Binbin Wu
2025-10-31 9:08 ` Binbin Wu
2025-10-31 9:08 ` Binbin Wu
2025-10-30 20:09 ` [PATCH v4 22/28] KVM: TDX: Add tdx_get_cmd() helper to get and validate sub-ioctl command Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-31 9:11 ` Binbin Wu
2025-10-31 9:11 ` Binbin Wu
2025-10-31 9:11 ` Binbin Wu
2025-10-30 20:09 ` [PATCH v4 23/28] KVM: TDX: Convert INIT_MEM_REGION and INIT_VCPU to "unlocked" vCPU ioctl Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-31 9:15 ` Binbin Wu
2025-10-31 9:15 ` Binbin Wu
2025-10-31 9:15 ` Binbin Wu
2025-10-30 20:09 ` [PATCH v4 24/28] KVM: TDX: Use guard() to acquire kvm->lock in tdx_vm_ioctl() Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-31 9:17 ` Binbin Wu
2025-10-31 9:17 ` Binbin Wu
2025-10-31 9:17 ` Binbin Wu
2025-10-30 20:09 ` [PATCH v4 25/28] KVM: TDX: Don't copy "cmd" back to userspace for KVM_TDX_CAPABILITIES Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 23:06 ` Huang, Kai
2025-10-30 23:06 ` Huang, Kai
2025-10-30 23:06 ` Huang, Kai
2025-10-30 20:09 ` [PATCH v4 26/28] KVM: TDX: Guard VM state transitions with "all" the locks Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 23:08 ` Huang, Kai
2025-10-30 23:08 ` Huang, Kai
2025-10-30 23:08 ` Huang, Kai
2025-10-31 8:26 ` Yan Zhao
2025-10-31 8:26 ` Yan Zhao
2025-10-31 8:26 ` Yan Zhao
2025-10-31 17:34 ` Sean Christopherson
2025-10-31 17:34 ` Sean Christopherson
2025-10-31 17:34 ` Sean Christopherson
2025-11-03 1:36 ` Yan Zhao
2025-11-03 1:36 ` Yan Zhao
2025-11-03 1:36 ` Yan Zhao
2025-10-30 20:09 ` [PATCH v4 27/28] KVM: TDX: Bug the VM if extending the initial measurement fails Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 23:09 ` Huang, Kai
2025-10-30 23:09 ` Huang, Kai
2025-10-30 23:09 ` Huang, Kai
2025-11-04 6:16 ` Binbin Wu
2025-11-04 6:16 ` Binbin Wu
2025-11-04 6:16 ` Binbin Wu
2025-11-04 18:02 ` Sean Christopherson
2025-11-04 18:02 ` Sean Christopherson
2025-11-04 18:02 ` Sean Christopherson
2025-10-30 20:09 ` [PATCH v4 28/28] KVM: TDX: Fix list_add corruption during vcpu_load() Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 20:09 ` Sean Christopherson
2025-10-30 23:12 ` Huang, Kai
2025-10-30 23:12 ` Huang, Kai
2025-10-30 23:12 ` Huang, Kai
2025-10-30 23:19 ` [PATCH v4 00/28] KVM: x86/mmu: TDX post-populate cleanups Huang, Kai
2025-10-30 23:19 ` Huang, Kai
2025-10-30 23:19 ` Huang, Kai
2025-10-31 8:54 ` Yan Zhao
2025-10-31 8:54 ` Yan Zhao
2025-10-31 8:54 ` Yan Zhao
2025-10-31 17:28 ` Edgecombe, Rick P
2025-10-31 17:28 ` Edgecombe, Rick P
2025-10-31 17:28 ` Edgecombe, Rick P
2025-11-04 17:58 ` Sean Christopherson
2025-11-04 17:58 ` Sean Christopherson
2025-11-04 17:58 ` Sean Christopherson
2025-11-10 15:37 ` Sean Christopherson
2025-11-10 15:37 ` Sean Christopherson
2025-11-10 15:37 ` Sean Christopherson
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=91e3ca2f-2336-416a-bd37-3f6fa84d0613@linux.intel.com \
--to=binbin.wu@linux.intel.com \
--cc=ackerleytng@google.com \
--cc=anup@brainfault.org \
--cc=aou@eecs.berkeley.edu \
--cc=borntraeger@linux.ibm.com \
--cc=chenhuacai@kernel.org \
--cc=frankja@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=ira.weiny@intel.com \
--cc=kai.huang@intel.com \
--cc=kas@kernel.org \
--cc=kvm-riscv@lists.infradead.org \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.linux.dev \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-coco@lists.linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=loongarch@lists.linux.dev \
--cc=maddy@linux.ibm.com \
--cc=maobibo@loongson.cn \
--cc=maz@kernel.org \
--cc=michael.roth@amd.com \
--cc=oliver.upton@linux.dev \
--cc=palmer@dabbelt.com \
--cc=pbonzini@redhat.com \
--cc=pjw@kernel.org \
--cc=rick.p.edgecombe@intel.com \
--cc=seanjc@google.com \
--cc=vannapurve@google.com \
--cc=x86@kernel.org \
--cc=yan.y.zhao@intel.com \
--cc=zhaotianrui@loongson.cn \
/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.