From: Nikolay Borisov <nik.borisov@suse.com>
To: Rick Edgecombe <rick.p.edgecombe@intel.com>,
seanjc@google.com, pbonzini@redhat.com, kvm@vger.kernel.org
Cc: kai.huang@intel.com, isaku.yamahata@gmail.com,
tony.lindgren@linux.intel.com, xiaoyao.li@intel.com,
linux-kernel@vger.kernel.org,
Isaku Yamahata <isaku.yamahata@intel.com>
Subject: Re: [PATCH 14/25] KVM: TDX: initialize VM with TDX specific parameters
Date: Mon, 19 Aug 2024 18:35:05 +0300 [thread overview]
Message-ID: <822766d1-746a-4b15-b790-d1e331e4d9aa@suse.com> (raw)
In-Reply-To: <20240812224820.34826-15-rick.p.edgecombe@intel.com>
On 13.08.24 г. 1:48 ч., Rick Edgecombe wrote:
> From: Isaku Yamahata <isaku.yamahata@intel.com>
>
> After the crypto-protection key has been configured, TDX requires a
> VM-scope initialization as a step of creating the TDX guest. This
> "per-VM" TDX initialization does the global configurations/features that
> the TDX guest can support, such as guest's CPUIDs (emulated by the TDX
> module), the maximum number of vcpus etc.
>
> This "per-VM" TDX initialization must be done before any "vcpu-scope" TDX
> initialization. To match this better, require the KVM_TDX_INIT_VM IOCTL()
> to be done before KVM creates any vcpus.
>
> Co-developed-by: Xiaoyao Li <xiaoyao.li@intel.com>
> Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com>
> Signed-off-by: Isaku Yamahata <isaku.yamahata@intel.com>
> Signed-off-by: Rick Edgecombe <rick.p.edgecombe@intel.com>
> ---
> uAPI breakout v1:
> - Drop TDX_TD_XFAM_CET and use XFEATURE_MASK_CET_{USER, KERNEL}.
> - Update for the wrapper functions for SEAMCALLs. (Sean)
> - Move gfn_shared_mask settings into this patch due to MMU section move
> - Fix bisectability issues in headers (Kai)
> - Updates from seamcall overhaul (Kai)
> - Allow userspace configure xfam directly
> - Check if user sets non-configurable bits in CPUIDs
> - Rename error->hw_error
> - Move code change to tdx_module_setup() to __tdx_bringup() due to
> initializing is done in post hardware_setup() now and
> tdx_module_setup() is removed. Remove the code to use API to read
> global metadata but use exported 'struct tdx_sysinfo' pointer.
> - Replace 'tdx_info->nr_tdcs_pages' with a wrapper
> tdx_sysinfo_nr_tdcs_pages() because the 'struct tdx_sysinfo' doesn't
> have nr_tdcs_pages directly.
> - Replace tdx_info->max_vcpus_per_td with the new exported pointer in
> tdx_vm_init().
> - Decrease the reserved space for struct kvm_tdx_init_vm (Kai)
> - Use sizeof_field() for struct kvm_tdx_init_vm cpuids (Tony)
> - No need to init init_vm, it gets copied over in tdx_td_init() (Chao)
> - Use kmalloc() instead of () kzalloc for init_vm in tdx_td_init() (Chao)
> - Add more line breaks to tdx_td_init() to make code easier to read (Tony)
> - Clarify patch description (Kai)
>
> v19:
> - Check NO_RBP_MOD of feature0 and set it
> - Update the comment for PT and CET
>
> v18:
> - remove the change of tools/arch/x86/include/uapi/asm/kvm.h
> - typo in comment. sha348 => sha384
> - updated comment in setup_tdparams_xfam()
> - fix setup_tdparams_xfam() to use init_vm instead of td_params
>
> v16:
> - Removed AMX check as the KVM upstream supports AMX.
> - Added CET flag to guest supported xss
> ---
> arch/x86/include/uapi/asm/kvm.h | 24 ++++
> arch/x86/kvm/cpuid.c | 7 +
> arch/x86/kvm/cpuid.h | 2 +
> arch/x86/kvm/vmx/tdx.c | 237 ++++++++++++++++++++++++++++++--
> arch/x86/kvm/vmx/tdx.h | 4 +
> arch/x86/kvm/vmx/tdx_ops.h | 12 ++
> 6 files changed, 276 insertions(+), 10 deletions(-)
>
> diff --git a/arch/x86/include/uapi/asm/kvm.h b/arch/x86/include/uapi/asm/kvm.h
> index 2e3caa5a58fd..95ae2d4a4697 100644
> --- a/arch/x86/include/uapi/asm/kvm.h
> +++ b/arch/x86/include/uapi/asm/kvm.h
> @@ -929,6 +929,7 @@ struct kvm_hyperv_eventfd {
> /* Trust Domain eXtension sub-ioctl() commands. */
> enum kvm_tdx_cmd_id {
> KVM_TDX_CAPABILITIES = 0,
> + KVM_TDX_INIT_VM,
>
> KVM_TDX_CMD_NR_MAX,
> };
> @@ -970,4 +971,27 @@ struct kvm_tdx_capabilities {
> struct kvm_tdx_cpuid_config cpuid_configs[];
> };
>
> +struct kvm_tdx_init_vm {
> + __u64 attributes;
> + __u64 xfam;
> + __u64 mrconfigid[6]; /* sha384 digest */
> + __u64 mrowner[6]; /* sha384 digest */
> + __u64 mrownerconfig[6]; /* sha384 digest */
> +
> + /* The total space for TD_PARAMS before the CPUIDs is 256 bytes */
> + __u64 reserved[12];
> +
> + /*
> + * Call KVM_TDX_INIT_VM before vcpu creation, thus before
> + * KVM_SET_CPUID2.
> + * This configuration supersedes KVM_SET_CPUID2s for VCPUs because the
> + * TDX module directly virtualizes those CPUIDs without VMM. The user
> + * space VMM, e.g. qemu, should make KVM_SET_CPUID2 consistent with
> + * those values. If it doesn't, KVM may have wrong idea of vCPUIDs of
> + * the guest, and KVM may wrongly emulate CPUIDs or MSRs that the TDX
> + * module doesn't virtualize.
> + */
> + struct kvm_cpuid2 cpuid;
> +};
> +
> #endif /* _ASM_X86_KVM_H */
> diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
> index 2617be544480..7310d8a8a503 100644
> --- a/arch/x86/kvm/cpuid.c
> +++ b/arch/x86/kvm/cpuid.c
> @@ -1487,6 +1487,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);
> +
> struct kvm_cpuid_entry2 *kvm_find_cpuid_entry_index(struct kvm_vcpu *vcpu,
> u32 function, u32 index)
> {
> diff --git a/arch/x86/kvm/cpuid.h b/arch/x86/kvm/cpuid.h
> index 41697cca354e..00570227e2ae 100644
> --- a/arch/x86/kvm/cpuid.h
> +++ b/arch/x86/kvm/cpuid.h
> @@ -13,6 +13,8 @@ void kvm_set_cpu_caps(void);
>
> void kvm_update_cpuid_runtime(struct kvm_vcpu *vcpu);
> void kvm_update_pv_runtime(struct kvm_vcpu *vcpu);
> +struct kvm_cpuid_entry2 *kvm_find_cpuid_entry2(struct kvm_cpuid_entry2 *entries,
> + int nent, u32 function, u64 index);
> struct kvm_cpuid_entry2 *kvm_find_cpuid_entry_index(struct kvm_vcpu *vcpu,
> u32 function, u32 index);
> struct kvm_cpuid_entry2 *kvm_find_cpuid_entry(struct kvm_vcpu *vcpu,
> diff --git a/arch/x86/kvm/vmx/tdx.c b/arch/x86/kvm/vmx/tdx.c
> index a0954c3928e2..a6c711715a4a 100644
> --- a/arch/x86/kvm/vmx/tdx.c
> +++ b/arch/x86/kvm/vmx/tdx.c
> @@ -7,6 +7,7 @@
> #include "tdx.h"
> #include "tdx_ops.h"
>
> +
> #undef pr_fmt
> #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
>
> @@ -356,12 +357,16 @@ static int tdx_do_tdh_mng_key_config(void *param)
> return 0;
> }
>
> -static int __tdx_td_init(struct kvm *kvm);
> -
> int tdx_vm_init(struct kvm *kvm)
> {
> kvm->arch.has_private_mem = true;
>
> + /*
> + * This function initializes only KVM software construct. It doesn't
> + * initialize TDX stuff, e.g. TDCS, TDR, TDCX, HKID etc.
> + * It is handled by KVM_TDX_INIT_VM, __tdx_td_init().
> + */
If you need to put a comment like that it means the function has the
wrong name.
> +
> /*
> * TDX has its own limit of the number of vcpus in addition to
> * KVM_MAX_VCPUS.
<snip>
> +
> +static int __tdx_td_init(struct kvm *kvm, struct td_params *td_params,
> + u64 *seamcall_err)
What criteria did you use to split __tdx_td_init from tdx_td_init? Seems
somewhar arbitrary, I think it's best if the TD VM init code is in a
single function, yet it will be rather large but the code should be
self-explanatory and fairly linear. Additionally I think some of the
code can be factored out in more specific helpers i.e the key
programming bits can be a separate helper.
> {
> struct kvm_tdx *kvm_tdx = to_kvm_tdx(kvm);
> cpumask_var_t packages;
> @@ -427,8 +547,9 @@ static int __tdx_td_init(struct kvm *kvm)
> unsigned long tdr_pa = 0;
> unsigned long va;
> int ret, i;
> - u64 err;
> + u64 err, rcx;
>
> + *seamcall_err = 0;
> ret = tdx_guest_keyid_alloc();
> if (ret < 0)
> return ret;
> @@ -543,10 +664,23 @@ static int __tdx_td_init(struct kvm *kvm)
> }
> }
>
> - /*
> - * Note, TDH_MNG_INIT cannot be invoked here. TDH_MNG_INIT requires a dedicated
> - * ioctl() to define the configure CPUID values for the TD.
> - */
> + err = tdh_mng_init(kvm_tdx, __pa(td_params), &rcx);
> + if ((err & TDX_SEAMCALL_STATUS_MASK) == TDX_OPERAND_INVALID) {
> + /*
> + * Because a user gives operands, don't warn.
> + * Return a hint to the user because it's sometimes hard for the
> + * user to figure out which operand is invalid. SEAMCALL status
> + * code includes which operand caused invalid operand error.
> + */
> + *seamcall_err = err;
> + ret = -EINVAL;
> + goto teardown;
> + } else if (WARN_ON_ONCE(err)) {
> + pr_tdx_error_1(TDH_MNG_INIT, err, rcx);
> + ret = -EIO;
> + goto teardown;
> + }
> +
> return 0;
>
> /*
> @@ -592,6 +726,86 @@ static int __tdx_td_init(struct kvm *kvm)
> return ret;
> }
>
> +static int tdx_td_init(struct kvm *kvm, struct kvm_tdx_cmd *cmd)
> +{
> + struct kvm_tdx *kvm_tdx = to_kvm_tdx(kvm);
> + struct kvm_tdx_init_vm *init_vm;
> + struct td_params *td_params = NULL;
> + int ret;
> +
> + BUILD_BUG_ON(sizeof(*init_vm) != 256 + sizeof_field(struct kvm_tdx_init_vm, cpuid));
> + BUILD_BUG_ON(sizeof(struct td_params) != 1024);
> +
> + if (is_hkid_assigned(kvm_tdx))
> + return -EINVAL;
> +
> + if (cmd->flags)
> + return -EINVAL;
> +
> + init_vm = kmalloc(sizeof(*init_vm) +
> + sizeof(init_vm->cpuid.entries[0]) * KVM_MAX_CPUID_ENTRIES,
> + GFP_KERNEL);
> + if (!init_vm)
> + return -ENOMEM;
> +
> + if (copy_from_user(init_vm, u64_to_user_ptr(cmd->data), sizeof(*init_vm))) {
> + ret = -EFAULT;
> + goto out;
> + }
> +
> + if (init_vm->cpuid.nent > KVM_MAX_CPUID_ENTRIES) {
> + ret = -E2BIG;
> + goto out;
> + }
> +
> + if (copy_from_user(init_vm->cpuid.entries,
> + u64_to_user_ptr(cmd->data) + sizeof(*init_vm),
> + flex_array_size(init_vm, cpuid.entries, init_vm->cpuid.nent))) {
> + ret = -EFAULT;
> + goto out;
> + }
> +
> + if (memchr_inv(init_vm->reserved, 0, sizeof(init_vm->reserved))) {
> + ret = -EINVAL;
> + goto out;
> + }
> +
> + if (init_vm->cpuid.padding) {
> + ret = -EINVAL;
> + goto out;
> + }
> +
> + td_params = kzalloc(sizeof(struct td_params), GFP_KERNEL);
> + if (!td_params) {
> + ret = -ENOMEM;
> + goto out;
> + }
> +
> + ret = setup_tdparams(kvm, td_params, init_vm);
> + if (ret)
> + goto out;
> +
> + ret = __tdx_td_init(kvm, td_params, &cmd->hw_error);
> + if (ret)
> + goto out;
> +
> + kvm_tdx->tsc_offset = td_tdcs_exec_read64(kvm_tdx, TD_TDCS_EXEC_TSC_OFFSET);
> + kvm_tdx->attributes = td_params->attributes;
> + kvm_tdx->xfam = td_params->xfam;
> +
> + if (td_params->exec_controls & TDX_EXEC_CONTROL_MAX_GPAW)
> + kvm->arch.gfn_direct_bits = gpa_to_gfn(BIT_ULL(51));
> + else
> + kvm->arch.gfn_direct_bits = gpa_to_gfn(BIT_ULL(47));
> +
> +out:
> + /* kfree() accepts NULL. */
> + kfree(init_vm);
> + kfree(td_params);
> +
> + return ret;
> +}
> +
> int tdx_vm_ioctl(struct kvm *kvm, void __user *argp)
> {
> struct kvm_tdx_cmd tdx_cmd;
> @@ -613,6 +827,9 @@ int tdx_vm_ioctl(struct kvm *kvm, void __user *argp)
> case KVM_TDX_CAPABILITIES:
> r = tdx_get_capabilities(&tdx_cmd);
> break;
> + case KVM_TDX_INIT_VM:
> + r = tdx_td_init(kvm, &tdx_cmd);
> + break;
> default:
> r = -EINVAL;
> goto out;
> diff --git a/arch/x86/kvm/vmx/tdx.h b/arch/x86/kvm/vmx/tdx.h
> index 268959d0f74f..8912cb6d5bc2 100644
> --- a/arch/x86/kvm/vmx/tdx.h
> +++ b/arch/x86/kvm/vmx/tdx.h
> @@ -16,7 +16,11 @@ struct kvm_tdx {
> unsigned long tdr_pa;
> unsigned long *tdcs_pa;
>
> + u64 attributes;
> + u64 xfam;
> int hkid;
> +
> + u64 tsc_offset;
> };
>
> struct vcpu_tdx {
> diff --git a/arch/x86/kvm/vmx/tdx_ops.h b/arch/x86/kvm/vmx/tdx_ops.h
> index 3f64c871a3f2..0363d8544f42 100644
> --- a/arch/x86/kvm/vmx/tdx_ops.h
> +++ b/arch/x86/kvm/vmx/tdx_ops.h
> @@ -399,4 +399,16 @@ static inline u64 tdh_vp_wr(struct vcpu_tdx *tdx, u64 field, u64 val, u64 mask)
> return seamcall(TDH_VP_WR, &in);
> }
>
> +static __always_inline u64 td_tdcs_exec_read64(struct kvm_tdx *kvm_tdx, u32 field)
> +{
> + u64 err, data;
> +
> + err = tdh_mng_rd(kvm_tdx, TDCS_EXEC(field), &data);
> + if (unlikely(err)) {
> + pr_err("TDH_MNG_RD[EXEC.0x%x] failed: 0x%llx\n", field, err);
> + return 0;
> + }
> + return data;
> +}
> +
> #endif /* __KVM_X86_TDX_OPS_H */
next prev parent reply other threads:[~2024-08-19 15:35 UTC|newest]
Thread overview: 191+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-12 22:47 [PATCH 00/25] TDX vCPU/VM creation Rick Edgecombe
2024-08-12 22:47 ` [PATCH 01/25] KVM: TDX: Add placeholders for TDX VM/vCPU structures Rick Edgecombe
2024-09-10 16:00 ` Paolo Bonzini
2024-08-12 22:47 ` [PATCH 02/25] KVM: TDX: Define TDX architectural definitions Rick Edgecombe
2024-08-29 13:25 ` Xiaoyao Li
2024-08-29 19:46 ` Edgecombe, Rick P
2024-08-30 1:29 ` Xiaoyao Li
2024-08-30 4:45 ` Tony Lindgren
2024-09-10 16:21 ` Paolo Bonzini
2024-09-10 17:49 ` Sean Christopherson
2024-08-12 22:47 ` [PATCH 03/25] KVM: TDX: Add TDX "architectural" error codes Rick Edgecombe
2024-08-13 6:08 ` Binbin Wu
2024-08-29 5:24 ` Tony Lindgren
2024-08-30 5:52 ` Tony Lindgren
2024-09-10 16:22 ` Paolo Bonzini
2024-09-11 5:58 ` Tony Lindgren
2024-08-12 22:47 ` [PATCH 04/25] KVM: TDX: Add C wrapper functions for SEAMCALLs to the TDX module Rick Edgecombe
2024-08-12 22:48 ` [PATCH 05/25] KVM: TDX: Add helper functions to print TDX SEAMCALL error Rick Edgecombe
2024-08-13 16:32 ` Isaku Yamahata
2024-08-13 22:34 ` Huang, Kai
2024-08-14 0:31 ` Isaku Yamahata
2024-08-30 5:56 ` Tony Lindgren
2024-08-12 22:48 ` [PATCH 06/25] x86/virt/tdx: Export TDX KeyID information Rick Edgecombe
2024-08-30 18:45 ` Dave Hansen
2024-08-30 19:16 ` Edgecombe, Rick P
2024-08-30 21:18 ` Dave Hansen
2024-09-10 16:26 ` Paolo Bonzini
2024-08-12 22:48 ` [PATCH 07/25] KVM: TDX: Add helper functions to allocate/free TDX private host key id Rick Edgecombe
2024-09-10 16:27 ` Paolo Bonzini
2024-09-10 16:39 ` Edgecombe, Rick P
2024-09-10 16:42 ` Paolo Bonzini
2024-09-10 16:43 ` Edgecombe, Rick P
2024-08-12 22:48 ` [PATCH 08/25] KVM: TDX: Add place holder for TDX VM specific mem_enc_op ioctl Rick Edgecombe
2024-08-13 6:25 ` Binbin Wu
2024-08-13 16:37 ` Isaku Yamahata
2024-08-30 6:00 ` Tony Lindgren
2024-08-12 22:48 ` [PATCH 09/25] KVM: TDX: Get system-wide info about TDX module on initialization Rick Edgecombe
2024-08-13 6:47 ` Binbin Wu
2024-08-30 6:59 ` Tony Lindgren
2024-08-14 6:18 ` Binbin Wu
2024-08-21 0:11 ` Edgecombe, Rick P
2024-08-21 6:14 ` Tony Lindgren
2024-08-15 7:59 ` Xu Yilun
2024-08-30 7:21 ` Tony Lindgren
2024-09-02 1:25 ` Xu Yilun
2024-09-02 5:05 ` Tony Lindgren
2024-08-12 22:48 ` [PATCH 10/25] KVM: TDX: Initialize KVM supported capabilities when module setup Rick Edgecombe
2024-08-13 3:25 ` Chao Gao
2024-08-13 5:26 ` Huang, Kai
2024-08-30 8:44 ` Tony Lindgren
2024-08-13 7:24 ` Binbin Wu
2024-08-14 0:26 ` Chao Gao
2024-08-14 2:36 ` Binbin Wu
2024-08-30 8:34 ` Tony Lindgren
2024-09-10 16:58 ` Paolo Bonzini
2024-09-11 11:07 ` Tony Lindgren
2024-09-03 16:53 ` Edgecombe, Rick P
2024-08-19 1:33 ` Tao Su
2024-08-29 13:28 ` Xiaoyao Li
2024-08-26 11:04 ` Nikolay Borisov
2024-08-29 4:51 ` Tony Lindgren
2024-09-10 17:15 ` Paolo Bonzini
2024-09-11 11:04 ` Tony Lindgren
2024-10-10 8:25 ` Xiaoyao Li
2024-10-10 9:49 ` Tony Lindgren
2024-09-04 11:58 ` Nikolay Borisov
2024-09-05 13:36 ` Xiaoyao Li
2024-09-12 8:04 ` Nikolay Borisov
2024-09-12 8:37 ` Xiaoyao Li
2024-09-12 8:43 ` Nikolay Borisov
2024-09-12 9:07 ` Xiaoyao Li
2024-09-12 15:12 ` Edgecombe, Rick P
2024-09-12 15:18 ` Nikolay Borisov
2024-08-12 22:48 ` [PATCH 11/25] KVM: TDX: Report kvm_tdx_caps in KVM_TDX_CAPABILITIES Rick Edgecombe
2024-08-13 3:35 ` Chao Gao
2024-08-19 10:24 ` Nikolay Borisov
2024-08-21 0:06 ` Edgecombe, Rick P
2024-08-12 22:48 ` [PATCH 12/25] KVM: TDX: Allow userspace to configure maximum vCPUs for TDX guests Rick Edgecombe
2024-08-19 1:17 ` Tao Su
2024-08-21 0:12 ` Edgecombe, Rick P
2024-08-30 8:53 ` Tony Lindgren
2024-09-30 2:14 ` Xiaoyao Li
2024-08-12 22:48 ` [PATCH 13/25] KVM: TDX: create/destroy VM structure Rick Edgecombe
2024-08-14 3:08 ` Yuan Yao
2024-08-21 6:13 ` Tony Lindgren
2024-08-16 7:31 ` Xu Yilun
2024-08-30 9:26 ` Tony Lindgren
2024-08-19 15:09 ` Nikolay Borisov
2024-08-21 0:23 ` Edgecombe, Rick P
2024-08-21 5:39 ` Tony Lindgren
2024-08-21 16:52 ` Edgecombe, Rick P
2024-08-30 9:40 ` Tony Lindgren
2024-09-02 9:22 ` Tony Lindgren
2024-08-12 22:48 ` [PATCH 14/25] KVM: TDX: initialize VM with TDX specific parameters Rick Edgecombe
2024-08-19 15:35 ` Nikolay Borisov [this message]
2024-08-21 0:01 ` Edgecombe, Rick P
2024-08-29 6:27 ` Yan Zhao
2024-09-02 10:31 ` Tony Lindgren
2024-09-05 6:59 ` Yan Zhao
2024-09-05 9:27 ` Tony Lindgren
2024-09-06 4:05 ` Yan Zhao
2024-09-06 4:32 ` Tony Lindgren
2024-09-06 13:52 ` Wang, Wei W
2024-09-03 2:58 ` Chenyi Qiang
2024-09-03 5:44 ` Tony Lindgren
2024-09-03 8:04 ` Chenyi Qiang
2024-09-05 9:31 ` Tony Lindgren
2024-10-01 20:45 ` Edgecombe, Rick P
2024-10-02 23:39 ` Edgecombe, Rick P
2024-08-12 22:48 ` [PATCH 15/25] KVM: TDX: Make pmu_intel.c ignore guest TD case Rick Edgecombe
2024-09-10 17:23 ` Paolo Bonzini
2024-10-01 10:23 ` Tony Lindgren
2024-08-12 22:48 ` [PATCH 16/25] KVM: TDX: Don't offline the last cpu of one package when there's TDX guest Rick Edgecombe
2024-08-13 8:37 ` Binbin Wu
2024-08-12 22:48 ` [PATCH 17/25] KVM: TDX: create/free TDX vcpu structure Rick Edgecombe
2024-08-13 9:15 ` Binbin Wu
2024-09-02 10:50 ` Tony Lindgren
2024-08-19 16:46 ` Nikolay Borisov
2024-08-29 5:00 ` Tony Lindgren
2024-08-29 6:41 ` Yan Zhao
2024-08-12 22:48 ` [PATCH 18/25] KVM: TDX: Do TDX specific vcpu initialization Rick Edgecombe
2024-08-13 8:00 ` Yuan Yao
2024-08-13 17:21 ` Isaku Yamahata
2024-08-14 1:20 ` Yuan Yao
2024-08-15 0:47 ` Isaku Yamahata
2024-09-03 5:23 ` Tony Lindgren
2024-10-09 15:01 ` Adrian Hunter
2024-10-16 17:42 ` Edgecombe, Rick P
2024-10-18 2:21 ` Xiaoyao Li
2024-10-18 14:20 ` Edgecombe, Rick P
2024-10-21 8:35 ` Xiaoyao Li
2024-10-26 1:12 ` Edgecombe, Rick P
2024-08-28 14:34 ` Edgecombe, Rick P
2024-09-03 5:34 ` Tony Lindgren
2024-08-12 22:48 ` [PATCH 19/25] KVM: X86: Introduce kvm_get_supported_cpuid_internal() Rick Edgecombe
2024-08-12 22:48 ` [PATCH 20/25] KVM: X86: Introduce tdx_get_kvm_supported_cpuid() Rick Edgecombe
2024-08-12 22:48 ` [PATCH 21/25] KVM: x86: Introduce KVM_TDX_GET_CPUID Rick Edgecombe
2024-08-19 2:59 ` Tao Su
2024-09-03 6:21 ` Tony Lindgren
2024-09-10 17:27 ` Paolo Bonzini
2024-08-19 5:02 ` Xu Yilun
2024-09-03 7:19 ` Tony Lindgren
2024-09-10 17:29 ` Paolo Bonzini
2024-09-11 11:11 ` Tony Lindgren
2024-08-26 14:09 ` Nikolay Borisov
2024-08-26 17:46 ` Edgecombe, Rick P
2024-08-27 12:19 ` Nikolay Borisov
2024-08-27 20:40 ` Edgecombe, Rick P
2024-09-30 6:26 ` Xiaoyao Li
2024-09-30 16:22 ` Edgecombe, Rick P
2024-08-12 22:48 ` [PATCH 22/25] KVM: TDX: Use guest physical address to configure EPT level and GPAW Rick Edgecombe
2024-09-10 17:31 ` Paolo Bonzini
2024-10-10 9:13 ` Xiaoyao Li
2024-10-10 10:36 ` Tony Lindgren
2024-08-12 22:48 ` [PATCH 23/25] KVM: x86/mmu: Taking guest pa into consideration when calculate tdp level Rick Edgecombe
2024-09-10 17:33 ` Paolo Bonzini
2024-08-12 22:48 ` [PATCH 24/25] KVM: x86: Filter directly configurable TDX CPUID bits Rick Edgecombe
2024-08-19 5:02 ` Xu Yilun
2024-09-03 7:51 ` Tony Lindgren
2024-09-10 17:36 ` Paolo Bonzini
2024-08-12 22:48 ` [PATCH 25/25] KVM: x86: Add CPUID bits missing from KVM_GET_SUPPORTED_CPUID Rick Edgecombe
2024-08-13 11:34 ` Chao Gao
2024-08-13 15:14 ` Xiaoyao Li
2024-08-14 0:47 ` Chao Gao
2024-08-14 1:16 ` Sean Christopherson
2024-08-14 10:46 ` Chao Gao
2024-08-14 13:35 ` Sean Christopherson
2024-08-14 17:35 ` Edgecombe, Rick P
2024-08-14 21:22 ` Sean Christopherson
2024-08-13 18:45 ` Edgecombe, Rick P
2024-08-14 1:10 ` Sean Christopherson
2024-08-14 11:36 ` Chao Gao
2024-08-14 17:17 ` Edgecombe, Rick P
2024-09-10 17:52 ` Paolo Bonzini
2024-09-12 7:48 ` Xiaoyao Li
2024-09-12 14:09 ` Paolo Bonzini
2024-09-12 14:45 ` Xiaoyao Li
2024-09-12 14:48 ` Paolo Bonzini
2024-09-12 15:26 ` Xiaoyao Li
2024-09-12 16:42 ` Sean Christopherson
2024-09-12 18:29 ` Paolo Bonzini
2024-09-12 18:41 ` Sean Christopherson
2024-09-13 3:54 ` Xiaoyao Li
2024-09-12 18:42 ` Edgecombe, Rick P
2024-09-13 3:57 ` Xiaoyao Li
2024-09-12 15:07 ` Edgecombe, Rick P
2024-09-12 15:37 ` Paolo Bonzini
2024-09-12 16:38 ` Edgecombe, Rick P
2024-08-15 5:20 ` [PATCH 00/25] TDX vCPU/VM creation Tony Lindgren
2024-08-15 23:46 ` Edgecombe, Rick P
2024-08-16 5:18 ` Tony Lindgren
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=822766d1-746a-4b15-b790-d1e331e4d9aa@suse.com \
--to=nik.borisov@suse.com \
--cc=isaku.yamahata@gmail.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=rick.p.edgecombe@intel.com \
--cc=seanjc@google.com \
--cc=tony.lindgren@linux.intel.com \
--cc=xiaoyao.li@intel.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®