Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 46 additions & 13 deletions sys/linux/dev_kvm_amd64.txt
Original file line number Diff line number Diff line change
Expand Up @@ -590,28 +590,61 @@ kvm_guest_debug_arch_x86 {
reg array[int64, 8]
}

kvm_nested_state {
kvm_vmx_smm {
flags flags[kvm_nested_smm_flags, int16]
}

# Size must be 120 bytes to start data at 128 bytes.
kvm_vmx_nested_state_hdr {
vmxon_pa flags[kvm_guest_addrs, int64]
vmcs12_pa flags[kvm_guest_addrs, int64]
smm kvm_vmx_smm
flags flags[kvm_vmx_nested_state_hdr_flags, int32]
preemption_timer_deadline int64
} [size[120]]

kvm_vmx_nested_state_data {
vmcs12 array[int8, KVM_STATE_NESTED_VMX_VMCS_SIZE]
shadow_vmcs12 array[int8, KVM_STATE_NESTED_VMX_VMCS_SIZE]
}

# format = KVM_STATE_NESTED_FORMAT_VMX
kvm_nested_state_vmx {
flags flags[kvm_nested_state_flags, int16]
format const[0, int16]
size bytesize[parent, int32]
hdr kvm_vmx_nested_state
data void
hdr kvm_vmx_nested_state_hdr
data kvm_vmx_nested_state_data
}

# SVM descriptions taken from https://elixir.bootlin.com/linux/latest/source/arch/x86/include/uapi/asm/kvm.h
# Size must be 120 bytes to start data at 128 bytes.
kvm_svm_nested_state_hdr {
vmcb_pa flags[kvm_guest_addrs, int64]
} [size[120]]

kvm_svm_nested_state_data {
vmcb12 array[int8, KVM_STATE_NESTED_SVM_VMCB_SIZE]
}

kvm_nested_state_arg {
state kvm_nested_state
current_vmcs array[int8, VMCS12_SIZE]
shadow_vmcs array[int8, VMCS12_SIZE]
# format = KVM_STATE_NESTED_FORMAT_SVM
kvm_nested_state_svm {
flags flags[kvm_nested_state_flags, int16]
format const[1, int16]
size bytesize[parent, int32]
hdr kvm_svm_nested_state_hdr
data kvm_svm_nested_state_data
}

kvm_vmx_nested_state {
vmxon_pa flags[kvm_guest_addrs, int64]
vmcs_pa flags[kvm_guest_addrs, int64]
smm_flags flags[kvm_nested_smm_flags, int16]
} [size[120]]
# See https://docs.kernel.org/virt/kvm/api.html#kvm-get-nested-state.
kvm_nested_state_arg [
vmx kvm_nested_state_vmx
svm kvm_nested_state_svm
] [varlen]

kvm_nested_state_flags = KVM_STATE_NESTED_GUEST_MODE, KVM_STATE_NESTED_RUN_PENDING
kvm_nested_state_flags = KVM_STATE_NESTED_GUEST_MODE, KVM_STATE_NESTED_RUN_PENDING, KVM_STATE_NESTED_EVMCS, KVM_STATE_NESTED_MTF_PENDING, KVM_STATE_NESTED_GIF_SET
kvm_nested_smm_flags = KVM_STATE_NESTED_SMM_GUEST_MODE, KVM_STATE_NESTED_SMM_VMXON
kvm_vmx_nested_state_hdr_flags = KVM_STATE_VMX_PREEMPTION_TIMER_DEADLINE

kvm_cpuid_entry {
func flags[kvm_cpu_function, int32]
Expand Down
7 changes: 6 additions & 1 deletion sys/linux/dev_kvm_amd64.txt.const
Original file line number Diff line number Diff line change
Expand Up @@ -154,10 +154,16 @@ KVM_SEV_SNP_PAGE_TYPE_UNMEASURED = 4
KVM_SEV_SNP_PAGE_TYPE_ZERO = 3
KVM_SMI = 44727
KVM_SREGS2_FLAGS_PDPTRS_VALID = 1
KVM_STATE_NESTED_EVMCS = 4
KVM_STATE_NESTED_GIF_SET = 256
KVM_STATE_NESTED_GUEST_MODE = 1
KVM_STATE_NESTED_MTF_PENDING = 8
KVM_STATE_NESTED_RUN_PENDING = 2
KVM_STATE_NESTED_SMM_GUEST_MODE = 1
KVM_STATE_NESTED_SMM_VMXON = 2
KVM_STATE_NESTED_SVM_VMCB_SIZE = 4096
KVM_STATE_NESTED_VMX_VMCS_SIZE = 4096
KVM_STATE_VMX_PREEMPTION_TIMER_DEADLINE = 1
KVM_TPR_ACCESS_REPORTING = 3223891602
KVM_TRANSLATE = 3222843013
KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK = 2
Expand Down Expand Up @@ -203,6 +209,5 @@ MCI_STATUS_PCC = 144115188075855872
MCI_STATUS_S = 72057594037927936
MCI_STATUS_UC = 2305843009213693952
MCI_STATUS_VAL = 9223372036854775808
VMCS12_SIZE = ???
__NR_ioctl = 386:54, amd64:16
__NR_openat = 386:295, amd64:257
Loading