linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Isaku Yamahata <isaku.yamahata@gmail.com>
To: Zhi Wang <zhi.wang.linux@gmail.com>
Cc: isaku.yamahata@intel.com, kvm@vger.kernel.org,
	linux-kernel@vger.kernel.org, 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>,
	chen.bo@intel.com
Subject: Re: [PATCH v14 111/113] RFC: KVM: x86, TDX: Add check for setting CPUID
Date: Sat, 3 Jun 2023 11:02:35 -0700	[thread overview]
Message-ID: <20230603180235.GM1234772@ls.amr.corp.intel.com> (raw)
In-Reply-To: <20230603092933.00004ada.zhi.wang.linux@gmail.com>

On Sat, Jun 03, 2023 at 09:29:33AM +0800,
Zhi Wang <zhi.wang.linux@gmail.com> wrote:

> On Sun, 28 May 2023 21:20:33 -0700
> isaku.yamahata@intel.com wrote:
> 
> > From: Isaku Yamahata <isaku.yamahata@intel.com>
> > 
> > Add a hook to setting CPUID for additional consistency check of
> > KVM_SET_CPUID2.
> > 
> > Because intel TDX or AMD SNP has restriction on the value of cpuid.  Some
> > value can't be changed after boot.  Some can be only set at the VM
> > creation time and can't be changed later.  Check if the new values are
> > consistent with the old values.
> >
> 
> Thanks for addressing this from the discussion. The structure looks good to me.
> I was thinking if the patch should be separated into two parts. One is the
> common part so that AMD folks can include it in their patch series. Another one
> is TDX callback which builds on top of the common-part patch. 

OK.

