mirror of https://lore.kernel.org/lkml/
 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, hang.yuan@intel.com, tina.zhang@intel.com
Subject: [PATCH v16 082/116] KVM: TDX: Add a place holder to handle TDX VM exit
Date: Mon, 16 Oct 2023 09:14:34 -0700	[thread overview]
Message-ID: <ee2cb79e80c2df87ffc14f0eb92ca6aa7d82cff3.1697471314.git.isaku.yamahata@intel.com> (raw)
In-Reply-To: <cover.1697471314.git.isaku.yamahata@intel.com>

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

Wire up handle_exit and handle_exit_irqoff methods and add a place holder
to handle VM exit.  Add helper functions to get exit info, exit
qualification, etc.

Signed-off-by: Isaku Yamahata <isaku.yamahata@intel.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
---
 arch/x86/kvm/vmx/main.c    |  37 ++++++++++++-
 arch/x86/kvm/vmx/tdx.c     | 110 +++++++++++++++++++++++++++++++++++++
 arch/x86/kvm/vmx/x86_ops.h |  10 ++++
 3 files changed, 154 insertions(+), 3 deletions(-)

diff --git a/arch/x86/kvm/vmx/main.c b/arch/x86/kvm/vmx/main.c
index 91e2ad643a47..4356b10d68b6 100644
--- a/arch/x86/kvm/vmx/main.c
+++ b/arch/x86/kvm/vmx/main.c
@@ -239,6 +239,25 @@ static bool vt_protected_apic_has_interrupt(struct kvm_vcpu *vcpu)
 	return tdx_protected_apic_has_interrupt(vcpu);
 }
 
+static int vt_handle_exit(struct kvm_vcpu *vcpu,
+			     enum exit_fastpath_completion fastpath)
+{
+	if (is_td_vcpu(vcpu))
+		return tdx_handle_exit(vcpu, fastpath);
+
+	return vmx_handle_exit(vcpu, fastpath);
+}
+
+static void vt_handle_exit_irqoff(struct kvm_vcpu *vcpu)
+{
+	if (is_td_vcpu(vcpu)) {
+		tdx_handle_exit_irqoff(vcpu);
+		return;
+	}
+
+	vmx_handle_exit_irqoff(vcpu);
+}
+
 static void vt_apicv_post_state_restore(struct kvm_vcpu *vcpu)
 {
 	struct pi_desc *pi = vcpu_to_pi_desc(vcpu);
@@ -445,6 +464,18 @@ static void vt_request_immediate_exit(struct kvm_vcpu *vcpu)
 	vmx_request_immediate_exit(vcpu);
 }
 
