This patch improves the KVM_GET/SET_NESTED_STATE structs by detailing the format of VMX nested state in a struct. The VMX nested state is accessible through struct kvm_vmx_nested_state though, to avoid changing the size of the structs, it has to be accessed as "vmx.data[0]" rather than just "vmx.data".
Also, the values of the "format" field are defined as macros. This patch should be sent to Linus very shortly. Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> --- linux-headers/asm-x86/kvm.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/linux-headers/asm-x86/kvm.h b/linux-headers/asm-x86/kvm.h index 7a0e64ccd6..06b8727a3b 100644 --- a/linux-headers/asm-x86/kvm.h +++ b/linux-headers/asm-x86/kvm.h @@ -383,6 +383,9 @@ struct kvm_sync_regs { #define KVM_X86_QUIRK_LAPIC_MMIO_HOLE (1 << 2) #define KVM_X86_QUIRK_OUT_7E_INC_RIP (1 << 3) +#define KVM_STATE_NESTED_FORMAT_VMX 0 +#define KVM_STATE_NESTED_FORMAT_SVM 1 + #define KVM_STATE_NESTED_GUEST_MODE 0x00000001 #define KVM_STATE_NESTED_RUN_PENDING 0x00000002 #define KVM_STATE_NESTED_EVMCS 0x00000004 @@ -390,6 +393,11 @@ struct kvm_sync_regs { #define KVM_STATE_NESTED_SMM_GUEST_MODE 0x00000001 #define KVM_STATE_NESTED_SMM_VMXON 0x00000002 +struct kvm_vmx_nested_state_data { + __u8 vmcs12[0x1000]; + __u8 shadow_vmcs12[0x1000]; +}; + struct kvm_vmx_nested_state { __u64 vmxon_pa; __u64 vmcs_pa; @@ -397,6 +405,9 @@ struct kvm_vmx_nested_state { struct { __u16 flags; } smm; + + __u8 pad[120 - 18]; + struct kvm_vmx_nested_state_data data[0]; }; /* for KVM_CAP_NESTED_STATE */ -- 2.21.0