Vineeth Pillai <viremana@xxxxxxxxxxxxxxxxxxx> writes: > Detect nested features exposed by Hyper-V if SVM is enabled. > > Signed-off-by: Vineeth Pillai <viremana@xxxxxxxxxxxxxxxxxxx> > --- > arch/x86/kernel/cpu/mshyperv.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c > index 3546d3e21787..4d364acfe95d 100644 > --- a/arch/x86/kernel/cpu/mshyperv.c > +++ b/arch/x86/kernel/cpu/mshyperv.c > @@ -325,9 +325,17 @@ static void __init ms_hyperv_init_platform(void) > ms_hyperv.isolation_config_a, ms_hyperv.isolation_config_b); > } > > - if (ms_hyperv.hints & HV_X64_ENLIGHTENED_VMCS_RECOMMENDED) { > + /* > + * AMD does not need enlightened VMCS as VMCB is already a > + * datastructure in memory. Well, VMCS is also a structure in memory, isn't it? It's just that we don't have a 'clean field' concept for it and we can't use normal memory accesses. > We need to get the nested > + * features if SVM is enabled. > + */ > + if (boot_cpu_has(X86_FEATURE_SVM) || > + ms_hyperv.hints & HV_X64_ENLIGHTENED_VMCS_RECOMMENDED) { Do I understand correctly that we can just look at CPUID.0x40000000.EAX and in case it is >= 0x4000000A we can read HYPERV_CPUID_NESTED_FEATURES leaf? I'd suggest we do that intead then. > ms_hyperv.nested_features = > cpuid_eax(HYPERV_CPUID_NESTED_FEATURES); > + pr_info("Hyper-V nested_features: 0x%x\n", > + ms_hyperv.nested_features); > } > > /* -- Vitaly