mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] x86/kernel/cpu/amd.c: don't apply the lahf_lm workaround in a hypervisor
@ 2017-07-12  7:19 Mikulas Patocka
  2017-07-12 13:47 ` Borislav Petkov
  0 siblings, 1 reply; 6+ messages in thread
From: Mikulas Patocka @ 2017-07-12  7:19 UTC (permalink / raw)
  To: Thomas Gleixner, Ingo Molnar, H. Peter Anvin; +Cc: x86, linux-kernel

When I start a virtual machine, kvm complains about accesses to an unknown
MSR ("vcpu0 unhandled rdmsr: 0xc001100d"). This is caused by the code in
init_amd_k8 that tries to work around a BIOS bug that incorrectly sets
lahf_lm.

This patch disables this workaround when running in a hypervisor.

Note that the processors for which this erratum applies do not support
virtualization at all, so if we are running in a hypervisor, we can be
sure that the workaronud doesn't apply.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>

---
 arch/x86/kernel/cpu/amd.c |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

Index: linux-2.6/arch/x86/kernel/cpu/amd.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/cpu/amd.c
+++ linux-2.6/arch/x86/kernel/cpu/amd.c
@@ -627,8 +627,12 @@ static void init_amd_k8(struct cpuinfo_x
 	 * Some BIOSes incorrectly force this feature, but only K8 revision D
 	 * (model = 0x14) and later actually support it.
 	 * (AMD Erratum #110, docId: 25759).
+	 *
+	 * Don't apply this workaround in a virtual machine because kvm
+	 * complains about reads from an unknown MSR.
 	 */
-	if (c->x86_model < 0x14 && cpu_has(c, X86_FEATURE_LAHF_LM)) {
+	if (c->x86_model < 0x14 && cpu_has(c, X86_FEATURE_LAHF_LM) &&
+	    !boot_cpu_has(X86_FEATURE_HYPERVISOR)) {
 		clear_cpu_cap(c, X86_FEATURE_LAHF_LM);
 		if (!rdmsrl_amd_safe(0xc001100d, &value)) {
 			value &= ~BIT_64(32);

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2017-07-21 12:29 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-07-12  7:19 [PATCH] x86/kernel/cpu/amd.c: don't apply the lahf_lm workaround in a hypervisor Mikulas Patocka
2017-07-12 13:47 ` Borislav Petkov
2017-07-13  2:27   ` Mikulas Patocka
2017-07-13  6:32     ` Borislav Petkov
2017-07-21 11:34       ` Mikulas Patocka
2017-07-21 12:28         ` Borislav Petkov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®