qemu-devel
[Top][All Lists]
Advanced

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

Re: [PATCH] linux-headers: update from 6.15 + kvm/next


From: Xiaoyao Li
Subject: Re: [PATCH] linux-headers: update from 6.15 + kvm/next
Date: Mon, 12 May 2025 21:36:07 +0800
User-agent: Mozilla Thunderbird

On 5/12/2025 5:31 PM, Paolo Bonzini wrote:
This brings in the userspace TDX API.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com>

---
  linux-headers/asm-x86/kvm.h | 71 +++++++++++++++++++++++++++++++++++++
  linux-headers/linux/kvm.h   |  1 +
  2 files changed, 72 insertions(+)

diff --git a/linux-headers/asm-x86/kvm.h b/linux-headers/asm-x86/kvm.h
index dc591fb17e5..7fb57ccb2a7 100644
--- a/linux-headers/asm-x86/kvm.h
+++ b/linux-headers/asm-x86/kvm.h
@@ -439,6 +439,7 @@ struct kvm_sync_regs {
  #define KVM_X86_QUIRK_MWAIT_NEVER_UD_FAULTS   (1 << 6)
  #define KVM_X86_QUIRK_SLOT_ZAP_ALL            (1 << 7)
  #define KVM_X86_QUIRK_STUFF_FEATURE_MSRS      (1 << 8)
+#define KVM_X86_QUIRK_IGNORE_GUEST_PAT         (1 << 9)
#define KVM_STATE_NESTED_FORMAT_VMX 0
  #define KVM_STATE_NESTED_FORMAT_SVM   1
@@ -928,4 +929,74 @@ struct kvm_hyperv_eventfd {
  #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.
+        */
+       __u64 hw_error;
+};
+
+struct kvm_tdx_capabilities {
+       __u64 supported_attrs;
+       __u64 supported_xfam;
+       __u64 reserved[254];
+
+       /* Configurable CPUID bits for userspace */
+       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 e5f3e8b5a02..99cc82a275c 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 {




reply via email to

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