linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: isaku.yamahata@intel.com
To: kvm@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: isaku.yamahata@intel.com, isaku.yamahata@gmail.com,
	Paolo Bonzini <pbonzini@redhat.com>,
	erdemaktas@google.com, Sean Christopherson <seanjc@google.com>,
	Sagi Shahar <sagis@google.com>,
	David Matlack <dmatlack@google.com>,
	Kai Huang <kai.huang@intel.com>,
	Zhi Wang <zhi.wang.linux@gmail.com>,
	chen.bo@intel.com,
	Sean Christopherson <sean.j.christopherson@intel.com>
Subject: [PATCH v14 011/113] KVM: TDX: Add C wrapper functions for SEAMCALLs to the TDX module
Date: Sun, 28 May 2023 21:18:53 -0700	[thread overview]
Message-ID: <37b118268ccf73d8e9cc1ef8f9fb7376fb732d60.1685333727.git.isaku.yamahata@intel.com> (raw)
In-Reply-To: <cover.1685333727.git.isaku.yamahata@intel.com>

From: Isaku Yamahata <isaku.yamahata@intel.com>

A VMM interacts with the TDX module using a new instruction (SEAMCALL).
For instance, a TDX VMM does not have full access to the VM control
structure corresponding to VMX VMCS.  Instead, a VMM induces the TDX module
to act on behalf via SEAMCALLs.

Export __seamcall and define C wrapper functions for SEAMCALLs for
readability.

Some SEAMCALL APIs donate host pages to TDX module or guest TD, and the
donated pages are encrypted.  Such SEAMCALLs flush cache lines
(typically by movdir64b instruction), but some don't.  Those that don't
clear cache lines require the VMM to flush the cache lines to avoid cache
line alias.

Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: Isaku Yamahata <isaku.yamahata@intel.com>
---
 arch/x86/include/asm/tdx.h       |   4 +
 arch/x86/kvm/vmx/tdx_ops.h       | 202 +++++++++++++++++++++++++++++++
 arch/x86/virt/vmx/tdx/seamcall.S |   2 +
 arch/x86/virt/vmx/tdx/tdx.h      |   3 -
 4 files changed, 208 insertions(+), 3 deletions(-)
 create mode 100644 arch/x86/kvm/vmx/tdx_ops.h

