x86: Clear incorrectly forced X86_FEATURE_LAHF_LM flag

Due to an erratum with certain AMD Athlon 64 processors, the
BIOS may need to force enable the LAHF_LM capability.
Unfortunately, in at least one case, the BIOS does this even
for processors that do not support the functionality.

Add a specific check that will clear the feature bit for
processors known not to support the LAHF/SAHF instructions.

Signed-off-by: Kevin Winchester <kjwinchester@gmail.com>
Acked-by: Borislav Petkov <petkovbb@googlemail.com>
LKML-Reference: <4A80A5AD.2000209@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>

authored by Kevin Winchester and committed by Ingo Molnar fbd8b181 0d01f314

+7
+7
arch/x86/kernel/cpu/amd.c
··· 400 400 level = cpuid_eax(1); 401 401 if((level >= 0x0f48 && level < 0x0f50) || level >= 0x0f58) 402 402 set_cpu_cap(c, X86_FEATURE_REP_GOOD); 403 + 404 + /* 405 + * Some BIOSes incorrectly force this feature, but only K8 406 + * revision D (model = 0x14) and later actually support it. 407 + */ 408 + if (c->x86_model < 0x14) 409 + clear_cpu_cap(c, X86_FEATURE_LAHF_LM); 403 410 } 404 411 if (c->x86 == 0x10 || c->x86 == 0x11) 405 412 set_cpu_cap(c, X86_FEATURE_REP_GOOD);