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
next prev 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®