lkml.org 
[lkml]   [2022]   [Aug]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v5 14/26] KVM: VMX: Tweak the special handling of SECONDARY_EXEC_ENCLS_EXITING in setup_vmcs_config()
    Date
    SECONDARY_EXEC_ENCLS_EXITING is the only control which is conditionally
    added to the 'optional' checklist in setup_vmcs_config() but the special
    case can be avoided by always checking for its presence first and filtering
    out the result later.

    Note: the situation when SECONDARY_EXEC_ENCLS_EXITING is present but
    cpu_has_sgx() is false is possible when SGX is "soft-disabled", e.g. if
    software writes MCE control MSRs or there's an uncorrectable #MC.

    Reviewed-by: Jim Mattson <jmattson@google.com>
    Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    ---
    arch/x86/kvm/vmx/vmx.c | 9 ++++++---
    1 file changed, 6 insertions(+), 3 deletions(-)

    diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c
    index 554326651372..2323783024b7 100644
    --- a/arch/x86/kvm/vmx/vmx.c
    +++ b/arch/x86/kvm/vmx/vmx.c
    @@ -2607,9 +2607,9 @@ static __init int setup_vmcs_config(struct vmcs_config *vmcs_conf,
    SECONDARY_EXEC_PT_CONCEAL_VMX |
    SECONDARY_EXEC_ENABLE_VMFUNC |
    SECONDARY_EXEC_BUS_LOCK_DETECTION |
    - SECONDARY_EXEC_NOTIFY_VM_EXITING;
    - if (cpu_has_sgx())
    - opt2 |= SECONDARY_EXEC_ENCLS_EXITING;
    + SECONDARY_EXEC_NOTIFY_VM_EXITING |
    + SECONDARY_EXEC_ENCLS_EXITING;
    +
    if (adjust_vmx_controls(min2, opt2,
    MSR_IA32_VMX_PROCBASED_CTLS2,
    &_cpu_based_2nd_exec_control) < 0)
    @@ -2656,6 +2656,9 @@ static __init int setup_vmcs_config(struct vmcs_config *vmcs_conf,
    vmx_cap->vpid = 0;
    }

    + if (!cpu_has_sgx())
    + _cpu_based_2nd_exec_control &= ~SECONDARY_EXEC_ENCLS_EXITING;
    +
    if (_cpu_based_exec_control & CPU_BASED_ACTIVATE_TERTIARY_CONTROLS) {
    u64 opt3 = TERTIARY_EXEC_IPI_VIRT;

    --
    2.35.3
    \
     
     \ /
      Last update: 2022-08-02 18:11    [W:3.121 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site