Skip to content

Commit 9273122

Browse files
sys/linux: add Intel TDX descriptions
Initial support for Intel TDX as per https://docs.kernel.org/virt/kvm/x86/intel-tdx.html
1 parent 2d29812 commit 9273122

File tree

2 files changed

+54
-0
lines changed

2 files changed

+54
-0
lines changed

sys/linux/dev_kvm_amd64.txt

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,26 @@ ioctl$KVM_SEV_SNP_LAUNCH_START(fd fd_kvmvm, cmd const[KVM_MEMORY_ENCRYPT_OP], ar
312312
ioctl$KVM_SEV_SNP_LAUNCH_UPDATE(fd fd_kvmvm, cmd const[KVM_MEMORY_ENCRYPT_OP], arg ptr[inout, kvm_memory_encrypt_op[KVM_SEV_SNP_LAUNCH_UPDATE, ptr[in, kvm_sev_snp_launch_update]]])
313313
ioctl$KVM_SEV_SNP_LAUNCH_FINISH(fd fd_kvmvm, cmd const[KVM_MEMORY_ENCRYPT_OP], arg ptr[inout, kvm_memory_encrypt_op[KVM_SEV_SNP_LAUNCH_FINISH, ptr[in, kvm_sev_snp_launch_finish]]])
314314

315+
# TDX-related (based on Documentation/virt/kvm/x86/intel-tdx.rst)
316+
define KVM_TDX_MEASURE_MEMORY_REGION (1 << 0)
317+
kvm_tdx_init_mem_region_flags = KVM_TDX_MEASURE_MEMORY_REGION
318+
319+
kvm_tdx_empty_flags = 0
320+
321+
type kvm_tdx_cmd[ID, FLAGS, DATA] {
322+
id const[ID, int32]
323+
flags flags[FLAGS, int32]
324+
data DATA
325+
hw_error int64 (out)
326+
}
327+
328+
ioctl$KVM_TDX_CAPABILITIES(fd fd_kvmvm, cmd const[KVM_MEMORY_ENCRYPT_OP], arg ptr[inout, kvm_tdx_cmd[KVM_TDX_CAPABILITIES, kvm_tdx_empty_flags, ptr[out, kvm_tdx_capabilities]]])
329+
ioctl$KVM_TDX_INIT_VM(fd fd_kvmvm, cmd const[KVM_MEMORY_ENCRYPT_OP], arg ptr[inout, kvm_tdx_cmd[KVM_TDX_INIT_VM, kvm_tdx_empty_flags, ptr[in, kvm_tdx_init_vm]]])
330+
ioctl$KVM_TDX_INIT_VCPU(fd fd_kvmcpu, cmd const[KVM_MEMORY_ENCRYPT_OP], arg ptr[inout, kvm_tdx_cmd[KVM_TDX_INIT_VCPU, kvm_tdx_empty_flags, int64]])
331+
ioctl$KVM_TDX_INIT_MEM_REGION(fd fd_kvmvm, cmd const[KVM_MEMORY_ENCRYPT_OP], arg ptr[inout, kvm_tdx_cmd[KVM_TDX_INIT_MEM_REGION, kvm_tdx_init_mem_region_flags, ptr[in, kvm_tdx_init_mem_region]]])
332+
ioctl$KVM_TDX_FINALIZE_VM(fd fd_kvmvm, cmd const[KVM_MEMORY_ENCRYPT_OP], arg ptr[inout, kvm_tdx_cmd[KVM_TDX_FINALIZE_VM, kvm_tdx_empty_flags, const[0, intptr]]])
333+
ioctl$KVM_TDX_GET_CPUID(fd fd_kvmcpu, cmd const[KVM_MEMORY_ENCRYPT_OP], arg ptr[inout, kvm_tdx_cmd[KVM_TDX_GET_CPUID, kvm_tdx_empty_flags, ptr[inout, kvm_cpuid2]]])
334+
315335
# Apparently KVM_MEMORY_ENCRYPT_REG_REGION and KVM_MEMORY_ENCRYPT_UNREG_REGION are VM ioctls, despite
316336
# https://docs.kernel.org/virt/kvm/api.html#kvm-memory-encrypt-reg-region says they are system.
317337
ioctl$KVM_MEMORY_ENCRYPT_REG_REGION(fd fd_kvmvm, cmd const[KVM_MEMORY_ENCRYPT_REG_REGION], arg ptr[in, kvm_enc_region])
@@ -471,6 +491,33 @@ kvm_sev_snp_launch_finish {
471491
pad1 array[const[0, int64], 4]
472492
}
473493

494+
kvm_tdx_capabilities {
495+
supported_attrs int64
496+
supported_xfam int64
497+
kernel_tdvmcallinfo_1_r11 int64
498+
user_tdvmcallinfo_1_r11 int64
499+
kernel_tdvmcallinfo_1_r12 int64
500+
user_tdvmcallinfo_1_r12 int64
501+
reserved array[const[0, int64], 250]
502+
cpuid kvm_cpuid2
503+
}
504+
505+
kvm_tdx_init_vm {
506+
attributes int64
507+
xfam int64
508+
mrconfigid array[int64, 6]
509+
mrowner array[int64, 6]
510+
mrownerconfig array[int64, 6]
511+
reserved array[const[0, int64], 12]
512+
cpuid kvm_cpuid2
513+
}
514+
515+
kvm_tdx_init_mem_region {
516+
source_addr vma64
517+
gpa flags[kvm_guest_addrs, int64]
518+
nr_pages int64
519+
}
520+
474521
kvm_enc_region {
475522
addr flags[kvm_guest_addrs, int64]
476523
size flags[kvm_guest_addr_size, int64]

sys/linux/dev_kvm_amd64.txt.const

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,13 @@ KVM_STATE_NESTED_SMM_VMXON = 2
164164
KVM_STATE_NESTED_SVM_VMCB_SIZE = 4096
165165
KVM_STATE_NESTED_VMX_VMCS_SIZE = 4096
166166
KVM_STATE_VMX_PREEMPTION_TIMER_DEADLINE = 1
167+
KVM_TDX_CAPABILITIES = 0
168+
KVM_TDX_FINALIZE_VM = 4
169+
KVM_TDX_GET_CPUID = 5
170+
KVM_TDX_INIT_MEM_REGION = 3
171+
KVM_TDX_INIT_VCPU = 2
172+
KVM_TDX_INIT_VM = 1
173+
KVM_TDX_MEASURE_MEMORY_REGION = 1
167174
KVM_TPR_ACCESS_REPORTING = 3223891602
168175
KVM_TRANSLATE = 3222843013
169176
KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK = 2

0 commit comments

Comments
 (0)