qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v7 01/52] *** HACK *** linux-headers: Update headers to pull in T


From: Xiaoyao Li
Subject: [PATCH v7 01/52] *** HACK *** linux-headers: Update headers to pull in TDX API changes
Date: Fri, 24 Jan 2025 08:19:57 -0500

Pull in recent TDX updates, which are not backwards compatible.

It's just to make this series runnable. It will be updated by script

        scripts/update-linux-headers.sh

once TDX support is upstreamed in linux kernel

Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com>
---
 linux-headers/asm-x86/kvm.h | 70 +++++++++++++++++++++++++++++++++++++
 linux-headers/linux/kvm.h   |  1 +
 2 files changed, 71 insertions(+)

diff --git a/linux-headers/asm-x86/kvm.h b/linux-headers/asm-x86/kvm.h
index 96589490c426..baca2d479365 100644
--- a/linux-headers/asm-x86/kvm.h
+++ b/linux-headers/asm-x86/kvm.h
@@ -923,5 +923,75 @@ struct kvm_hyperv_eventfd {
 #define KVM_X86_SEV_VM         2
 #define KVM_X86_SEV_ES_VM      3
 #define KVM_X86_SNP_VM         4
+#define KVM_X86_TDX_VM         5
+
+/* Trust Domain eXtension sub-ioctl() commands. */
+enum kvm_tdx_cmd_id {
+       KVM_TDX_CAPABILITIES = 0,
+       KVM_TDX_INIT_VM,
+       KVM_TDX_INIT_VCPU,
+       KVM_TDX_INIT_MEM_REGION,
+       KVM_TDX_FINALIZE_VM,
+       KVM_TDX_GET_CPUID,
+
+       KVM_TDX_CMD_NR_MAX,
+};
+
+struct kvm_tdx_cmd {
+       /* enum kvm_tdx_cmd_id */
+       __u32 id;
+       /* flags for sub-commend. If sub-command doesn't use this, set zero. */
+       __u32 flags;
+       /*
+        * data for each sub-command. An immediate or a pointer to the actual
+        * data in process virtual address.  If sub-command doesn't use it,
+        * set zero.
+        */
+       __u64 data;
+       /*
+        * Auxiliary error code.  The sub-command may return TDX SEAMCALL
+        * status code in addition to -Exxx.
+        * Defined for consistency with struct kvm_sev_cmd.
+        */
+       __u64 hw_error;
+};
+
+struct kvm_tdx_capabilities {
+       __u64 supported_attrs;
+       __u64 supported_xfam;
+       __u64 reserved[254];
+       struct kvm_cpuid2 cpuid;
+};
+
+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;
+};
+
+#define KVM_TDX_MEASURE_MEMORY_REGION   _BITULL(0)
+
+struct kvm_tdx_init_mem_region {
+       __u64 source_addr;
+       __u64 gpa;
+       __u64 nr_pages;
+};
 
 #endif /* _ASM_X86_KVM_H */
diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h
index 3bcd4eabe324..b325122505b5 100644
--- a/linux-headers/linux/kvm.h
+++ b/linux-headers/linux/kvm.h
@@ -369,6 +369,7 @@ struct kvm_run {
 #define KVM_SYSTEM_EVENT_WAKEUP         4
 #define KVM_SYSTEM_EVENT_SUSPEND        5
 #define KVM_SYSTEM_EVENT_SEV_TERM       6
+#define KVM_SYSTEM_EVENT_TDX_FATAL      7
                        __u32 type;
                        __u32 ndata;
                        union {
-- 
2.34.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]