+static void vt_get_exit_info(struct kvm_vcpu *vcpu, u32 *reason,
+			u64 *info1, u64 *info2, u32 *intr_info, u32 *error_code)
+{
+	if (is_td_vcpu(vcpu)) {
+		tdx_get_exit_info(vcpu, reason, info1, info2, intr_info,
+				  error_code);
+		return;
+	}
+
+	vmx_get_exit_info(vcpu, reason, info1, info2, intr_info, error_code);
+}
+
 static u8 vt_get_mt_mask(struct kvm_vcpu *vcpu, gfn_t gfn, bool is_mmio)
 {
 	if (is_td_vcpu(vcpu))
@@ -540,7 +571,7 @@ struct kvm_x86_ops vt_x86_ops __initdata = {
 
 	.vcpu_pre_run = vt_vcpu_pre_run,
 	.vcpu_run = vt_vcpu_run,
-	.handle_exit = vmx_handle_exit,
+	.handle_exit = vt_handle_exit,
 	.skip_emulated_instruction = vmx_skip_emulated_instruction,
 	.update_emulated_instruction = vmx_update_emulated_instruction,
 	.set_interrupt_shadow = vt_set_interrupt_shadow,
@@ -575,7 +606,7 @@ struct kvm_x86_ops vt_x86_ops __initdata = {
 	.set_identity_map_addr = vmx_set_identity_map_addr,
 	.get_mt_mask = vt_get_mt_mask,
 
-	.get_exit_info = vmx_get_exit_info,
+	.get_exit_info = vt_get_exit_info,
 
 	.vcpu_after_set_cpuid = vmx_vcpu_after_set_cpuid,
 
@@ -589,7 +620,7 @@ struct kvm_x86_ops vt_x86_ops __initdata = {
 	.load_mmu_pgd = vt_load_mmu_pgd,
 
 	.check_intercept = vmx_check_intercept,
-	.handle_exit_irqoff = vmx_handle_exit_irqoff,
+	.handle_exit_irqoff = vt_handle_exit_irqoff,
 
 	.request_immediate_exit = vt_request_immediate_exit,
 
diff --git a/arch/x86/kvm/vmx/tdx.c b/arch/x86/kvm/vmx/tdx.c
index f5e29f8f1b6a..be73b8322a66 100644
--- a/arch/x86/kvm/vmx/tdx.c
+++ b/arch/x86/kvm/vmx/tdx.c
@@ -87,6 +87,26 @@ static __always_inline hpa_t set_hkid_to_hpa(hpa_t pa, u16 hkid)
 	return pa | ((hpa_t)hkid << boot_cpu_data.x86_phys_bits);
 }
 
+static __always_inline unsigned long tdexit_exit_qual(struct kvm_vcpu *vcpu)
+{
+	return kvm_rcx_read(vcpu);
+}
+
+static __always_inline unsigned long tdexit_ext_exit_qual(struct kvm_vcpu *vcpu)
+{
+	return kvm_rdx_read(vcpu);
+}
+
+static __always_inline unsigned long tdexit_gpa(struct kvm_vcpu *vcpu)
+{
+	return kvm_r8_read(vcpu);
+}
+
+static __always_inline unsigned long tdexit_intr_info(struct kvm_vcpu *vcpu)
+{
+	return kvm_r9_read(vcpu);
+}
+
 static inline bool is_td_vcpu_created(struct vcpu_tdx *tdx)
 {
 	return tdx->tdvpr_pa;
@@ -811,6 +831,12 @@ static noinstr void tdx_vcpu_enter_exit(struct vcpu_tdx *tdx)
 	WARN_ON_ONCE(!kvm_rebooting &&
 		     (tdx->exit_reason.full & TDX_SW_ERROR) == TDX_SW_ERROR);
 
+	if ((u16)tdx->exit_reason.basic == EXIT_REASON_EXCEPTION_NMI &&
+	    is_nmi(tdexit_intr_info(vcpu))) {
+		kvm_before_interrupt(vcpu, KVM_HANDLING_NMI);
+		vmx_do_nmi_irqoff();
+		kvm_after_interrupt(vcpu);
+	}
 	guest_state_exit_irqoff();
 }
 
@@ -854,6 +880,25 @@ void tdx_inject_nmi(struct kvm_vcpu *vcpu)
 	td_management_write8(to_tdx(vcpu), TD_VCPU_PEND_NMI, 1);
 }
 
+void tdx_handle_exit_irqoff(struct kvm_vcpu *vcpu)
+{
+	struct vcpu_tdx *tdx = to_tdx(vcpu);
+	u16 exit_reason = tdx->exit_reason.basic;
+
+	if (exit_reason == EXIT_REASON_EXTERNAL_INTERRUPT)
+		vmx_handle_external_interrupt_irqoff(vcpu,
+						     tdexit_intr_info(vcpu));
+	else if (exit_reason == EXIT_REASON_EXCEPTION_NMI)
+		vmx_handle_exception_irqoff(vcpu, tdexit_intr_info(vcpu));
+}
+
+static int tdx_handle_triple_fault(struct kvm_vcpu *vcpu)
+{
+	vcpu->run->exit_reason = KVM_EXIT_SHUTDOWN;
+	vcpu->mmio_needed = 0;
+	return 0;
+}
+
 void tdx_load_mmu_pgd(struct kvm_vcpu *vcpu, hpa_t root_hpa, int pgd_level)
 {
 	td_vmcs_write64(to_tdx(vcpu), SHARED_EPT_POINTER, root_hpa & PAGE_MASK);
@@ -1234,6 +1279,71 @@ void tdx_deliver_interrupt(struct kvm_lapic *apic, int delivery_mode,
 	__vmx_deliver_posted_interrupt(vcpu, &tdx->pi_desc, vector);
 }
 
+int tdx_handle_exit(struct kvm_vcpu *vcpu, fastpath_t fastpath)
+{
+	union tdx_exit_reason exit_reason = to_tdx(vcpu)->exit_reason;
+
+	/* See the comment of tdh_sept_seamcall(). */
+	if (unlikely(exit_reason.full == (TDX_OPERAND_BUSY | TDX_OPERAND_ID_SEPT)))
+		return 1;
+
+	/*
+	 * TDH.VP.ENTRY checks TD EPOCH which contend with TDH.MEM.TRACK and
+	 * vcpu TDH.VP.ENTER.
+	 */
+	if (unlikely(exit_reason.full == (TDX_OPERAND_BUSY | TDX_OPERAND_ID_TD_EPOCH)))
+		return 1;
+
+	if (unlikely(exit_reason.full == TDX_SEAMCALL_UD)) {
+		kvm_spurious_fault();
+		/*
+		 * In the case of reboot or kexec, loop with TDH.VP.ENTER and
+		 * TDX_SEAMCALL_UD to avoid unnecessarily activity.
+		 */
+		return 1;
+	}
+
+	if (unlikely(exit_reason.non_recoverable || exit_reason.error)) {
+		if (unlikely(exit_reason.basic == EXIT_REASON_TRIPLE_FAULT))
+			return tdx_handle_triple_fault(vcpu);
+
+		kvm_pr_unimpl("TD exit 0x%llx, %d hkid 0x%x hkid pa 0x%llx\n",
+			      exit_reason.full, exit_reason.basic,
+			      to_kvm_tdx(vcpu->kvm)->hkid,
+			      set_hkid_to_hpa(0, to_kvm_tdx(vcpu->kvm)->hkid));
+		goto unhandled_exit;
+	}
+
+	WARN_ON_ONCE(fastpath != EXIT_FASTPATH_NONE);
+
+	switch (exit_reason.basic) {
+	default:
+		break;
+	}
+
+unhandled_exit:
+	vcpu->run->exit_reason = KVM_EXIT_INTERNAL_ERROR;
+	vcpu->run->internal.suberror = KVM_INTERNAL_ERROR_UNEXPECTED_EXIT_REASON;
+	vcpu->run->internal.ndata = 2;
+	vcpu->run->internal.data[0] = exit_reason.full;
+	vcpu->run->internal.data[1] = vcpu->arch.last_vmentry_cpu;
+	return 0;
+}
+
+void tdx_get_exit_info(struct kvm_vcpu *vcpu, u32 *reason,
+		u64 *info1, u64 *info2, u32 *intr_info, u32 *error_code)
+{
+	struct vcpu_tdx *tdx = to_tdx(vcpu);
+
+	*reason = tdx->exit_reason.full;
+
+	*info1 = tdexit_exit_qual(vcpu);
+	*info2 = tdexit_ext_exit_qual(vcpu);
+
+	*intr_info = tdexit_intr_info(vcpu);
+	*error_code = 0;
+}
+
 static int tdx_get_capabilities(struct kvm_tdx_cmd *cmd)
 {
 	struct kvm_tdx_capabilities __user *user_caps;
diff --git a/arch/x86/kvm/vmx/x86_ops.h b/arch/x86/kvm/vmx/x86_ops.h
index 9a949273bf47..cf12b94eb35c 100644
--- a/arch/x86/kvm/vmx/x86_ops.h
+++ b/arch/x86/kvm/vmx/x86_ops.h
@@ -155,11 +155,16 @@ void tdx_prepare_switch_to_guest(struct kvm_vcpu *vcpu);
 void tdx_vcpu_put(struct kvm_vcpu *vcpu);
 void tdx_vcpu_load(struct kvm_vcpu *vcpu, int cpu);
 bool tdx_protected_apic_has_interrupt(struct kvm_vcpu *vcpu);
+void tdx_handle_exit_irqoff(struct kvm_vcpu *vcpu);
+int tdx_handle_exit(struct kvm_vcpu *vcpu,
+		enum exit_fastpath_completion fastpath);
 u8 tdx_get_mt_mask(struct kvm_vcpu *vcpu, gfn_t gfn, bool is_mmio);
 
 void tdx_deliver_interrupt(struct kvm_lapic *apic, int delivery_mode,
 			   int trig_mode, int vector);
 void tdx_inject_nmi(struct kvm_vcpu *vcpu);
+void tdx_get_exit_info(struct kvm_vcpu *vcpu, u32 *reason,
+		u64 *info1, u64 *info2, u32 *intr_info, u32 *error_code);
 
 int tdx_vcpu_ioctl(struct kvm_vcpu *vcpu, void __user *argp);
 
@@ -192,11 +197,16 @@ static inline void tdx_prepare_switch_to_guest(struct kvm_vcpu *vcpu) {}
 static inline void tdx_vcpu_put(struct kvm_vcpu *vcpu) {}
 static inline void tdx_vcpu_load(struct kvm_vcpu *vcpu, int cpu) {}
 static inline bool tdx_protected_apic_has_interrupt(struct kvm_vcpu *vcpu) { return false; }
+static inline void tdx_handle_exit_irqoff(struct kvm_vcpu *vcpu) {}
+static inline int tdx_handle_exit(struct kvm_vcpu *vcpu,
+		enum exit_fastpath_completion fastpath) { return 0; }
 static inline u8 tdx_get_mt_mask(struct kvm_vcpu *vcpu, gfn_t gfn, bool is_mmio) { return 0; }
 
 static inline void tdx_deliver_interrupt(struct kvm_lapic *apic, int delivery_mode,
 					 int trig_mode, int vector) {}
 static inline void tdx_inject_nmi(struct kvm_vcpu *vcpu) {}
+static inline void tdx_get_exit_info(struct kvm_vcpu *vcpu, u32 *reason, u64 *info1,
+				     u64 *info2, u32 *intr_info, u32 *error_code) {}
 
 static inline int tdx_vcpu_ioctl(struct kvm_vcpu *vcpu, void __user *argp) { return -EOPNOTSUPP; }
 
-- 
2.25.1


  parent reply	other threads:[~2023-10-16 16:31 UTC|newest]

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

all inboxes | Powered by JetHome®