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
This commit is contained in:
Corvin Köhne 2021-04-15 13:49:19 +10:00 committed by Peter Grehan
parent 14d0cd7225
commit 17d214c2ca

View File

@ -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;