Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fbd8b181 authored by Kevin Winchester's avatar Kevin Winchester Committed by Ingo Molnar
Browse files

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: default avatarKevin Winchester <kjwinchester@gmail.com>
Acked-by: default avatarBorislav Petkov <petkovbb@googlemail.com>
LKML-Reference: <4A80A5AD.2000209@gmail.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 0d01f314
Loading
Loading
Loading
Loading
+7 −0
Original line number Original line Diff line number Diff line
@@ -400,6 +400,13 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c)
		level = cpuid_eax(1);
		level = cpuid_eax(1);
		if((level >= 0x0f48 && level < 0x0f50) || level >= 0x0f58)
		if((level >= 0x0f48 && level < 0x0f50) || level >= 0x0f58)
			set_cpu_cap(c, X86_FEATURE_REP_GOOD);
			set_cpu_cap(c, X86_FEATURE_REP_GOOD);

		/*
		 * Some BIOSes incorrectly force this feature, but only K8
		 * revision D (model = 0x14) and later actually support it.
		 */
		if (c->x86_model < 0x14)
			clear_cpu_cap(c, X86_FEATURE_LAHF_LM);
	}
	}
	if (c->x86 == 0x10 || c->x86 == 0x11)
	if (c->x86 == 0x10 || c->x86 == 0x11)
		set_cpu_cap(c, X86_FEATURE_REP_GOOD);
		set_cpu_cap(c, X86_FEATURE_REP_GOOD);