KVM: x86: Modify struct kvm_nested_state to have explicit fields for data
authorLiran Alon <liran.alon@oracle.com>
Sun, 16 Jun 2019 12:03:10 +0000 (15:03 +0300)
committerPaolo Bonzini <pbonzini@redhat.com>
Wed, 19 Jun 2019 14:11:52 +0000 (16:11 +0200)
commit6ca00dfafda731d6eafdc164326e7336cdf42d74
tree46c8c5ab7c1dc411f1eedb069a2100814f153ff1
parent76e3bcdb61cad2c58ad88b2e4c70c69769026d37
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>
Documentation/virtual/kvm/api.txt
arch/x86/include/uapi/asm/kvm.h
arch/x86/kvm/vmx/nested.c
arch/x86/kvm/vmx/vmcs12.h
tools/arch/x86/include/uapi/asm/kvm.h
tools/testing/selftests/kvm/x86_64/vmx_set_nested_state_test.c