diff options
author | Mike Larkin <mlarkin@cvs.openbsd.org> | 2017-03-21 02:30:34 +0000 |
---|---|---|
committer | Mike Larkin <mlarkin@cvs.openbsd.org> | 2017-03-21 02:30:34 +0000 |
commit | be94ab985865e37709fe85f94638284de15d2cf4 (patch) | |
tree | 3e806f20d235424d1a04e84bd1f99efdc0458689 /sys/arch | |
parent | a2c2500c2f25594898f767edbeed4086262d1a4e (diff) |
CPUID feature 0x80000000 emulation fell through to 0x80000001, which
resulted in wrong cpu information being passed to the guest. Specifically
this breaks Linux guests as with the fallthrough, CPUID_LONG was cleared,
and Linux thought it was runinng on a machine incapable of 64-bit mode.
OpenBSD/NetBSD guests don't check this flag and thus weren't affected.
Diffstat (limited to 'sys/arch')
-rw-r--r-- | sys/arch/amd64/amd64/vmm.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/arch/amd64/amd64/vmm.c b/sys/arch/amd64/amd64/vmm.c index 7c70c940401..2ae26dbc915 100644 --- a/sys/arch/amd64/amd64/vmm.c +++ b/sys/arch/amd64/amd64/vmm.c @@ -1,4 +1,4 @@ -/* $OpenBSD: vmm.c,v 1.120 2017/03/19 03:42:38 mlarkin Exp $ */ +/* $OpenBSD: vmm.c,v 1.121 2017/03/21 02:30:33 mlarkin Exp $ */ /* * Copyright (c) 2014 Mike Larkin <mlarkin@openbsd.org> * @@ -4449,6 +4449,7 @@ vmm_handle_cpuid(struct vcpu *vcpu) *rbx = 0; *rcx = 0; *rdx = 0; + break; case 0x80000001: /* Extended function info */ *rax = curcpu()->ci_efeature_eax; *rbx = 0; /* Reserved */ |