diff --git a/arch/x86/include/asm/tdx.h b/arch/x86/include/asm/tdx.h
index 112a5b9bd5cd..6c01ab572c1f 100644
--- a/arch/x86/include/asm/tdx.h
+++ b/arch/x86/include/asm/tdx.h
@@ -104,10 +104,14 @@ static inline long tdx_kvm_hypercall(unsigned int nr, unsigned long p1,
 bool platform_tdx_enabled(void);
 int tdx_cpu_enable(void);
 int tdx_enable(void);
+u64 __seamcall(u64 op, u64 rcx, u64 rdx, u64 r8, u64 r9,
+	       struct tdx_module_output *out);
 #else	/* !CONFIG_INTEL_TDX_HOST */
 static inline bool platform_tdx_enabled(void) { return false; }
 static inline int tdx_cpu_enable(void) { return -EINVAL; }
 static inline int tdx_enable(void)  { return -EINVAL; }
+static inline u64 __seamcall(u64 op, u64 rcx, u64 rdx, u64 r8, u64 r9,
+			     struct tdx_module_output *out) { return TDX_SEAMCALL_UD; };
 #endif	/* CONFIG_INTEL_TDX_HOST */
 
 #endif /* !__ASSEMBLY__ */
diff --git a/arch/x86/kvm/vmx/tdx_ops.h b/arch/x86/kvm/vmx/tdx_ops.h
new file mode 100644
index 000000000000..893cc6c25f3b
--- /dev/null
+++ b/arch/x86/kvm/vmx/tdx_ops.h
@@ -0,0 +1,202 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/* constants/data definitions for TDX SEAMCALLs */
+
+#ifndef __KVM_X86_TDX_OPS_H
+#define __KVM_X86_TDX_OPS_H
+
+#include <linux/compiler.h>
+
+#include <asm/cacheflush.h>
+#include <asm/asm.h>
+#include <asm/kvm_host.h>
+
+#include "tdx_errno.h"
+#include "tdx_arch.h"
+#include "x86.h"
+
+static inline u64 kvm_seamcall(u64 op, u64 rcx, u64 rdx, u64 r8, u64 r9,
+			       struct tdx_module_output *out)
+{
+	u64 ret;
+
+	ret = __seamcall(op, rcx, rdx, r8, r9, out);
+	if (unlikely(ret == TDX_SEAMCALL_UD)) {
+		/*
+		 * TDX requires VMXON or #UD.  In the case of reboot or kexec,
+		 * VMX is made off (VMXOFF) by kvm reboot notifier,
+		 * kvm_reboot(), while TDs are still running.  The callers check
+		 * the returned error and complain.  Suppress it by returning 0.
+		 */
+		kvm_spurious_fault();
+		return 0;
+	}
+	return ret;
+}
+
+static inline u64 tdh_mng_addcx(hpa_t tdr, hpa_t addr)
+{
+	clflush_cache_range(__va(addr), PAGE_SIZE);
+	return kvm_seamcall(TDH_MNG_ADDCX, addr, tdr, 0, 0, NULL);
+}
+
+static inline u64 tdh_mem_page_add(hpa_t tdr, gpa_t gpa, hpa_t hpa, hpa_t source,
+				   struct tdx_module_output *out)
+{
+	clflush_cache_range(__va(hpa), PAGE_SIZE);
+	return kvm_seamcall(TDH_MEM_PAGE_ADD, gpa, tdr, hpa, source, out);
+}
+
+static inline u64 tdh_mem_sept_add(hpa_t tdr, gpa_t gpa, int level, hpa_t page,
+				   struct tdx_module_output *out)
+{
+	clflush_cache_range(__va(page), PAGE_SIZE);
+	return kvm_seamcall(TDH_MEM_SEPT_ADD, gpa | level, tdr, page, 0, out);
+}
+
+static inline u64 tdh_mem_sept_remove(hpa_t tdr, gpa_t gpa, int level,
+				      struct tdx_module_output *out)
+{
+	return kvm_seamcall(TDH_MEM_SEPT_REMOVE, gpa | level, tdr, 0, 0, out);
+}
+
+static inline u64 tdh_vp_addcx(hpa_t tdvpr, hpa_t addr)
+{
+	clflush_cache_range(__va(addr), PAGE_SIZE);
+	return kvm_seamcall(TDH_VP_ADDCX, addr, tdvpr, 0, 0, NULL);
+}
+
+static inline u64 tdh_mem_page_relocate(hpa_t tdr, gpa_t gpa, hpa_t hpa,
+					struct tdx_module_output *out)
+{
+	clflush_cache_range(__va(hpa), PAGE_SIZE);
+	return kvm_seamcall(TDH_MEM_PAGE_RELOCATE, gpa, tdr, hpa, 0, out);
+}
+
+static inline u64 tdh_mem_page_aug(hpa_t tdr, gpa_t gpa, hpa_t hpa,
+				   struct tdx_module_output *out)
+{
+	clflush_cache_range(__va(hpa), PAGE_SIZE);
+	return kvm_seamcall(TDH_MEM_PAGE_AUG, gpa, tdr, hpa, 0, out);
+}
+
+static inline u64 tdh_mem_range_block(hpa_t tdr, gpa_t gpa, int level,
+				      struct tdx_module_output *out)
+{
+	return kvm_seamcall(TDH_MEM_RANGE_BLOCK, gpa | level, tdr, 0, 0, out);
+}
+
+static inline u64 tdh_mng_key_config(hpa_t tdr)
+{
+	return kvm_seamcall(TDH_MNG_KEY_CONFIG, tdr, 0, 0, 0, NULL);
+}
+
+static inline u64 tdh_mng_create(hpa_t tdr, int hkid)
+{
+	clflush_cache_range(__va(tdr), PAGE_SIZE);
+	return kvm_seamcall(TDH_MNG_CREATE, tdr, hkid, 0, 0, NULL);
+}
+
+static inline u64 tdh_vp_create(hpa_t tdr, hpa_t tdvpr)
+{
+	clflush_cache_range(__va(tdvpr), PAGE_SIZE);
+	return kvm_seamcall(TDH_VP_CREATE, tdvpr, tdr, 0, 0, NULL);
+}
+
+static inline u64 tdh_mng_rd(hpa_t tdr, u64 field, struct tdx_module_output *out)
+{
+	return kvm_seamcall(TDH_MNG_RD, tdr, field, 0, 0, out);
+}
+
+static inline u64 tdh_mr_extend(hpa_t tdr, gpa_t gpa,
+				struct tdx_module_output *out)
+{
+	return kvm_seamcall(TDH_MR_EXTEND, gpa, tdr, 0, 0, out);
+}
+
+static inline u64 tdh_mr_finalize(hpa_t tdr)
+{
+	return kvm_seamcall(TDH_MR_FINALIZE, tdr, 0, 0, 0, NULL);
+}
+
+static inline u64 tdh_vp_flush(hpa_t tdvpr)
+{
+	return kvm_seamcall(TDH_VP_FLUSH, tdvpr, 0, 0, 0, NULL);
+}
+
+static inline u64 tdh_mng_vpflushdone(hpa_t tdr)
+{
+	return kvm_seamcall(TDH_MNG_VPFLUSHDONE, tdr, 0, 0, 0, NULL);
+}
+
+static inline u64 tdh_mng_key_freeid(hpa_t tdr)
+{
+	return kvm_seamcall(TDH_MNG_KEY_FREEID, tdr, 0, 0, 0, NULL);
+}
+
+static inline u64 tdh_mng_init(hpa_t tdr, hpa_t td_params,
+			       struct tdx_module_output *out)
+{
+	return kvm_seamcall(TDH_MNG_INIT, tdr, td_params, 0, 0, out);
+}
+
+static inline u64 tdh_vp_init(hpa_t tdvpr, u64 rcx)
+{
+	return kvm_seamcall(TDH_VP_INIT, tdvpr, rcx, 0, 0, NULL);
+}
+
+static inline u64 tdh_vp_rd(hpa_t tdvpr, u64 field,
+			    struct tdx_module_output *out)
+{
+	return kvm_seamcall(TDH_VP_RD, tdvpr, field, 0, 0, out);
+}
+
+static inline u64 tdh_mng_key_reclaimid(hpa_t tdr)
+{
+	return kvm_seamcall(TDH_MNG_KEY_RECLAIMID, tdr, 0, 0, 0, NULL);
+}
+
+static inline u64 tdh_phymem_page_reclaim(hpa_t page,
+					  struct tdx_module_output *out)
+{
+	return kvm_seamcall(TDH_PHYMEM_PAGE_RECLAIM, page, 0, 0, 0, out);
+}
+
+static inline u64 tdh_mem_page_remove(hpa_t tdr, gpa_t gpa, int level,
+				      struct tdx_module_output *out)
+{
+	return kvm_seamcall(TDH_MEM_PAGE_REMOVE, gpa | level, tdr, 0, 0, out);
+}
+
+static inline u64 tdh_sys_lp_shutdown(void)
+{
+	return kvm_seamcall(TDH_SYS_LP_SHUTDOWN, 0, 0, 0, 0, NULL);
+}
+
+static inline u64 tdh_mem_track(hpa_t tdr)
+{
+	return kvm_seamcall(TDH_MEM_TRACK, tdr, 0, 0, 0, NULL);
+}
+
+static inline u64 tdh_mem_range_unblock(hpa_t tdr, gpa_t gpa, int level,
+					struct tdx_module_output *out)
+{
+	return kvm_seamcall(TDH_MEM_RANGE_UNBLOCK, gpa | level, tdr, 0, 0, out);
+}
+
+static inline u64 tdh_phymem_cache_wb(bool resume)
+{
+	return kvm_seamcall(TDH_PHYMEM_CACHE_WB, resume ? 1 : 0, 0, 0, 0, NULL);
+}
+
+static inline u64 tdh_phymem_page_wbinvd(hpa_t page)
+{
+	return kvm_seamcall(TDH_PHYMEM_PAGE_WBINVD, page, 0, 0, 0, NULL);
+}
+
+static inline u64 tdh_vp_wr(hpa_t tdvpr, u64 field, u64 val, u64 mask,
+			    struct tdx_module_output *out)
+{
+	return kvm_seamcall(TDH_VP_WR, tdvpr, field, val, mask, out);
+}
+
+#endif /* __KVM_X86_TDX_OPS_H */
diff --git a/arch/x86/virt/vmx/tdx/seamcall.S b/arch/x86/virt/vmx/tdx/seamcall.S
index f81be6b9c133..b90a7fe05494 100644
--- a/arch/x86/virt/vmx/tdx/seamcall.S
+++ b/arch/x86/virt/vmx/tdx/seamcall.S
@@ -1,5 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 */
 #include <linux/linkage.h>
+#include <asm/export.h>
 #include <asm/frame.h>
 
 #include "tdxcall.S"
@@ -50,3 +51,4 @@ SYM_FUNC_START(__seamcall)
 	FRAME_END
 	RET
 SYM_FUNC_END(__seamcall)
+EXPORT_SYMBOL_GPL(__seamcall)
diff --git a/arch/x86/virt/vmx/tdx/tdx.h b/arch/x86/virt/vmx/tdx/tdx.h
index 48f830087e7e..4e497f202586 100644
--- a/arch/x86/virt/vmx/tdx/tdx.h
+++ b/arch/x86/virt/vmx/tdx/tdx.h
@@ -144,7 +144,4 @@ struct tdmr_info_list {
 	int max_tdmrs;	/* How many 'tdmr_info's are allocated */
 };
 
-struct tdx_module_output;
-u64 __seamcall(u64 fn, u64 rcx, u64 rdx, u64 r8, u64 r9,
-	       struct tdx_module_output *out);
 #endif
-- 
2.25.1


  parent reply	other threads:[~2023-05-29  4:21 UTC|newest]

Thread overview: 149+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-29  4:18 [PATCH v14 000/113] KVM TDX basic feature support isaku.yamahata
2023-05-29  4:18 ` [PATCH v14 001/113] KVM: VMX: Move out vmx_x86_ops to 'main.c' to wrap VMX and TDX isaku.yamahata
2023-05-29  4:18 ` [PATCH v14 002/113] KVM: x86/vmx: initialize loaded_vmcss_on_cpu in vmx_hardware_setup() isaku.yamahata
2023-05-29  4:18 ` [PATCH v14 003/113] KVM: x86/vmx: Refactor KVM VMX module init/exit functions isaku.yamahata
2023-05-31  1:57   ` Zhi Wang
     [not found]     ` <20230531203012.GG1234772@ls.amr.corp.intel.com>
2023-05-31 22:10       ` Isaku Yamahata
2023-05-29  4:18 ` [PATCH v14 004/113] KVM: TDX: Initialize the TDX module when loading the KVM intel kernel module isaku.yamahata
2023-05-30 14:35   ` Zhi Wang
2023-05-30 17:14     ` Sean Christopherson
2023-06-06  4:19   ` Huang, Kai
2023-06-07 18:06     ` Isaku Yamahata
2023-06-12 23:55       ` Huang, Kai
2023-06-13 17:38         ` Isaku Yamahata
2023-06-14  9:41           ` Huang, Kai
2023-06-14 16:05             ` Isaku Yamahata
2023-06-14 23:14               ` Huang, Kai
2023-05-29  4:18 ` [PATCH v14 005/113] KVM: TDX: Add placeholders for TDX VM/vcpu structure isaku.yamahata
2023-05-29  4:18 ` [PATCH v14 006/113] KVM: x86: Introduce vm_type to differentiate default VMs from confidential VMs isaku.yamahata
2023-05-29  4:18 ` [PATCH v14 007/113] KVM: TDX: Make TDX VM type supported isaku.yamahata
2023-05-29  4:18 ` [PATCH v14 008/113] [MARKER] The start of TDX KVM patch series: TDX architectural definitions isaku.yamahata
2023-05-29  4:18 ` [PATCH v14 009/113] KVM: TDX: Define " isaku.yamahata
2023-05-29  4:18 ` [PATCH v14 010/113] KVM: TDX: Add TDX "architectural" error codes isaku.yamahata
2023-05-29  4:18 ` isaku.yamahata [this message]
2023-06-01 13:24   ` [PATCH v14 011/113] KVM: TDX: Add C wrapper functions for SEAMCALLs to the TDX module Wang, Wei W
2023-06-02  0:15     ` Isaku Yamahata
2023-06-05 15:20   ` Wang, Wei W
2023-06-07 18:15     ` Isaku Yamahata
2023-06-08  1:43       ` Wang, Wei W
2023-06-08 20:10         ` Isaku Yamahata
2023-06-14 11:45           ` Wang, Wei W
2023-06-14 16:29             ` Isaku Yamahata
2023-05-29  4:18 ` [PATCH v14 012/113] KVM: TDX: Add helper functions to print TDX SEAMCALL error isaku.yamahata
2023-05-29  4:18 ` [PATCH v14 013/113] [MARKER] The start of TDX KVM patch series: TD VM creation/destruction isaku.yamahata
2023-05-29  4:18 ` [PATCH v14 014/113] x86/cpu: Add helper functions to allocate/free TDX private host key id isaku.yamahata
2023-05-29  4:18 ` [PATCH v14 015/113] x86/virt/tdx: Add a helper function to return system wide info about TDX module isaku.yamahata
2023-05-29  4:18 ` [PATCH v14 016/113] KVM: TDX: Add place holder for TDX VM specific mem_enc_op ioctl isaku.yamahata
2023-05-29  4:18 ` [PATCH v14 017/113] KVM: TDX: x86: Add ioctl to get TDX systemwide parameters isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 018/113] KVM: x86, tdx: Make KVM_CAP_MAX_VCPUS backend specific isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 019/113] KVM: TDX: create/destroy VM structure isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 020/113] KVM: TDX: initialize VM with TDX specific parameters isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 021/113] KVM: TDX: Make pmu_intel.c ignore guest TD case isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 022/113] KVM: TDX: Refuse to unplug the last cpu on the package isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 023/113] [MARKER] The start of TDX KVM patch series: TD vcpu creation/destruction isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 024/113] KVM: TDX: allocate/free TDX vcpu structure isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 025/113] KVM: TDX: Do TDX specific vcpu initialization isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 026/113] [MARKER] The start of TDX KVM patch series: KVM MMU GPA shared bits isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 027/113] KVM: x86/mmu: introduce config for PRIVATE KVM MMU isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 028/113] KVM: x86/mmu: Add address conversion functions for TDX shared bit of GPA isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 029/113] [MARKER] The start of TDX KVM patch series: KVM TDP refactoring for TDX isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 030/113] KVM: Allow page-sized MMU caches to be initialized with custom 64-bit values isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 031/113] KVM: x86/mmu: Replace hardcoded value 0 for the initial value for SPTE isaku.yamahata
2023-06-06  4:59   ` Yuan Yao
2023-06-06 13:19     ` Isaku Yamahata
2023-06-06  5:31   ` Wu, Dan1
2023-05-29  4:19 ` [PATCH v14 032/113] KVM: x86/mmu: Allow non-zero value for non-present SPTE and removed SPTE isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 033/113] KVM: x86/mmu: Add Suppress VE bit to shadow_mmio_mask/shadow_present_mask isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 034/113] KVM: x86/mmu: Track shadow MMIO value on a per-VM basis isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 035/113] KVM: x86/mmu: Disallow fast page fault on private GPA isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 036/113] KVM: x86/mmu: Allow per-VM override of the TDP max page level isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 037/113] KVM: VMX: Introduce test mode related to EPT violation VE isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 038/113] [MARKER] The start of TDX KVM patch series: KVM TDP MMU hooks isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 039/113] KVM: x86/mmu: Assume guest MMIOs are shared isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 040/113] KVM: x86/tdp_mmu: Init role member of struct kvm_mmu_page at allocation isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 041/113] KVM: x86/mmu: Add a new is_private member for union kvm_mmu_page_role isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 042/113] KVM: x86/mmu: Add a private pointer to struct kvm_mmu_page isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 043/113] KVM: Add flags to struct kvm_gfn_range isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 044/113] KVM: x86/tdp_mmu: Don't zap private pages for unsupported cases isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 045/113] KVM: x86/tdp_mmu: Sprinkle __must_check isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 046/113] KVM: x86/tdp_mmu: Support TDX private mapping for TDP MMU isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 047/113] [MARKER] The start of TDX KVM patch series: TDX EPT violation isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 048/113] KVM: x86/mmu: TDX: Do not enable page track for TD guest isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 049/113] KVM: VMX: Split out guts of EPT violation to common/exposed function isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 050/113] KVM: VMX: Move setting of EPT MMU masks to common VT-x code isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 051/113] KVM: TDX: Add accessors VMX VMCS helpers isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 052/113] KVM: TDX: Add load_mmu_pgd method for TDX isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 053/113] KVM: TDX: Retry seamcall when TDX_OPERAND_BUSY with operand SEPT isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 054/113] KVM: TDX: Require TDP MMU and mmio caching for TDX isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 055/113] KVM: TDX: TDP MMU TDX support isaku.yamahata
     [not found]   ` <CAAYXXYzR6JZq8OOD2qqC_vVGiCa3e5KmZZ+36YffGW6JFK4+Hw@mail.gmail.com>
2023-06-08 11:29     ` Erdem Aktas
2023-06-08 20:55       ` Isaku Yamahata
2023-05-29  4:19 ` [PATCH v14 056/113] KVM: TDX: MTRR: implement get_mt_mask() for TDX isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 057/113] [MARKER] The start of TDX KVM patch series: TD finalization isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 058/113] KVM: x86/mmu: Introduce kvm_mmu_map_tdp_page() for use by TDX isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 059/113] KVM: TDX: Create initial guest memory isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 060/113] KVM: TDX: Finalize VM initialization isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 061/113] [MARKER] The start of TDX KVM patch series: TD vcpu enter/exit isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 062/113] KVM: TDX: Add helper assembly function to TDX vcpu isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 063/113] KVM: TDX: Implement TDX vcpu enter/exit path isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 064/113] KVM: TDX: vcpu_run: save/restore host state(host kernel gs) isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 065/113] KVM: TDX: restore host xsave state when exit from the guest TD isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 066/113] KVM: x86: Allow to update cached values in kvm_user_return_msrs w/o wrmsr isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 067/113] KVM: TDX: restore user ret MSRs isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 068/113] KVM: TDX: Add TSX_CTRL msr into uret_msrs list isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 069/113] [MARKER] The start of TDX KVM patch series: TD vcpu exits/interrupts/hypercalls isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 070/113] KVM: TDX: complete interrupts after tdexit isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 071/113] KVM: TDX: restore debug store when TD exit isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 072/113] KVM: TDX: handle vcpu migration over logical processor isaku.yamahata
2023-07-12  6:08   ` Wen, Qian
2023-07-17 17:12     ` Isaku Yamahata
2023-05-29  4:19 ` [PATCH v14 073/113] KVM: x86: Add a switch_db_regs flag to handle TDX's auto-switched behavior isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 074/113] KVM: TDX: Add support for find pending IRQ in a protected local APIC isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 075/113] KVM: x86: Assume timer IRQ was injected if APIC state is proteced isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 076/113] KVM: TDX: remove use of struct vcpu_vmx from posted_interrupt.c isaku.yamahata
2023-05-29  4:19 ` [PATCH v14 077/113] KVM: TDX: Implement interrupt injection isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 078/113] KVM: TDX: Implements vcpu request_immediate_exit isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 079/113] KVM: TDX: Implement methods to inject NMI isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 080/113] KVM: VMX: Modify NMI and INTR handlers to take intr_info as function argument isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 081/113] KVM: VMX: Move NMI/exception handler to common helper isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 082/113] KVM: x86: Split core of hypercall emulation to helper function isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 083/113] KVM: TDX: Add a place holder to handle TDX VM exit isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 084/113] KVM: TDX: Handle vmentry failure for INTEL TD guest isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 085/113] KVM: TDX: handle EXIT_REASON_OTHER_SMI isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 086/113] KVM: TDX: handle ept violation/misconfig exit isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 087/113] KVM: TDX: handle EXCEPTION_NMI and EXTERNAL_INTERRUPT isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 088/113] KVM: TDX: Add a place holder for handler of TDX hypercalls (TDG.VP.VMCALL) isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 089/113] KVM: TDX: handle KVM hypercall with TDG.VP.VMCALL isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 090/113] KVM: TDX: Add KVM Exit for TDX TDG.VP.VMCALL isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 091/113] KVM: TDX: Handle TDX PV CPUID hypercall isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 092/113] KVM: TDX: Handle TDX PV HLT hypercall isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 093/113] KVM: TDX: Handle TDX PV port io hypercall isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 094/113] KVM: TDX: Handle TDX PV MMIO hypercall isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 095/113] KVM: TDX: Implement callbacks for MSR operations for TDX isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 096/113] KVM: TDX: Handle TDX PV rdmsr/wrmsr hypercall isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 097/113] KVM: TDX: Handle MSR MTRRCap and MTRRDefType access isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 098/113] KVM: TDX: Handle TDG.VP.VMCALL<GetTdVmCallInfo> hypercall isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 099/113] KVM: TDX: Silently discard SMI request isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 100/113] KVM: TDX: Silently ignore INIT/SIPI isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 101/113] KVM: TDX: Add methods to ignore accesses to CPU state isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 102/113] KVM: TDX: Add methods to ignore guest instruction emulation isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 103/113] KVM: TDX: Add a method to ignore dirty logging isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 104/113] KVM: TDX: Add methods to ignore VMX preemption timer isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 105/113] KVM: TDX: Add methods to ignore accesses to TSC isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 106/113] KVM: TDX: Ignore setting up mce isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 107/113] KVM: TDX: Add a method to ignore for TDX to ignore hypercall patch isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 108/113] KVM: TDX: Add methods to ignore virtual apic related operation isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 109/113] Documentation/virt/kvm: Document on Trust Domain Extensions(TDX) isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 110/113] KVM: x86: design documentation on TDX support of x86 KVM TDP MMU isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 111/113] RFC: KVM: x86, TDX: Add check for setting CPUID isaku.yamahata
2023-06-03  1:29   ` Zhi Wang
2023-06-03 18:02     ` Isaku Yamahata
2023-06-05  2:25       ` Zhi Wang
2023-06-05 20:46         ` Isaku Yamahata
2023-06-06 23:57   ` Huang, Kai
2023-06-13 17:31     ` Isaku Yamahata
2023-06-14  9:43       ` Huang, Kai
2023-05-29  4:20 ` [PATCH v14 112/113] RFC: KVM: TDX: Make busy with S-EPT on entry bug isaku.yamahata
2023-05-29  4:20 ` [PATCH v14 113/113] [MARKER] the end of (the first phase of) TDX KVM patch series isaku.yamahata
2023-05-30  7:34 ` [PATCH v14 000/113] KVM TDX basic feature support Wang, Wei W
2023-05-30 22:11   ` Isaku Yamahata

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=37b118268ccf73d8e9cc1ef8f9fb7376fb732d60.1685333727.git.isaku.yamahata@intel.com \
    --to=isaku.yamahata@intel.com \
    --cc=chen.bo@intel.com \
    --cc=dmatlack@google.com \
    --cc=erdemaktas@google.com \
    --cc=isaku.yamahata@gmail.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=sean.j.christopherson@intel.com \
    --cc=seanjc@google.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).