Re: [PATCH v2] KVM: x86: Modify struct kvm_nested_state to have explicit fields for data

From: Liran Alon
Date: Tue Jun 18 2019 - 18:41:52 EST




> On 18 Jun 2019, at 19:24, Paolo Bonzini <pbonzini@xxxxxxxxxx> wrote:
>
> From: Liran Alon <liran.alon@xxxxxxxxxx>
>
> 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@xxxxxxxxxx>
> [Remove SVM stubs, add KVM_STATE_NESTED_VMX_VMCS12_SIZE. - Paolo]

1) Why should we remove SVM stubs? I think it makes the interface intention more clear.
Do you see any disadvantage of having them?

2) What is the advantage of defining a separate KVM_STATE_NESTED_VMX_VMCS12_SIZE
rather than just moving VMCS12_SIZE to userspace header?

-Liran

> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx>
> ---