On Wed, 2 May 2018, Jörg Otte wrote: > 2018-05-02 11:02 GMT+02:00 Thomas Gleixner : > > Ok, I think I know what's going wrong in that steaming pile of horrors of > > CPUID detection. I need to analyze it down to the roots, but if you have > > cycles, can you please test the patch below? > > > > It's a hack and even if it fixes the problem I'm going to do it differently. > > > > Thanks, > > > > tglx > > > > 8<------------------- > > --- a/arch/x86/kernel/cpu/common.c > > +++ b/arch/x86/kernel/cpu/common.c > > @@ -848,6 +848,11 @@ void get_cpu_cap(struct cpuinfo_x86 *c) > > c->x86_power = edx; > > } > > > > + if (c->extended_cpuid_level >= 0x80000008) { > > + cpuid(0x80000008, &eax, &ebx, &ecx, &edx); > > + c->x86_capability[CPUID_8000_0008_EBX] = ebx; > > + } > > + > > if (c->extended_cpuid_level >= 0x8000000a) > > c->x86_capability[CPUID_8000_000A_EDX] = cpuid_edx(0x8000000a); > > > > @@ -871,7 +876,6 @@ static void get_cpu_address_sizes(struct > > > > c->x86_virt_bits = (eax >> 8) & 0xff; > > c->x86_phys_bits = eax & 0xff; > > - c->x86_capability[CPUID_8000_0008_EBX] = ebx; > > } > > #ifdef CONFIG_X86_32 > > else if (cpu_has(c, X86_FEATURE_PAE) || cpu_has(c, X86_FEATURE_PSE36)) > > > > OK, that patch works for me! Thanks for confirming. Still need to find a way which is less fragile, but that's probably too much of churn for rc4.... At least I know exactly what's happening, so I can write a better changelog. Thanks for testing! tglx