summaryrefslogtreecommitdiffstats
path: root/arch/x86/kvm/vmx/vmcs12.h
diff options
context:
space:
mode:
authorLiran Alon <liran.alon@oracle.com>2019-06-16 15:03:10 +0300
committerPaolo Bonzini <pbonzini@redhat.com>2019-06-19 16:11:52 +0200
commit6ca00dfafda731d6eafdc164326e7336cdf42d74 (patch)
tree46c8c5ab7c1dc411f1eedb069a2100814f153ff1 /arch/x86/kvm/vmx/vmcs12.h
parent76e3bcdb61cad2c58ad88b2e4c70c69769026d37 (diff)
downloadlinux-stable-6ca00dfafda731d6eafdc164326e7336cdf42d74.tar.gz
linux-stable-6ca00dfafda731d6eafdc164326e7336cdf42d74.tar.bz2
linux-stable-6ca00dfafda731d6eafdc164326e7336cdf42d74.zip
KVM: x86: Modify struct kvm_nested_state to have explicit fields for data
Improve the KVM_{GET,SET}_NESTED_STATE structs by detailing the format of VMX nested state data in a struct. In order to avoid changing the ioctl values of KVM_{GET,SET}_NESTED_STATE, there is a need to preserve sizeof(struct kvm_nested_state). This is done by defining the data struct as "data.vmx[0]". It was the most elegant way I found to preserve struct size while still keeping struct readable and easy to maintain. It does have a misfortunate side-effect that now it has to be accessed as "data.vmx[0]" rather than just "data.vmx". Because we are already modifying these structs, I also modified the following: * Define the "format" field values as macros. * Rename vmcs_pa to vmcs12_pa for better readability. Signed-off-by: Liran Alon <liran.alon@oracle.com> [Remove SVM stubs, add KVM_STATE_NESTED_VMX_VMCS12_SIZE. - Paolo] Reviewed-by: Liran Alon <liran.alon@oracle.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'arch/x86/kvm/vmx/vmcs12.h')
-rw-r--r--arch/x86/kvm/vmx/vmcs12.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/x86/kvm/vmx/vmcs12.h b/arch/x86/kvm/vmx/vmcs12.h
index 3a742428ad17..337718fc8a36 100644
--- a/arch/x86/kvm/vmx/vmcs12.h
+++ b/arch/x86/kvm/vmx/vmcs12.h
@@ -201,9 +201,10 @@ struct __packed vmcs12 {
/*
* VMCS12_SIZE is the number of bytes L1 should allocate for the VMXON region
* and any VMCS region. Although only sizeof(struct vmcs12) are used by the
- * current implementation, 4K are reserved to avoid future complications.
+ * current implementation, 4K are reserved to avoid future complications and
+ * to preserve userspace ABI.
*/
-#define VMCS12_SIZE 0x1000
+#define VMCS12_SIZE KVM_STATE_NESTED_VMX_VMCS_SIZE
/*
* VMCS12_MAX_FIELD_INDEX is the highest index value used in any