Message ID | 20220629150625.238286-29-vkuznets@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | KVM: VMX: Support TscScaling and EnclsExitingBitmap with eVMCS + use vmcs_config for L1 VMX MSRs | expand |
On Wed, Jun 29, 2022 at 8:07 AM Vitaly Kuznetsov <vkuznets@redhat.com> wrote: > > vmcs_config has cased host MSR_IA32_VMX_MISC value, use it for setting > up nested MSR_IA32_VMX_MISC in nested_vmx_setup_ctls_msrs() and avoid the > redundant rdmsr(). > > No (real) functional change intended. Just imaginary functional change? :-) > > Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com> Reviewed-by: Jim Mattson <jmattson@google.com>
Jim Mattson <jmattson@google.com> writes: > On Wed, Jun 29, 2022 at 8:07 AM Vitaly Kuznetsov <vkuznets@redhat.com> wrote: >> >> vmcs_config has cased host MSR_IA32_VMX_MISC value, use it for setting >> up nested MSR_IA32_VMX_MISC in nested_vmx_setup_ctls_msrs() and avoid the >> redundant rdmsr(). >> >> No (real) functional change intended. > > Just imaginary functional change? :-) > Well, yea) The assumption here is that MSR_IA32_VMX_MISC's value doesn't change underneath KVM, caching doesn't change anything then. It is, of course, possible that when KVM runs as a nested hypervisor on top of something else, it will observe different values. I truly hope this is purely imaginary :-) >> >> Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com> > Reviewed-by: Jim Mattson <jmattson@google.com> > Thanks!
On Thu, Jun 30, 2022 at 12:36 AM Vitaly Kuznetsov <vkuznets@redhat.com> wrote: > > Jim Mattson <jmattson@google.com> writes: > > > On Wed, Jun 29, 2022 at 8:07 AM Vitaly Kuznetsov <vkuznets@redhat.com> wrote: > >> > >> vmcs_config has cased host MSR_IA32_VMX_MISC value, use it for setting > >> up nested MSR_IA32_VMX_MISC in nested_vmx_setup_ctls_msrs() and avoid the > >> redundant rdmsr(). > >> > >> No (real) functional change intended. > > > > Just imaginary functional change? :-) > > > > Well, yea) The assumption here is that MSR_IA32_VMX_MISC's value doesn't > change underneath KVM, caching doesn't change anything then. It is, of > course, possible that when KVM runs as a nested hypervisor on top of > something else, it will observe different values. I truly hope this is > purely imaginary :-) It is also theoretically possible that a late-loadable microcode patch could change the value of the MSR, but Intel wouldn't do that to us, would they?
diff --git a/arch/x86/kvm/vmx/nested.c b/arch/x86/kvm/vmx/nested.c index 8af56be48a43..8b63642157a5 100644 --- a/arch/x86/kvm/vmx/nested.c +++ b/arch/x86/kvm/vmx/nested.c @@ -6754,10 +6754,7 @@ void nested_vmx_setup_ctls_msrs(struct vmcs_config *vmcs_conf, u32 ept_caps) msrs->secondary_ctls_high |= SECONDARY_EXEC_ENCLS_EXITING; /* miscellaneous data */ - rdmsr(MSR_IA32_VMX_MISC, - msrs->misc_low, - msrs->misc_high); - msrs->misc_low &= VMX_MISC_SAVE_EFER_LMA; + msrs->misc_low = (u32)vmcs_conf->misc & VMX_MISC_SAVE_EFER_LMA; msrs->misc_low |= MSR_IA32_VMX_MISC_VMWRITE_SHADOW_RO_FIELDS | VMX_MISC_EMULATED_PREEMPTION_TIMER_RATE |
vmcs_config has cased host MSR_IA32_VMX_MISC value, use it for setting up nested MSR_IA32_VMX_MISC in nested_vmx_setup_ctls_msrs() and avoid the redundant rdmsr(). No (real) functional change intended. Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com> --- arch/x86/kvm/vmx/nested.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-)