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@xxxxxxxxxx> > Signed-off-by: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> > --- > 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@xxxxxxxxxx> Best regards, Maxim Levitsky <mlevitsk@xxxxxxxxxx>