vmm(4): switch the APMI CPUID mask to an include mask
authormlarkin <mlarkin@openbsd.org>
Tue, 5 Sep 2023 14:00:40 +0000 (14:00 +0000)
committermlarkin <mlarkin@openbsd.org>
Tue, 5 Sep 2023 14:00:40 +0000 (14:00 +0000)
dv points out that there are other bits there that imply the existence
of other MSRs, so switching this to an include list is a better idea.

sys/arch/amd64/amd64/vmm_machdep.c
sys/arch/amd64/include/vmmvar.h

index 6a63b02..4e68581 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: vmm_machdep.c,v 1.6 2023/09/03 09:30:43 mlarkin Exp $ */
+/* $OpenBSD: vmm_machdep.c,v 1.7 2023/09/05 14:00:40 mlarkin Exp $ */
 /*
  * Copyright (c) 2014 Mike Larkin <mlarkin@openbsd.org>
  *
@@ -6319,7 +6319,7 @@ vmm_handle_cpuid(struct vcpu *vcpu)
                *rax = eax;
                *rbx = ebx;
                *rcx = ecx;
-               *rdx = edx & VMM_APMI_EDX_MASK;
+               *rdx = edx & VMM_APMI_EDX_INCLUDE_MASK;
                break;
        case 0x80000008:        /* Phys bits info and topology (AMD) */
                *rax = eax;
index a187c4f..4b75fa8 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: vmmvar.h,v 1.92 2023/09/03 09:30:43 mlarkin Exp $     */
+/*     $OpenBSD: vmmvar.h,v 1.93 2023/09/05 14:00:41 mlarkin Exp $     */
 /*
  * Copyright (c) 2014 Mike Larkin <mlarkin@openbsd.org>
  *
@@ -559,7 +559,9 @@ struct vm_mprotect_ept_params {
     CPUIDEBX_STIBP | CPUIDEBX_IBRS_ALWAYSON | CPUIDEBX_STIBP_ALWAYSON | \
     CPUIDEBX_IBRS_PREF | CPUIDEBX_SSBD | CPUIDEBX_VIRT_SSBD | \
     CPUIDEBX_SSBD_NOTREQ)
-#define VMM_APMI_EDX_MASK ~(CPUIDEDX_HWPSTATE)
+
+/* This mask is an include list for bits we want to expose */
+#define VMM_APMI_EDX_INCLUDE_MASK (CPUIDEDX_ITSC)
 
 /*
  * SEFF flags - copy from host minus: