On Wed, Nov 23, 2016 at 3:44 AM, Paolo Bonzini <pbonzini@xxxxxxxxxx> wrote: > On 23/11/2016 02:14, David Matlack wrote: >> switch (msr_index) { >> case MSR_IA32_VMX_BASIC: >> + return vmx_restore_vmx_basic(vmx, data); >> + case MSR_IA32_VMX_TRUE_PINBASED_CTLS: >> + case MSR_IA32_VMX_PINBASED_CTLS: >> + case MSR_IA32_VMX_TRUE_PROCBASED_CTLS: >> + case MSR_IA32_VMX_PROCBASED_CTLS: >> + case MSR_IA32_VMX_TRUE_EXIT_CTLS: >> + case MSR_IA32_VMX_EXIT_CTLS: >> + case MSR_IA32_VMX_TRUE_ENTRY_CTLS: >> + case MSR_IA32_VMX_ENTRY_CTLS: > > PINBASED_CTLS, PROCBASED_CTLS, EXIT_CTLS and ENTRY_CTLS can be derived > from their "true" counterparts, so I think it's better to remove the > "non-true" ones from struct nested_vmx (and/or add the "true" ones when > missing) and make them entirely computed. But it can be done on top. Good point. And that would mean userspace does not need to restore the non-true MSRs, right? KVM does not emulate MSR_IA32_VMX_BASIC[55]=0, and will probably never want to. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html