summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorguenther <guenther@openbsd.org>2018-06-30 19:24:07 +0000
committerguenther <guenther@openbsd.org>2018-06-30 19:24:07 +0000
commit0312daa06e0364e34e1a70d45fb64622652b648f (patch)
tree65ed359e63db1e3b18cdcec55c1d130bac2120d0 /sys
parentSome tweaks such that ACPI 5.1 tables are recognized as well. (diff)
downloadwireguard-openbsd-0312daa06e0364e34e1a70d45fb64622652b648f.tar.xz
wireguard-openbsd-0312daa06e0364e34e1a70d45fb64622652b648f.zip
Don't try to set XCR0_X87 when XSAVE isn't supported at all. Fixes
vmm on CPUs without XSAVE. Problem reported by Ax0n (ax0n (at) h-i-r.net) ok mlarkin@ deraadt@
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/amd64/amd64/vmm.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/arch/amd64/amd64/vmm.c b/sys/arch/amd64/amd64/vmm.c
index c1e34233543..cee2d1955f7 100644
--- a/sys/arch/amd64/amd64/vmm.c
+++ b/sys/arch/amd64/amd64/vmm.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: vmm.c,v 1.203 2018/06/29 04:50:47 mlarkin Exp $ */
+/* $OpenBSD: vmm.c,v 1.204 2018/06/30 19:24:07 guenther Exp $ */
/*
* Copyright (c) 2014 Mike Larkin <mlarkin@openbsd.org>
*
@@ -1971,7 +1971,7 @@ vcpu_reset_regs_svm(struct vcpu *vcpu, struct vcpu_reg_state *vrs)
ret = vcpu_writeregs_svm(vcpu, VM_RWREGS_ALL, vrs);
/* xcr0 power on default sets bit 0 (x87 state) */
- vcpu->vc_gueststate.vg_xcr0 = XCR0_X87;
+ vcpu->vc_gueststate.vg_xcr0 = XCR0_X87 & xsave_mask;
exit:
return ret;
@@ -2764,7 +2764,7 @@ vcpu_reset_regs_vmx(struct vcpu *vcpu, struct vcpu_reg_state *vrs)
/* XXX CR4 shadow */
/* xcr0 power on default sets bit 0 (x87 state) */
- vcpu->vc_gueststate.vg_xcr0 = XCR0_X87;
+ vcpu->vc_gueststate.vg_xcr0 = XCR0_X87 & xsave_mask;
/* Flush the VMCS */
if (vmclear(&vcpu->vc_control_pa)) {