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

Reply via email to