On Mon, 2021-01-25 at 10:41 +0100, Vitaly Kuznetsov wrote: > Robert Hoo <robert.hu@xxxxxxxxxxxxxxx> writes: > We'll have to do something about Enlightened VMCS I believe. In > theory, > when eVMCS is in use, 'CPU_BASED_ACTIVATE_TERTIARY_CONTROLS' should > not > be exposed, e.g. when KVM hosts a EVMCS enabled guest the control > should > be filtered out. Something like (completely untested): > > diff --git a/arch/x86/kvm/vmx/evmcs.c b/arch/x86/kvm/vmx/evmcs.c > index 41f24661af04..c44ff05f3235 100644 > --- a/arch/x86/kvm/vmx/evmcs.c > +++ b/arch/x86/kvm/vmx/evmcs.c > @@ -299,6 +299,7 @@ const unsigned int nr_evmcs_1_fields = > ARRAY_SIZE(vmcs_field_to_evmcs_1); > > __init void evmcs_sanitize_exec_ctrls(struct vmcs_config *vmcs_conf) > { > + vmcs_conf->cpu_based_exec_ctrl &= > ~EVMCS1_UNSUPPORTED_EXEC_CTRL; > vmcs_conf->pin_based_exec_ctrl &= > ~EVMCS1_UNSUPPORTED_PINCTRL; > vmcs_conf->cpu_based_2nd_exec_ctrl &= > ~EVMCS1_UNSUPPORTED_2NDEXEC; > > diff --git a/arch/x86/kvm/vmx/evmcs.h b/arch/x86/kvm/vmx/evmcs.h > index bd41d9462355..bf2c5e7a4a8f 100644 > --- a/arch/x86/kvm/vmx/evmcs.h > +++ b/arch/x86/kvm/vmx/evmcs.h > @@ -50,6 +50,7 @@ DECLARE_STATIC_KEY_FALSE(enable_evmcs); > */ > #define EVMCS1_UNSUPPORTED_PINCTRL (PIN_BASED_POSTED_INTR | \ > PIN_BASED_VMX_PREEMPTION_TIMER) > +#define EVMCS1_UNSUPPORTED_EXEC_CTRL > (CPU_BASED_ACTIVATE_TERTIARY_CONTROLS) > #define > EVMCS1_UNSUPPORTED_2NDEXEC \ > (SECONDARY_EXEC_VIRTUAL_INTR_DELIVERY > | \ > SECONDARY_EXEC_VIRTUALIZE_APIC_ACCESSES > | \ > > should do the job I think. > Hi Vitaly, I'm going to incorporate above patch in my next version. Shall I have it your signed-off-by? [setup_vmcs_config: filter out tertiary control when using eVMCS] signed-off-by: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx>