Re: [PATCH v2 6/6] KVM: nVMX: optimize prepare_vmcs02{,_full} for Enlightened VMCS case

From: Vitaly Kuznetsov
Date: Wed Jul 25 2018 - 11:19:33 EST


Paolo Bonzini <pbonzini@xxxxxxxxxx> writes:

> On 25/07/2018 16:13, Vitaly Kuznetsov wrote:
>> Paolo Bonzini <pbonzini@xxxxxxxxxx> writes:
>>
>>> On 25/07/2018 15:26, Vitaly Kuznetsov wrote:
>>>
>>>> The other place where we set dirty_vmcs12 is the newly introduced
>>>> vmx_set_nested_state() but I think I'm going to add support for eVMCS
>>>> there later and just return something like -ENOTSUPP for now. Too many
>>>> people work on nested simultaneously :-)
>>>
>>> Hmm, I think that means you have to put the clean fields in the
>>> vmx_nested struct. Then it's really easy in vmx_set_nested_state to
>>> clear all the clean bits. Touching memory in vmx_set_nested_state is...
>>> *puts on sunglasses* a touchy subject (see comment in kvm/queue's
>>> enter_vmx_non_root_mode).
>>>
>>
>> Not only clean fields, in case we can't touch memory in
>> vmx_set_nested_state I guess we'll need to cache the whole eVMCS, just
>> like we save cached_shadow_vmcs12. Anyway, let's eat the elephant one
>> bite at a time :-)
>
> You're right, but do we actually need to save the vmcs12 if eVMCS is
> active? The format would be different, but the size wouldn't.

I think we don't: vmcs12 can always be re-constructed from eVMCS and
vice versa. The size is not exactly the same as we have some stuff
which is missing in eVMCS but we know that eVMCS will always fit into
vmcs12 area.

--
Vitaly