diff options
author | Corvin Köhne <C.Koehne@beckhoff.com> | 2021-04-15 03:49:19 +0000 |
---|---|---|
committer | Peter Grehan <grehan@FreeBSD.org> | 2021-04-15 03:49:19 +0000 |
commit | 17d214c2ca9f110db3fa2a10d6b448d624e87774 (patch) | |
tree | fd1f5e8b6b8b4c9f6c55c0e6bf5da3ecea410a2f /usr.sbin | |
parent | 14d0cd7225e250015eb6d9c79a7eb4e944211b23 (diff) | |
download | src-17d214c2ca9f110db3fa2a10d6b448d624e87774.tar.gz src-17d214c2ca9f110db3fa2a10d6b448d624e87774.zip |
bhyve: implement rdmsr for MSR_IA32_FEATURE_CONTROL
Without the -w option, Windows guests crash on boot. This is caused by a rdmsr
of MSR_IA32_FEATURE_CONTROL. Windows checks this MSR to determine enabled VMX
features. This MSR isn't emulated in bhyve, so a #GP exception is injected
which causes Windows to crash.
Fix by returning a rdmsr of MSR_IA32_FEATURE_CONTROL with Lock Bit set and
VMX disabled to informWindows that VMX isn't available.
Reviewed by: jhb, grehan (bhyve)
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D29665
Diffstat (limited to 'usr.sbin')
-rw-r--r-- | usr.sbin/bhyve/xmsr.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/usr.sbin/bhyve/xmsr.c b/usr.sbin/bhyve/xmsr.c index 0b87821836b7..1a7f98ee222a 100644 --- a/usr.sbin/bhyve/xmsr.c +++ b/usr.sbin/bhyve/xmsr.c @@ -124,6 +124,14 @@ emulate_rdmsr(struct vmctx *ctx, int vcpu, uint32_t num, uint64_t *val) */ *val = 0x000a1003; break; + case MSR_IA32_FEATURE_CONTROL: + /* + * Windows guests check this MSR. + * Set the lock bit to avoid writes + * to this MSR. + */ + *val = IA32_FEATURE_CONTROL_LOCK; + break; default: error = -1; break; |