lkml.org 
[lkml]   [2022]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH v3 16/25] KVM: VMX: Move CPU_BASED_CR8_{LOAD,STORE}_EXITING filtering out of setup_vmcs_config()
    From
    Date
    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, move CPU_BASED_CR8_{LOAD,STORE}_EXITING filtering
    > to 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 | 13 ++++++-------
    >  1 file changed, 6 insertions(+), 7 deletions(-)
    >
    > diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c
    > index 93ca9ff8e641..d7170990f469 100644
    > --- a/arch/x86/kvm/vmx/vmx.c
    > +++ b/arch/x86/kvm/vmx/vmx.c
    > @@ -2479,11 +2479,6 @@ static __init int setup_vmcs_config(struct vmcs_config *vmcs_conf,
    >                                 MSR_IA32_VMX_PROCBASED_CTLS,
    >                                 &_cpu_based_exec_control) < 0)
    >                 return -EIO;
    > -#ifdef CONFIG_X86_64
    > -       if (_cpu_based_exec_control & CPU_BASED_TPR_SHADOW)
    > -               _cpu_based_exec_control &= ~CPU_BASED_CR8_LOAD_EXITING &
    > -                                          ~CPU_BASED_CR8_STORE_EXITING;
    > -#endif
    >         if (_cpu_based_exec_control & CPU_BASED_ACTIVATE_SECONDARY_CONTROLS) {
    >                 if (adjust_vmx_controls(KVM_REQ_VMX_SECONDARY_VM_EXEC_CONTROL,
    >                                         KVM_OPT_VMX_SECONDARY_VM_EXEC_CONTROL,
    > @@ -4248,13 +4243,17 @@ static u32 vmx_exec_control(struct vcpu_vmx *vmx)
    >         if (vmx->vcpu.arch.switch_db_regs & KVM_DEBUGREG_WONT_EXIT)
    >                 exec_control &= ~CPU_BASED_MOV_DR_EXITING;
    >  
    > -       if (!cpu_need_tpr_shadow(&vmx->vcpu)) {
    > +       if (!cpu_need_tpr_shadow(&vmx->vcpu))
    >                 exec_control &= ~CPU_BASED_TPR_SHADOW;
    > +
    >  #ifdef CONFIG_X86_64
    > +       if (exec_control & CPU_BASED_TPR_SHADOW)
    > +               exec_control &= ~(CPU_BASED_CR8_LOAD_EXITING |
    > +                                 CPU_BASED_CR8_STORE_EXITING);
    > +       else
    >                 exec_control |= CPU_BASED_CR8_STORE_EXITING |
    >                                 CPU_BASED_CR8_LOAD_EXITING;
    >  #endif
    > -       }
    >         if (!enable_ept)
    >                 exec_control |= CPU_BASED_CR3_STORE_EXITING |
    >                                 CPU_BASED_CR3_LOAD_EXITING  |

    Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>

    Best regards,
    Maxim Levitsky


    \
     
     \ /
      Last update: 2022-07-12 14:00    [W:4.100 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site