Message ID | 20220708144223.610080-19-vkuznets@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | KVM: VMX: Support updated eVMCSv1 revision + use vmcs_config for L1 VMX MSRs | expand |
On Fri, 2022-07-08 at 16:42 +0200, Vitaly Kuznetsov wrote: > As a preparation to reusing the result of setup_vmcs_config() in > nested VMX MSR setup, add the CPU based VM execution controls which KVM > doesn't use but supports for nVMX to KVM_OPT_VMX_CPU_BASED_VM_EXEC_CONTROL > and filter them out in vmx_exec_control(). > > No functional change intended. > > Reviewed-by: Jim Mattson <jmattson@google.com> > Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com> > --- > arch/x86/kvm/vmx/vmx.c | 6 ++++++ > arch/x86/kvm/vmx/vmx.h | 6 +++++- > 2 files changed, 11 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c > index 2fb89bdcbbd8..9771c771c8f5 100644 > --- a/arch/x86/kvm/vmx/vmx.c > +++ b/arch/x86/kvm/vmx/vmx.c > @@ -4240,6 +4240,12 @@ static u32 vmx_exec_control(struct vcpu_vmx *vmx) > { > u32 exec_control = vmcs_config.cpu_based_exec_ctrl; > > + /* Not used by KVM but supported for nesting. */ > + exec_control &= ~(CPU_BASED_RDTSC_EXITING | > + CPU_BASED_USE_IO_BITMAPS | > + CPU_BASED_MONITOR_TRAP_FLAG | > + CPU_BASED_PAUSE_EXITING); > + > /* INTR_WINDOW_EXITING and NMI_WINDOW_EXITING are toggled dynamically */ > exec_control &= ~(CPU_BASED_INTR_WINDOW_EXITING | > CPU_BASED_NMI_WINDOW_EXITING); > diff --git a/arch/x86/kvm/vmx/vmx.h b/arch/x86/kvm/vmx/vmx.h > index e9c392398f1b..758f80c41beb 100644 > --- a/arch/x86/kvm/vmx/vmx.h > +++ b/arch/x86/kvm/vmx/vmx.h > @@ -539,9 +539,13 @@ static inline u8 vmx_get_rvi(void) > #endif > > #define KVM_OPT_VMX_CPU_BASED_VM_EXEC_CONTROL \ > - (CPU_BASED_TPR_SHADOW | \ > + (CPU_BASED_RDTSC_EXITING | \ > + CPU_BASED_TPR_SHADOW | \ > + CPU_BASED_USE_IO_BITMAPS | \ > + CPU_BASED_MONITOR_TRAP_FLAG | \ > CPU_BASED_USE_MSR_BITMAPS | \ > CPU_BASED_NMI_WINDOW_EXITING | \ > + CPU_BASED_PAUSE_EXITING | \ > CPU_BASED_ACTIVATE_SECONDARY_CONTROLS | \ > CPU_BASED_ACTIVATE_TERTIARY_CONTROLS) > Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com> Best regards, Maxim Levitsky <mlevitsk@redhat.com>
diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c index 2fb89bdcbbd8..9771c771c8f5 100644 --- a/arch/x86/kvm/vmx/vmx.c +++ b/arch/x86/kvm/vmx/vmx.c @@ -4240,6 +4240,12 @@ static u32 vmx_exec_control(struct vcpu_vmx *vmx) { u32 exec_control = vmcs_config.cpu_based_exec_ctrl; + /* Not used by KVM but supported for nesting. */ + exec_control &= ~(CPU_BASED_RDTSC_EXITING | + CPU_BASED_USE_IO_BITMAPS | + CPU_BASED_MONITOR_TRAP_FLAG | + CPU_BASED_PAUSE_EXITING); + /* INTR_WINDOW_EXITING and NMI_WINDOW_EXITING are toggled dynamically */ exec_control &= ~(CPU_BASED_INTR_WINDOW_EXITING | CPU_BASED_NMI_WINDOW_EXITING); diff --git a/arch/x86/kvm/vmx/vmx.h b/arch/x86/kvm/vmx/vmx.h index e9c392398f1b..758f80c41beb 100644 --- a/arch/x86/kvm/vmx/vmx.h +++ b/arch/x86/kvm/vmx/vmx.h @@ -539,9 +539,13 @@ static inline u8 vmx_get_rvi(void) #endif #define KVM_OPT_VMX_CPU_BASED_VM_EXEC_CONTROL \ - (CPU_BASED_TPR_SHADOW | \ + (CPU_BASED_RDTSC_EXITING | \ + CPU_BASED_TPR_SHADOW | \ + CPU_BASED_USE_IO_BITMAPS | \ + CPU_BASED_MONITOR_TRAP_FLAG | \ CPU_BASED_USE_MSR_BITMAPS | \ CPU_BASED_NMI_WINDOW_EXITING | \ + CPU_BASED_PAUSE_EXITING | \ CPU_BASED_ACTIVATE_SECONDARY_CONTROLS | \ CPU_BASED_ACTIVATE_TERTIARY_CONTROLS)