On Tue, Sep 25, 2018 at 06:48:54PM +0200, Borislav Petkov wrote: > > + eax = cpuid_eax(SGX_CPUID); > > + > > + if (eax & _X86_FEATURE_SGX1) > > + set_cpu_cap(c, X86_FEATURE_SGX1); > > + > > + if (eax & _X86_FEATURE_SGX2) > > + set_cpu_cap(c, X86_FEATURE_SGX2); > > + > > + if (eax & _X86_FEATURE_SGX_ENCLV) > > + set_cpu_cap(c, X86_FEATURE_SGX_ENCLV); > > + > > + if (eax & _X86_FEATURE_SGX_ENCLS_C) > > + set_cpu_cap(c, X86_FEATURE_SGX_ENCLS_C); > > > Look at arch/x86/kernel/cpu/scattered.c for how to do this properly. Thank you. I guess I understand what you want me to do i.e. + { X86_FEATURE_SGX1, CPUID_EAX, 0, 0x00000012, 0 }, + { X86_FEATURE_SGX2, CPUID_EAX, 1, 0x00000012, 0 }, + { X86_FEATURE_ENCLV, CPUID_EAX, 5, 0x00000012, 0 }, + { X86_FEATURE_ENCLS_C, CPUID_EAX, 6, 0x00000012, 0 }, What puzzles me is that I cannot find any call site for get_scattered_cpuid_leaf(): $ git grep get_scattered arch/x86/kernel/cpu/cpu.h:extern u32 get_scattered_cpuid_leaf(unsigned int level, arch/x86/kernel/cpu/scattered.c:u32 get_scattered_cpuid_leaf(unsigned int level, unsigned int sub_leaf, arch/x86/kernel/cpu/scattered.c:EXPORT_SYMBOL_GPL(get_scattered_cpuid_leaf); /Jarkko