summaryrefslogtreecommitdiffstats
path: root/sys/amd64
diff options
context:
space:
mode:
authorgrehan <grehan@FreeBSD.org>2017-03-25 05:09:03 +0000
committergrehan <grehan@FreeBSD.org>2017-03-25 05:09:03 +0000
commit8f0fb5d1b92fb55a894bab8f8bdae126d829c1f9 (patch)
treea0abe2e0d44e86196b6b191b6ed1b582822d7ac3 /sys/amd64
parent5f66a0a5cff9df60880fe6cc194f755e2cd96409 (diff)
downloadFreeBSD-src-8f0fb5d1b92fb55a894bab8f8bdae126d829c1f9.zip
FreeBSD-src-8f0fb5d1b92fb55a894bab8f8bdae126d829c1f9.tar.gz
MFC r315361 and r315364: Hide MONITORX/MWAITX from guests.
r315361 Add the AMD MONITORX/MWAITX feature definition introduced in Bulldozer/Ryzen CPUs. r315364 Hide the AMD MONITORX/MWAITX capability. Otherwise, recent Linux guests will use these instructions, resulting in #UD exceptions since bhyve doesn't implement MONITOR/MWAIT exits. This fixes boot-time hangs in recent Linux guests on Ryzen CPUs (and probably Bulldozer aka AMD FX as well).
Diffstat (limited to 'sys/amd64')
-rw-r--r--sys/amd64/vmm/x86.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/amd64/vmm/x86.c b/sys/amd64/vmm/x86.c
index 525e1d9..61d99d5 100644
--- a/sys/amd64/vmm/x86.c
+++ b/sys/amd64/vmm/x86.c
@@ -176,6 +176,9 @@ x86_emulate_cpuid(struct vm *vm, int vcpu_id,
/* Don't advertise the OS visible workaround feature */
regs[2] &= ~AMDID2_OSVW;
+ /* Hide mwaitx/monitorx capability from the guest */
+ regs[2] &= ~AMDID2_MWAITX;
+
/*
* Hide rdtscp/ia32_tsc_aux until we know how
* to deal with them.
OpenPOWER on IntegriCloud