• Vitaly Kuznetsov's avatar
    KVM: nVMX: Invert 'unsupported by eVMCSv1' check · 70b31e50
    Vitaly Kuznetsov authored
    When a new feature gets implemented in KVM, EVMCS1_UNSUPPORTED_* defines
    need to be adjusted to avoid the situation when the feature is exposed
    to the guest but there's no corresponding eVMCS field[s] for it. This
    is not obvious and fragile. Invert 'unsupported by eVMCSv1' check and
    make it 'supported by eVMCSv1' instead, this way it's much harder to
    make a mistake. New features will get added to EVMCS1_SUPPORTED_*
    defines when the corresponding fields are added to eVMCS definition.
    
    No functional change intended. EVMCS1_SUPPORTED_* defines are composed
    by taking KVM_{REQUIRED,OPTIONAL}_VMX_ defines and filtering out what
    was previously known as EVMCS1_UNSUPPORTED_*.
    
    From all the controls, SECONDARY_EXEC_TSC_SCALING requires special
    handling as it's actually present in eVMCSv1 definition but is not
    currently supported for Hyper-V-on-KVM, just for KVM-on-Hyper-V. As
    evmcs_supported_ctrls will be used for both scenarios, just add it
    there instead of EVMCS1_SUPPORTED_2NDEXEC.
    Signed-off-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
    Message-Id: <20221104144708.435865-3-vkuznets@redhat.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    70b31e50
hyperv.c 20.1 KB