All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Xiaoyao Li <xiaoyao.li@intel.com>
Cc: "Paolo Bonzini" <pbonzini@redhat.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	"Markus Armbruster" <armbru@redhat.com>,
	"Francesco Lavra" <francescolavra.fl@gmail.com>,
	"Marcelo Tosatti" <mtosatti@redhat.com>,
	qemu-devel@nongnu.org,
	"Philippe Mathieu-Daudé" <philmd@linaro.org>,
	"Rick Edgecombe" <rick.p.edgecombe@intel.com>
Subject: Re: [PATCH v8 45/55] i386/tdx: Add TDX fixed1 bits to supported CPUIDs
Date: Wed, 2 Apr 2025 13:32:38 +0100	[thread overview]
Message-ID: <Z-0uZn-priWHR9eo@redhat.com> (raw)
In-Reply-To: <20250401130205.2198253-46-xiaoyao.li@intel.com>

On Tue, Apr 01, 2025 at 09:01:55AM -0400, Xiaoyao Li wrote:
> TDX architecture forcibly sets some CPUID bits for TD guest that VMM
> cannot disable it. They are fixed1 bits.
> 
> Fixed1 bits are not covered by tdx_caps.cpuid (which only contians the

Typo   s/contians/contains/

> directly configurable bits), while fixed1 bits are supported for TD guest
> obviously.
> 
> Add fixed1 bits to tdx_supported_cpuid. Besides, set all the fixed1
> bits to the initial set of KVM's support since KVM might not report them
> as supported.
> 
> Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com>
> ---
>  target/i386/cpu.h          |   2 +
>  target/i386/kvm/kvm_i386.h |   7 ++
>  target/i386/kvm/tdx.c      | 132 +++++++++++++++++++++++++++++++++++++
>  target/i386/sev.c          |   5 --
>  4 files changed, 141 insertions(+), 5 deletions(-)
> 
> diff --git a/target/i386/cpu.h b/target/i386/cpu.h
> index 42ef77789ded..115137279a1a 100644
> --- a/target/i386/cpu.h
> +++ b/target/i386/cpu.h
> @@ -924,6 +924,8 @@ uint64_t x86_cpu_get_supported_feature_word(X86CPU *cpu, FeatureWord w);
>  #define CPUID_7_0_EDX_FSRM              (1U << 4)
>  /* AVX512 Vector Pair Intersection to a Pair of Mask Registers */
>  #define CPUID_7_0_EDX_AVX512_VP2INTERSECT (1U << 8)
> + /* "md_clear" VERW clears CPU buffers */
> +#define CPUID_7_0_EDX_MD_CLEAR          (1U << 10)
>  /* SERIALIZE instruction */
>  #define CPUID_7_0_EDX_SERIALIZE         (1U << 14)
>  /* TSX Suspend Load Address Tracking instruction */
> diff --git a/target/i386/kvm/kvm_i386.h b/target/i386/kvm/kvm_i386.h
> index 484a1de84d51..c1bafcfc9b63 100644
> --- a/target/i386/kvm/kvm_i386.h
> +++ b/target/i386/kvm/kvm_i386.h
> @@ -13,8 +13,15 @@
>  
>  #include "system/kvm.h"
>  
> +#include <linux/kvm.h>
> +
>  #define KVM_MAX_CPUID_ENTRIES  100
>  
> +typedef struct KvmCpuidInfo {
> +    struct kvm_cpuid2 cpuid;
> +    struct kvm_cpuid_entry2 entries[KVM_MAX_CPUID_ENTRIES];
> +} KvmCpuidInfo;
> +
>  /* always false if !CONFIG_KVM */
>  #define kvm_pit_in_kernel() \
>      (kvm_irqchip_in_kernel() && !kvm_irqchip_is_split())
> diff --git a/target/i386/kvm/tdx.c b/target/i386/kvm/tdx.c
> index b9a96c2e392d..49a94d8ffe7d 100644
> --- a/target/i386/kvm/tdx.c
> +++ b/target/i386/kvm/tdx.c
> @@ -369,6 +369,131 @@ static Notifier tdx_machine_done_notify = {
>      .notify = tdx_finalize_vm,
>  };
>  
> +/*
> + * Some CPUID bits change from fixed1 to configurable bits when TDX module
> + * supports TDX_FEATURES0.VE_REDUCTION. e.g., MCA/MCE/MTRR/CORE_CAPABILITY.
> + *
> + * To make QEMU work with all the versions of TDX module, keep the fixed1 bits
> + * here if they are ever fixed1 bits in any of the version though not fixed1 in
> + * the latest version. Otherwise, with the older version of TDX module, QEMU may
> + * treat the fixed1 bit as unsupported.
> + *
> + * For newer TDX module, it does no harm to keep them in tdx_fixed1_bits even
> + * though they changed to configurable bits. Because tdx_fixed1_bits is used to
> + * setup the supported bits.
> + */
> +KvmCpuidInfo tdx_fixed1_bits = {
> +    .cpuid.nent = 8,
> +    .entries[0] = {
> +        .function = 0x1,
> +        .index = 0,
> +        .ecx = CPUID_EXT_SSE3 | CPUID_EXT_PCLMULQDQ | CPUID_EXT_DTES64 |
> +               CPUID_EXT_DSCPL | CPUID_EXT_SSSE3 | CPUID_EXT_CX16 |
> +               CPUID_EXT_PDCM | CPUID_EXT_PCID | CPUID_EXT_SSE41 |
> +               CPUID_EXT_SSE42 | CPUID_EXT_X2APIC | CPUID_EXT_MOVBE |
> +               CPUID_EXT_POPCNT | CPUID_EXT_AES | CPUID_EXT_XSAVE |
> +               CPUID_EXT_RDRAND | CPUID_EXT_HYPERVISOR,
> +        .edx = CPUID_FP87 | CPUID_VME | CPUID_DE | CPUID_PSE | CPUID_TSC |
> +               CPUID_MSR | CPUID_PAE | CPUID_MCE | CPUID_CX8 | CPUID_APIC |
> +               CPUID_SEP | CPUID_MTRR | CPUID_PGE | CPUID_MCA | CPUID_CMOV |
> +               CPUID_PAT | CPUID_CLFLUSH | CPUID_DTS | CPUID_MMX | CPUID_FXSR |
> +               CPUID_SSE | CPUID_SSE2,
> +    },
> +    .entries[1] = {
> +        .function = 0x6,
> +        .index = 0,
> +        .eax = CPUID_6_EAX_ARAT,
> +    },
> +    .entries[2] = {
> +        .function = 0x7,
> +        .index = 0,
> +        .flags = KVM_CPUID_FLAG_SIGNIFCANT_INDEX,
> +        .ebx = CPUID_7_0_EBX_FSGSBASE | CPUID_7_0_EBX_FDP_EXCPTN_ONLY |
> +               CPUID_7_0_EBX_SMEP | CPUID_7_0_EBX_INVPCID |
> +               CPUID_7_0_EBX_ZERO_FCS_FDS | CPUID_7_0_EBX_RDSEED |
> +               CPUID_7_0_EBX_SMAP | CPUID_7_0_EBX_CLFLUSHOPT |
> +               CPUID_7_0_EBX_CLWB | CPUID_7_0_EBX_SHA_NI,
> +        .ecx = CPUID_7_0_ECX_BUS_LOCK_DETECT | CPUID_7_0_ECX_MOVDIRI |
> +               CPUID_7_0_ECX_MOVDIR64B,
> +        .edx = CPUID_7_0_EDX_MD_CLEAR | CPUID_7_0_EDX_SPEC_CTRL |
> +               CPUID_7_0_EDX_STIBP | CPUID_7_0_EDX_FLUSH_L1D |
> +               CPUID_7_0_EDX_ARCH_CAPABILITIES | CPUID_7_0_EDX_CORE_CAPABILITY |
> +               CPUID_7_0_EDX_SPEC_CTRL_SSBD,
> +    },
> +    .entries[3] = {
> +        .function = 0x7,
> +        .index = 2,
> +        .flags = KVM_CPUID_FLAG_SIGNIFCANT_INDEX,
> +        .edx = (1U << 0) | (1U << 1) | (1U << 2) | (1U << 4),
> +    },
> +    .entries[4] = {
> +        .function = 0xD,
> +        .index = 0,
> +        .flags = KVM_CPUID_FLAG_SIGNIFCANT_INDEX,
> +        .eax = XSTATE_FP_MASK | XSTATE_SSE_MASK,
> +    },
> +    .entries[5] = {
> +        .function = 0xD,
> +        .index = 1,
> +        .flags = KVM_CPUID_FLAG_SIGNIFCANT_INDEX,
> +        .eax = CPUID_XSAVE_XSAVEOPT | CPUID_XSAVE_XSAVEC|
> +               CPUID_XSAVE_XGETBV1 | CPUID_XSAVE_XSAVES,
> +    },
> +    .entries[6] = {
> +        .function = 0x80000001,
> +        .index = 0,
> +        .ecx = CPUID_EXT3_LAHF_LM | CPUID_EXT3_ABM | CPUID_EXT3_3DNOWPREFETCH,
> +        /* strictly speaking, SYSCALL is not fixed1 bit since it depends on
> +         * the CPU to be in 64-bit mode. But here fixed1 is used to serve the
> +         * purpose of supported bits for TDX. In this sense, SYACALL is always
> +         * supported.
> +         */
> +        .edx = CPUID_EXT2_SYSCALL | CPUID_EXT2_NX | CPUID_EXT2_PDPE1GB |
> +               CPUID_EXT2_RDTSCP | CPUID_EXT2_LM,
> +    },
> +    .entries[7] = {
> +        .function = 0x80000007,
> +        .index = 0,
> +        .edx = CPUID_APM_INVTSC,
> +    },
> +};
> +
> +static struct kvm_cpuid_entry2 *find_in_supported_entry(uint32_t function,
> +                                                        uint32_t index)
> +{
> +    struct kvm_cpuid_entry2 *e;
> +
> +    e = cpuid_find_entry(tdx_supported_cpuid, function, index);
> +    if (!e) {
> +        if (tdx_supported_cpuid->nent >= KVM_MAX_CPUID_ENTRIES) {
> +            error_report("tdx_supported_cpuid requries more space than %d entries",
> +                          KVM_MAX_CPUID_ENTRIES);
> +            exit(1);
> +        }
> +        e = &tdx_supported_cpuid->entries[tdx_supported_cpuid->nent++];
> +        e->function = function;
> +        e->index = index;
> +    }
> +
> +    return e;
> +}
> +
> +static void tdx_add_supported_cpuid_by_fixed1_bits(void)
> +{
> +    struct kvm_cpuid_entry2 *e, *e1;
> +    int i;
> +
> +    for (i = 0; i < tdx_fixed1_bits.cpuid.nent; i++) {
> +        e = &tdx_fixed1_bits.entries[i];
> +
> +        e1 = find_in_supported_entry(e->function, e->index);
> +        e1->eax |= e->eax;
> +        e1->ebx |= e->ebx;
> +        e1->ecx |= e->ecx;
> +        e1->edx |= e->edx;
> +    }
> +}
> +
>  static void tdx_setup_supported_cpuid(void)
>  {
>      if (tdx_supported_cpuid) {
> @@ -381,6 +506,8 @@ static void tdx_setup_supported_cpuid(void)
>      memcpy(tdx_supported_cpuid->entries, tdx_caps->cpuid.entries,
>             tdx_caps->cpuid.nent * sizeof(struct kvm_cpuid_entry2));
>      tdx_supported_cpuid->nent = tdx_caps->cpuid.nent;
> +
> +    tdx_add_supported_cpuid_by_fixed1_bits();
>  }
>  
>  static int tdx_kvm_init(ConfidentialGuestSupport *cgs, Error **errp)
> @@ -465,6 +592,11 @@ static uint32_t tdx_adjust_cpuid_features(X86ConfidentialGuest *cg,
>  {
>      struct kvm_cpuid_entry2 *e;
>  
> +    e = cpuid_find_entry(&tdx_fixed1_bits.cpuid, feature, index);
> +    if (e) {
> +        value |= cpuid_entry_get_reg(e, reg);
> +    }
> +
>      if (is_feature_word_cpuid(feature, index, reg)) {
>          e = cpuid_find_entry(tdx_supported_cpuid, feature, index);
>          if (e) {
> diff --git a/target/i386/sev.c b/target/i386/sev.c
> index a6c0a697250b..217b19ad7bc6 100644
> --- a/target/i386/sev.c
> +++ b/target/i386/sev.c
> @@ -214,11 +214,6 @@ static const char *const sev_fw_errlist[] = {
>  /* <linux/kvm.h> doesn't expose this, so re-use the max from kvm.c */
>  #define KVM_MAX_CPUID_ENTRIES 100
>  
> -typedef struct KvmCpuidInfo {
> -    struct kvm_cpuid2 cpuid;
> -    struct kvm_cpuid_entry2 entries[KVM_MAX_CPUID_ENTRIES];
> -} KvmCpuidInfo;
> -
>  #define SNP_CPUID_FUNCTION_MAXCOUNT 64
>  #define SNP_CPUID_FUNCTION_UNKNOWN 0xFFFFFFFF
>  
> -- 
> 2.34.1
> 

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|



  reply	other threads:[~2025-04-02 12:33 UTC|newest]

Thread overview: 161+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-01 13:01 [PATCH for 10.1 v8 00/55] QEMU TDX support Xiaoyao Li
2025-04-01 13:01 ` [PATCH v8 01/55] *** HACK *** linux-headers: Update headers to pull in TDX API changes Xiaoyao Li
2025-04-18  9:47   ` Zhao Liu
2025-04-22  1:57     ` Xiaoyao Li
2025-04-01 13:01 ` [PATCH v8 02/55] i386: Introduce tdx-guest object Xiaoyao Li
2025-04-02 10:53   ` Daniel P. Berrangé
2025-04-18  9:17   ` Zhao Liu
2025-04-22  2:14     ` Xiaoyao Li
2025-04-22  8:24     ` Daniel P. Berrangé
2025-04-22 14:25       ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 03/55] i386/tdx: Implement tdx_kvm_type() for TDX Xiaoyao Li
2025-04-02 10:55   ` Daniel P. Berrangé
2025-04-18  9:23   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 04/55] i386/tdx: Implement tdx_kvm_init() to initialize TDX VM context Xiaoyao Li
2025-04-02 10:57   ` Daniel P. Berrangé
2025-04-18  9:32   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 05/55] i386/tdx: Get tdx_capabilities via KVM_TDX_CAPABILITIES Xiaoyao Li
2025-04-02 11:00   ` Daniel P. Berrangé
2025-04-02 14:52     ` Xiaoyao Li
2025-04-02 14:54       ` Daniel P. Berrangé
2025-04-01 13:01 ` [PATCH v8 06/55] i386/tdx: Introduce is_tdx_vm() helper and cache tdx_guest object Xiaoyao Li
2025-04-18  9:45   ` Zhao Liu
2025-04-22  2:32     ` Xiaoyao Li
2025-04-22 14:20       ` Zhao Liu
2025-04-22 14:27         ` Xiaoyao Li
2025-04-01 13:01 ` [PATCH v8 07/55] kvm: Introduce kvm_arch_pre_create_vcpu() Xiaoyao Li
2025-04-02 11:43   ` Daniel P. Berrangé
2025-04-22 14:31   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 08/55] i386/tdx: Initialize TDX before creating TD vcpus Xiaoyao Li
2025-04-02 11:41   ` Daniel P. Berrangé
2025-04-08  2:37     ` Xiaoyao Li
2025-04-22 15:34       ` Zhao Liu
2025-04-23  8:00         ` Xiaoyao Li
2025-04-23 12:18           ` Zhao Liu
2025-04-22 14:54   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 09/55] i386/tdx: Add property sept-ve-disable for tdx-guest object Xiaoyao Li
2025-04-02 11:45   ` Daniel P. Berrangé
2025-04-22 14:56   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 10/55] i386/tdx: Make sept_ve_disable set by default Xiaoyao Li
2025-04-02 11:45   ` Daniel P. Berrangé
2025-04-22 15:00   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 11/55] i386/tdx: Wire CPU features up with attributes of TD guest Xiaoyao Li
2025-04-02 11:46   ` Daniel P. Berrangé
2025-04-22 15:06   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 12/55] i386/tdx: Validate TD attributes Xiaoyao Li
2025-04-02 11:47   ` Daniel P. Berrangé
2025-04-09  2:57     ` Xiaoyao Li
2025-04-22 15:35   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 13/55] i386/tdx: Support user configurable mrconfigid/mrowner/mrownerconfig Xiaoyao Li
2025-04-02 11:51   ` Daniel P. Berrangé
2025-04-08  3:14     ` Xiaoyao Li
2025-04-07 11:59   ` Markus Armbruster
2025-04-22 15:42   ` Zhao Liu
2025-04-23  8:11     ` Xiaoyao Li
2025-04-23 12:31       ` Zhao Liu
2025-04-23 13:08         ` Xiaoyao Li
2025-04-23 13:33       ` Daniel P. Berrangé
2025-04-01 13:01 ` [PATCH v8 14/55] i386/tdx: Set APIC bus rate to match with what TDX module enforces Xiaoyao Li
2025-04-02 11:56   ` Daniel P. Berrangé
2025-04-08  3:14     ` Xiaoyao Li
2025-04-22 15:44   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 15/55] i386/tdx: Implement user specified tsc frequency Xiaoyao Li
2025-04-02 12:00   ` Daniel P. Berrangé
2025-04-23  3:25   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 16/55] i386/tdx: load TDVF for TD guest Xiaoyao Li
2025-04-24  7:52   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 17/55] i386/tdvf: Introduce function to parse TDVF metadata Xiaoyao Li
2025-04-02 12:08   ` Daniel P. Berrangé
2025-04-09  4:11     ` Xiaoyao Li
2025-04-24  8:15       ` Zhao Liu
2025-04-24  8:11   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 18/55] i386/tdx: Parse TDVF metadata for TDX VM Xiaoyao Li
2025-04-02 12:11   ` Daniel P. Berrangé
2025-04-24  8:16   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 19/55] i386/tdx: Don't initialize pc.rom for TDX VMs Xiaoyao Li
2025-04-24 14:52   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 20/55] i386/tdx: Track mem_ptr for each firmware entry of TDVF Xiaoyao Li
2025-04-24 15:09   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 21/55] i386/tdx: Track RAM entries for TDX VM Xiaoyao Li
2025-04-25  4:49   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 22/55] headers: Add definitions from UEFI spec for volumes, resources, etc Xiaoyao Li
2025-04-25  4:51   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 23/55] i386/tdx: Setup the TD HOB list Xiaoyao Li
2025-04-25  7:05   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 24/55] i386/tdx: Add TDVF memory via KVM_TDX_INIT_MEM_REGION Xiaoyao Li
2025-04-25  8:07   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 25/55] i386/tdx: Call KVM_TDX_INIT_VCPU to initialize TDX vcpu Xiaoyao Li
2025-04-25  8:12   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 26/55] i386/tdx: Finalize TDX VM Xiaoyao Li
2025-04-27  9:07   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 27/55] i386/tdx: Enable user exit on KVM_HC_MAP_GPA_RANGE Xiaoyao Li
2025-04-27  9:07   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 28/55] i386/tdx: Handle KVM_SYSTEM_EVENT_TDX_FATAL Xiaoyao Li
2025-04-28 15:00   ` Zhao Liu
2025-05-08  6:07     ` Xiaoyao Li
2025-04-01 13:01 ` [PATCH v8 29/55] i386/tdx: Wire TDX_REPORT_FATAL_ERROR with GuestPanic facility Xiaoyao Li
2025-04-28 15:23   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 30/55] kvm: Check KVM_CAP_MAX_VCPUS at vm level Xiaoyao Li
2025-04-28 15:54   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 31/55] i386/cpu: introduce x86_confidential_guest_cpu_instance_init() Xiaoyao Li
2025-04-24  5:51   ` Xiaoyao Li
2025-04-29 10:06     ` Zhao Liu
2025-05-07  1:42       ` Xiaoyao Li
2025-04-29  6:35   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 32/55] i386/tdx: implement tdx_cpu_instance_init() Xiaoyao Li
2025-04-29  6:42   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 33/55] i386/cpu: Introduce enable_cpuid_0x1f to force exposing CPUID 0x1f Xiaoyao Li
2025-04-29 10:10   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 34/55] i386/tdx: Force " Xiaoyao Li
2025-04-29 10:10   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 35/55] i386/tdx: Set kvm_readonly_mem_enabled to false for TDX VM Xiaoyao Li
2025-04-29 10:12   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 36/55] i386/tdx: Disable SMM for TDX VMs Xiaoyao Li
2025-04-02 12:25   ` Daniel P. Berrangé
2025-04-29 10:15   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 37/55] i386/tdx: Disable PIC " Xiaoyao Li
2025-04-02 12:27   ` Daniel P. Berrangé
2025-04-29 10:16   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 38/55] i386/tdx: Set and check kernel_irqchip mode for TDX Xiaoyao Li
2025-04-02 10:41   ` Daniel P. Berrangé
2025-04-08  5:03     ` Xiaoyao Li
2025-04-29 10:22   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 39/55] i386/tdx: Don't synchronize guest tsc for TDs Xiaoyao Li
2025-04-29 10:18   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 40/55] i386/tdx: Only configure MSR_IA32_UCODE_REV in kvm_init_msrs() " Xiaoyao Li
2025-04-29 10:20   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 41/55] i386/apic: Skip kvm_apic_put() for TDX Xiaoyao Li
2025-05-04 15:46   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 42/55] cpu: Don't set vcpu_dirty when guest_state_protected Xiaoyao Li
2025-05-04 15:48   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 43/55] i386/cgs: Rename *mask_cpuid_features() to *adjust_cpuid_features() Xiaoyao Li
2025-04-02 12:57   ` Daniel P. Berrangé
2025-05-04 15:49   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 44/55] i386/tdx: Implement adjust_cpuid_features() for TDX Xiaoyao Li
2025-05-04 16:05   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 45/55] i386/tdx: Add TDX fixed1 bits to supported CPUIDs Xiaoyao Li
2025-04-02 12:32   ` Daniel P. Berrangé [this message]
2025-05-04 16:38   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 46/55] i386/tdx: Add supported CPUID bits related to TD Attributes Xiaoyao Li
2025-05-06 11:31   ` Zhao Liu
2025-05-08  6:31     ` Xiaoyao Li
2025-04-01 13:01 ` [PATCH v8 47/55] i386/tdx: Add supported CPUID bits relates to XFAM Xiaoyao Li
2025-04-01 13:01 ` [PATCH v8 48/55] i386/tdx: Add XFD to supported bit of TDX Xiaoyao Li
2025-05-06 11:25   ` Zhao Liu
2025-04-01 13:01 ` [PATCH v8 49/55] i386/tdx: Define supported KVM features for TDX Xiaoyao Li
2025-05-05 15:09   ` Zhao Liu
2025-04-01 13:02 ` [PATCH v8 50/55] i386/cgs: Introduce x86_confidential_guest_check_features() Xiaoyao Li
2025-05-05 15:11   ` Zhao Liu
2025-04-01 13:02 ` [PATCH v8 51/55] i386/tdx: Fetch and validate CPUID of TD guest Xiaoyao Li
2025-04-01 13:02 ` [PATCH v8 52/55] i386/tdx: Don't treat SYSCALL as unavailable Xiaoyao Li
2025-05-05 15:40   ` Zhao Liu
2025-04-01 13:02 ` [PATCH v8 53/55] i386/tdx: Make invtsc default on Xiaoyao Li
2025-05-05 15:14   ` Zhao Liu
2025-04-01 13:02 ` [PATCH v8 54/55] i386/tdx: Validate phys_bits against host value Xiaoyao Li
2025-04-02 12:37   ` Daniel P. Berrangé
2025-05-05 15:29   ` Zhao Liu
2025-05-08  6:33     ` Xiaoyao Li
2025-04-01 13:02 ` [PATCH v8 55/55] docs: Add TDX documentation Xiaoyao Li
2025-04-02 10:50   ` Daniel P. Berrangé
2025-04-02 11:47     ` Jiří Denemark
2025-04-08  5:15     ` Xiaoyao Li

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=Z-0uZn-priWHR9eo@redhat.com \
    --to=berrange@redhat.com \
    --cc=armbru@redhat.com \
    --cc=francescolavra.fl@gmail.com \
    --cc=mst@redhat.com \
    --cc=mtosatti@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=philmd@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=rick.p.edgecombe@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.