> > Suggested-by: Sean Christopherson <seanjc@google.com>
> > Link: https://lore.kernel.org/lkml/ZDiGpCkXOcCm074O@google.com/
> > Signed-off-by: Isaku Yamahata <isaku.yamahata@intel.com>
> > ---
> >  arch/x86/include/asm/kvm-x86-ops.h |  1 +
> >  arch/x86/include/asm/kvm_host.h    |  1 +
> >  arch/x86/kvm/cpuid.c               | 10 ++++++
> >  arch/x86/kvm/cpuid.h               |  2 ++
> >  arch/x86/kvm/vmx/main.c            | 10 ++++++
> >  arch/x86/kvm/vmx/tdx.c             | 57 ++++++++++++++++++++++++++++--
> >  arch/x86/kvm/vmx/tdx.h             |  7 ++++
> >  arch/x86/kvm/vmx/x86_ops.h         |  4 +++
> >  8 files changed, 90 insertions(+), 2 deletions(-)
> > 
> > diff --git a/arch/x86/include/asm/kvm-x86-ops.h b/arch/x86/include/asm/kvm-x86-ops.h
> > index c1a4d29cf4fa..5faa13a31f59 100644
> > --- a/arch/x86/include/asm/kvm-x86-ops.h
> > +++ b/arch/x86/include/asm/kvm-x86-ops.h
> > @@ -20,6 +20,7 @@ KVM_X86_OP(hardware_disable)
> >  KVM_X86_OP(hardware_unsetup)
> >  KVM_X86_OP_OPTIONAL_RET0(offline_cpu)
> >  KVM_X86_OP(has_emulated_msr)
> > +KVM_X86_OP_OPTIONAL_RET0(vcpu_check_cpuid)
> >  KVM_X86_OP(vcpu_after_set_cpuid)
> >  KVM_X86_OP(is_vm_type_supported)
> >  KVM_X86_OP_OPTIONAL(max_vcpus);
> > diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
> > index 68ddb0da31e0..4efd9770963c 100644
> > --- a/arch/x86/include/asm/kvm_host.h
> > +++ b/arch/x86/include/asm/kvm_host.h
> > @@ -1588,6 +1588,7 @@ struct kvm_x86_ops {
> >  	void (*hardware_unsetup)(void);
> >  	int (*offline_cpu)(void);
> >  	bool (*has_emulated_msr)(struct kvm *kvm, u32 index);
> > +	int (*vcpu_check_cpuid)(struct kvm_vcpu *vcpu, struct kvm_cpuid_entry2 *e2, int nent);
> >  	void (*vcpu_after_set_cpuid)(struct kvm_vcpu *vcpu);
> >  
> >  	bool (*is_vm_type_supported)(unsigned long vm_type);
> > diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
> > index 0142a73034c4..ef7c361883d7 100644
> > --- a/arch/x86/kvm/cpuid.c
> > +++ b/arch/x86/kvm/cpuid.c
> > @@ -414,6 +414,9 @@ static int kvm_set_cpuid(struct kvm_vcpu *vcpu, struct kvm_cpuid_entry2 *e2,
> >  	}
> >  
> >  	r = kvm_check_cpuid(vcpu, e2, nent);
> > +	if (r)
> > +		return r;
> > +	r = static_call(kvm_x86_vcpu_check_cpuid)(vcpu, e2, nent);
> >  	if (r)
> >  		return r;
> 
> It would be nice to move the static_call into the kvm_check_cpuid() as it is
> part of the process of checking cpuid. It is good enough for now as
> kvm_check_cpuid() only has one caller. Think if more caller of
> kvm_check_cpuid() shows up in the future, they need to move it into
> kvm_check_cpuid anyway.
> 
> >  
> > @@ -1364,6 +1367,13 @@ int kvm_dev_ioctl_get_cpuid(struct kvm_cpuid2 *cpuid,
> >  	return r;
> >  }
> >  
> > +struct kvm_cpuid_entry2 *__kvm_find_cpuid_entry2(
> > +	struct kvm_cpuid_entry2 *entries, int nent, u32 function, u64 index)
> > +{
> > +	return cpuid_entry2_find(entries, nent, function, index);
> > +}
> > +EXPORT_SYMBOL_GPL(__kvm_find_cpuid_entry2);
> > +
> 
> If evetually, we have to open kvm_cpuid2 when searching the cpuid entries,
> I would suggest to open it in kvm_find_cpuid_entry2() instead of introducing
> a new __kvm_find_cpuid_entry2(). It would be nice to let kvm_find_cpuid_entry2
> () to take entreis and nent in the previou patch.

Makes sense. Consolidated kvm_find_cpuid_entry2(
struct kvm_cpuid_entry2 *entries, int nent, u32 function, u64 index).

> >  struct kvm_cpuid_entry2 *kvm_find_cpuid_entry2( struct kvm_cpuid2 *cpuid,
> >  						u32 function, u32 index)
> >  {

... snip...

> > +int tdx_vcpu_check_cpuid(struct kvm_vcpu *vcpu, struct kvm_cpuid_entry2 *e2, int nent)
> > +{
> > +	struct kvm_tdx *kvm_tdx = to_kvm_tdx(vcpu->kvm);
> > +	const struct tdsysinfo_struct *tdsysinfo;
> > +	int i;
> > +
> > +	tdsysinfo = tdx_get_sysinfo();
> > +	if (!tdsysinfo)
> > +		return -ENOTSUPP;
> > +
> > +	/*
> > +	 * Simple check that new cpuid is consistent with created one.
> > +	 * For simplicity, only trivial check.  Don't try comprehensive checks
> > +	 * with the cpuid virtualization table in the TDX module spec.
> > +	 */
> > +	for (i = 0; i < tdsysinfo->num_cpuid_config; i++) {
> > +		const struct tdx_cpuid_config *config = &tdsysinfo->cpuid_configs[i];
> > +		u32 index = config->sub_leaf == TDX_CPUID_NO_SUBLEAF ? 0: config->sub_leaf;
> > +		const struct kvm_cpuid_entry2 *old =
> > +			__kvm_find_cpuid_entry2(kvm_tdx->cpuid, kvm_tdx->cpuid_nent,
> > +						config->leaf, index);
> > +		const struct kvm_cpuid_entry2 *new =
> > +			__kvm_find_cpuid_entry2(e2, nent, config->leaf, index);
> > +
> > +		if (!!old != !!new)
> > +			return -EINVAL;
> > +		if (!old && !new)
> > +			continue;
> > +
> > +		if ((old->eax ^ new->eax) & config->eax ||
> > +		    (old->ebx ^ new->ebx) & config->ebx ||
> > +		    (old->ecx ^ new->ecx) & config->ecx ||
> > +		    (old->edx ^ new->edx) & config->edx)
> > +			return -EINVAL;
> > +	}
> > +	return 0;
> > +}
> 
> Guess checkpatch.pl will complain about the length of lines above.

By default, the line is 100 chars. Not 80.


> > +
> >  void tdx_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
> >  {
> >  	struct vcpu_tdx *tdx = to_tdx(vcpu);
> > @@ -2003,10 +2044,12 @@ static void setup_tdparams_eptp_controls(struct kvm_cpuid2 *cpuid, struct td_par
> >  	}
> >  }
> >  
> > -static void setup_tdparams_cpuids(const struct tdsysinfo_struct *tdsysinfo,
> > +static void setup_tdparams_cpuids(struct kvm *kvm,
> > +				  const struct tdsysinfo_struct *tdsysinfo,
> >  				  struct kvm_cpuid2 *cpuid,
> >  				  struct td_params *td_params)
> >  {
> > +	struct kvm_tdx *kvm_tdx = to_kvm_tdx(kvm);
> >  	int i;
> >  
> >  	/*
> > @@ -2014,6 +2057,7 @@ static void setup_tdparams_cpuids(const struct tdsysinfo_struct *tdsysinfo,
> >  	 * be same to the one of struct tdsysinfo.{num_cpuid_config, cpuid_configs}
> >  	 * It's assumed that td_params was zeroed.
> >  	 */
> > +	kvm_tdx->cpuid_nent = 0;
> >  	for (i = 0; i < tdsysinfo->num_cpuid_config; i++) {
> >  		const struct tdx_cpuid_config *config = &tdsysinfo->cpuid_configs[i];
> >  		/* TDX_CPUID_NO_SUBLEAF in TDX CPUID_CONFIG means index = 0. */
> > @@ -2035,6 +2079,10 @@ static void setup_tdparams_cpuids(const struct tdsysinfo_struct *tdsysinfo,
> >  		value->ebx = entry->ebx & config->ebx;
> >  		value->ecx = entry->ecx & config->ecx;
> >  		value->edx = entry->edx & config->edx;
> > +
> > +		/* Remember the setting to check for KVM_SET_CPUID2. */
> > +		kvm_tdx->cpuid[kvm_tdx->cpuid_nent] = *entry;
> > +		kvm_tdx->cpuid_nent++;
> >  	}
> >  }
> >  
> > @@ -2130,7 +2178,7 @@ static int setup_tdparams(struct kvm *kvm, struct td_params *td_params,
> >  	td_params->tsc_frequency = TDX_TSC_KHZ_TO_25MHZ(kvm->arch.default_tsc_khz);
> >  
> >  	setup_tdparams_eptp_controls(cpuid, td_params);
> > -	setup_tdparams_cpuids(tdsysinfo, cpuid, td_params);
> > +	setup_tdparams_cpuids(kvm, tdsysinfo, cpuid, td_params);
> >  	ret = setup_tdparams_xfam(cpuid, td_params);
> >  	if (ret)
> >  		return ret;
> > @@ -2332,6 +2380,11 @@ static int tdx_td_init(struct kvm *kvm, struct kvm_tdx_cmd *cmd)
> >  	if (cmd->flags)
> >  		return -EINVAL;
> >  
> > +	kvm_tdx->cpuid = kzalloc(sizeof(init_vm->cpuid.entries[0]) * KVM_MAX_CPUID_ENTRIES,
> > +				 GFP_KERNEL);
> > +	if (!kvm_tdx->cpuid)
> > +		return -ENOMEM;
> > +
> >  	init_vm = kzalloc(sizeof(*init_vm) +
> >  			  sizeof(init_vm->cpuid.entries[0]) * KVM_MAX_CPUID_ENTRIES,
> >  			  GFP_KERNEL);
> 
> kfree(kvm_tdx->cpuid) is required in the error handling path of tdx_td_init().


No need. tdx_vm_free() frees it. Not here.
-- 
Isaku Yamahata <isaku.yamahata@gmail.com>

  reply	other threads:[~2023-06-03 18:02 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 ` [PATCH v14 011/113] KVM: TDX: Add C wrapper functions for SEAMCALLs to the TDX module isaku.yamahata
2023-06-01 13:24   ` 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 [this message]
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=20230603180235.GM1234772@ls.amr.corp.intel.com \
    --to=isaku.yamahata@gmail.com \
    --cc=chen.bo@intel.com \
    --cc=dmatlack@google.com \
    --cc=erdemaktas@google.com \
    --cc=isaku.yamahata@intel.com \
    --cc=kai.huang@intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=sagis@google.com \
    --cc=seanjc@google.com \
    --cc=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).