[PATCH 0/3] Fix VMX-* feature detection from MSR
Currently, libvirt is unable to detect the CPU model of recent Intel CPUs (like Granite Rapids) with VMX-* features specified in the MSRs (Model Specific Registers). This is due to the wrong parsing of these VMX-* features from the MSR values. This series of 3 commits allow to fix the MSR VMX-* feature detection. This has been tested successfully on a platform equipped with Intel Granite Rapids CPU. Hector Cao (3): cpu_map: fix sync script to extract correctly vmx-* features cpu_map: update vmx-* features cputest : fix test failures due to VMX-* feature update src/cpu_map/sync_qemu_features_i386.py | 19 +++ src/cpu_map/x86_features.xml | 136 +++++++++--------- .../x86_64-cpuid-Atom-P5362-2-enabled.xml | 10 +- .../x86_64-cpuid-Atom-P5362-enabled.xml | 10 +- .../x86_64-cpuid-Cooperlake-enabled.xml | 10 +- .../x86_64-cpuid-Core-i7-1270P-enabled.xml | 10 +- .../x86_64-cpuid-Core-i7-1365U-enabled.xml | 10 +- .../x86_64-cpuid-Core-i7-8550U-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-6731E-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-6788P-disabled.xml | 1 + .../x86_64-cpuid-Xeon-6788P-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-6788P-guest.xml | 17 ++- .../x86_64-cpuid-Xeon-6788P-host.xml | 17 ++- ...x86_64-cpuid-Xeon-Bronze-3408U-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-E3-1270-v5-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-Gold-6152-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-Gold-6530-enabled.xml | 10 +- ...86_64-cpuid-Xeon-Platinum-9242-enabled.xml | 10 +- ...x86_64-cpuid-Xeon-Silver-4214R-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-w7-3465X-enabled.xml | 10 +- 20 files changed, 181 insertions(+), 159 deletions(-) -- 2.45.2
The src/cpu_map/x86_features.xml file contains the definition of all x86 CPU features, these definitions specify how we can decode the feature support fom the CPUID or MSR values. The helper script sync_qemu_features_i386.py builds the x86_features.xml file from QEMU source code to be in sync with supported features in QEMU. This helper script parses QEMU target/i386/cpu.c file looking for CPU feature definitions and convert them into x86_features.xml contents. This is the resulting definition for the vmx-intr-exit feature encoded in the MSR 0x48d. <!-- msr 0x0000048d --> <feature name='vmx-intr-exit'> <msr index='0x0000048d' edx='0x00000000' eax='0x00000001'/> </feature> EAX holds the 32 lower bits of the MSRE 64-bits value and should not be used to detect the VMX-* features. Indeed, VMX-* bit position should be parsed from QEMU source code in the 32 higher bits of the corresponding MSR value. This commit fixes this issue by using the 32 higher bits (EDX) to represent VMX-* features. --- src/cpu_map/sync_qemu_features_i386.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/cpu_map/sync_qemu_features_i386.py b/src/cpu_map/sync_qemu_features_i386.py index b658b864f2..ed65d9966a 100755 --- a/src/cpu_map/sync_qemu_features_i386.py +++ b/src/cpu_map/sync_qemu_features_i386.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 import argparse +import enum import os import re @@ -201,6 +202,19 @@ def add_feature_cpuid(eax, ecx, reg, bit, name): _FEATURES["cpuid"][eax][ecx][reg][bit] = name +class VmxMsr(enum.Enum): + MSR_IA32_VMX_PROCBASED_CTLS2 = 0x0000048b + MSR_IA32_VMX_TRUE_PINBASED_CTLS = 0x0000048d + MSR_IA32_VMX_TRUE_PROCBASED_CTLS = 0x0000048e + MSR_IA32_VMX_TRUE_ENTRY_CTLS = 0x00000490 + MSR_IA32_VMX_TRUE_EXIT_CTLS = 0x0000048f + +def is_vmx_msr(msr): + try: + VmxMsr(msr) + return True + except ValueError: + return False # add new msr feature bit def add_feature_msr(msr, bit, name): @@ -213,6 +227,11 @@ def add_feature_msr(msr, bit, name): if msr not in _FEATURES["msr"]: _FEATURES["msr"][msr] = dict() + # VMX-* features are specified in the 32 higher bits + # of the MSR value + if is_vmx_msr(msr): + bit += 32 + _FEATURES["msr"][msr][bit] = name -- 2.45.2
On Mon, Nov 24, 2025 at 14:40:29 +0100, Hector Cao wrote:
The src/cpu_map/x86_features.xml file contains the definition of all x86 CPU features, these definitions specify how we can decode the feature support fom the CPUID or MSR values.
The helper script sync_qemu_features_i386.py builds the x86_features.xml file from QEMU source code to be in sync with supported features in QEMU. This helper script parses QEMU target/i386/cpu.c file looking for CPU feature definitions and convert them into x86_features.xml contents.
This is the resulting definition for the vmx-intr-exit feature encoded in the MSR 0x48d.
<!-- msr 0x0000048d --> <feature name='vmx-intr-exit'> <msr index='0x0000048d' edx='0x00000000' eax='0x00000001'/> </feature>
EAX holds the 32 lower bits of the MSRE 64-bits value and should not be used to detect the VMX-* features. Indeed, VMX-* bit position should be parsed from QEMU source code in the 32 higher bits of the corresponding MSR value.
This commit fixes this issue by using the 32 higher bits (EDX) to represent VMX-* features. --- src/cpu_map/sync_qemu_features_i386.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)
diff --git a/src/cpu_map/sync_qemu_features_i386.py b/src/cpu_map/sync_qemu_features_i386.py index b658b864f2..ed65d9966a 100755 --- a/src/cpu_map/sync_qemu_features_i386.py +++ b/src/cpu_map/sync_qemu_features_i386.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3
import argparse +import enum import os import re
@@ -201,6 +202,19 @@ def add_feature_cpuid(eax, ecx, reg, bit, name):
_FEATURES["cpuid"][eax][ecx][reg][bit] = name
+class VmxMsr(enum.Enum):
Syntax-check complains there should be two empty lines above VmxMsr class definition.
+ MSR_IA32_VMX_PROCBASED_CTLS2 = 0x0000048b + MSR_IA32_VMX_TRUE_PINBASED_CTLS = 0x0000048d + MSR_IA32_VMX_TRUE_PROCBASED_CTLS = 0x0000048e + MSR_IA32_VMX_TRUE_ENTRY_CTLS = 0x00000490 + MSR_IA32_VMX_TRUE_EXIT_CTLS = 0x0000048f +
Two empty lines here as well.
+def is_vmx_msr(msr): + try: + VmxMsr(msr) + return True + except ValueError: + return False
And here.
# add new msr feature bit def add_feature_msr(msr, bit, name): @@ -213,6 +227,11 @@ def add_feature_msr(msr, bit, name): if msr not in _FEATURES["msr"]: _FEATURES["msr"][msr] = dict()
+ # VMX-* features are specified in the 32 higher bits + # of the MSR value + if is_vmx_msr(msr): + bit += 32 + _FEATURES["msr"][msr][bit] = name
Jirka
the vmx-* features are currently decoded from the 32-lower bits (EAX) of the MSR 64-bit values. They should be decoded instead from the 32-higher bits (EDX). --- src/cpu_map/x86_features.xml | 136 +++++++++--------- .../x86_64-cpuid-Atom-P5362-2-enabled.xml | 10 +- .../x86_64-cpuid-Atom-P5362-enabled.xml | 10 +- .../x86_64-cpuid-Cooperlake-enabled.xml | 10 +- .../x86_64-cpuid-Core-i7-1270P-enabled.xml | 10 +- .../x86_64-cpuid-Core-i7-1365U-enabled.xml | 10 +- .../x86_64-cpuid-Core-i7-8550U-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-6731E-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-6788P-disabled.xml | 1 + .../x86_64-cpuid-Xeon-6788P-enabled.xml | 10 +- ...x86_64-cpuid-Xeon-Bronze-3408U-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-E3-1270-v5-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-Gold-6152-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-Gold-6530-enabled.xml | 10 +- ...86_64-cpuid-Xeon-Platinum-9242-enabled.xml | 10 +- ...x86_64-cpuid-Xeon-Silver-4214R-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-w7-3465X-enabled.xml | 10 +- 17 files changed, 144 insertions(+), 143 deletions(-) diff --git a/src/cpu_map/x86_features.xml b/src/cpu_map/x86_features.xml index 5220a3d172..2a2ac57f90 100644 --- a/src/cpu_map/x86_features.xml +++ b/src/cpu_map/x86_features.xml @@ -982,67 +982,67 @@ <!-- msr 0x0000048b --> <feature name='vmx-apicv-xapic'> - <msr index='0x0000048b' edx='0x00000000' eax='0x00000001'/> + <msr index='0x0000048b' edx='0x00000001' eax='0x00000000'/> </feature> <feature name='vmx-ept'> - <msr index='0x0000048b' edx='0x00000000' eax='0x00000002'/> + <msr index='0x0000048b' edx='0x00000002' eax='0x00000000'/> </feature> <feature name='vmx-desc-exit'> - <msr index='0x0000048b' edx='0x00000000' eax='0x00000004'/> + <msr index='0x0000048b' edx='0x00000004' eax='0x00000000'/> </feature> <feature name='vmx-rdtscp-exit'> - <msr index='0x0000048b' edx='0x00000000' eax='0x00000008'/> + <msr index='0x0000048b' edx='0x00000008' eax='0x00000000'/> </feature> <feature name='vmx-apicv-x2apic'> - <msr index='0x0000048b' edx='0x00000000' eax='0x00000010'/> + <msr index='0x0000048b' edx='0x00000010' eax='0x00000000'/> </feature> <feature name='vmx-vpid'> - <msr index='0x0000048b' edx='0x00000000' eax='0x00000020'/> + <msr index='0x0000048b' edx='0x00000020' eax='0x00000000'/> </feature> <feature name='vmx-wbinvd-exit'> - <msr index='0x0000048b' edx='0x00000000' eax='0x00000040'/> + <msr index='0x0000048b' edx='0x00000040' eax='0x00000000'/> </feature> <feature name='vmx-unrestricted-guest'> - <msr index='0x0000048b' edx='0x00000000' eax='0x00000080'/> + <msr index='0x0000048b' edx='0x00000080' eax='0x00000000'/> </feature> <feature name='vmx-apicv-register'> - <msr index='0x0000048b' edx='0x00000000' eax='0x00000100'/> + <msr index='0x0000048b' edx='0x00000100' eax='0x00000000'/> </feature> <feature name='vmx-apicv-vid'> - <msr index='0x0000048b' edx='0x00000000' eax='0x00000200'/> + <msr index='0x0000048b' edx='0x00000200' eax='0x00000000'/> </feature> <feature name='vmx-ple'> - <msr index='0x0000048b' edx='0x00000000' eax='0x00000400'/> + <msr index='0x0000048b' edx='0x00000400' eax='0x00000000'/> </feature> <feature name='vmx-rdrand-exit'> - <msr index='0x0000048b' edx='0x00000000' eax='0x00000800'/> + <msr index='0x0000048b' edx='0x00000800' eax='0x00000000'/> </feature> <feature name='vmx-invpcid-exit'> - <msr index='0x0000048b' edx='0x00000000' eax='0x00001000'/> + <msr index='0x0000048b' edx='0x00001000' eax='0x00000000'/> </feature> <feature name='vmx-vmfunc'> - <msr index='0x0000048b' edx='0x00000000' eax='0x00002000'/> + <msr index='0x0000048b' edx='0x00002000' eax='0x00000000'/> </feature> <feature name='vmx-shadow-vmcs'> - <msr index='0x0000048b' edx='0x00000000' eax='0x00004000'/> + <msr index='0x0000048b' edx='0x00004000' eax='0x00000000'/> </feature> <feature name='vmx-encls-exit'> - <msr index='0x0000048b' edx='0x00000000' eax='0x00008000'/> + <msr index='0x0000048b' edx='0x00008000' eax='0x00000000'/> </feature> <feature name='vmx-rdseed-exit'> - <msr index='0x0000048b' edx='0x00000000' eax='0x00010000'/> + <msr index='0x0000048b' edx='0x00010000' eax='0x00000000'/> </feature> <feature name='vmx-pml'> - <msr index='0x0000048b' edx='0x00000000' eax='0x00020000'/> + <msr index='0x0000048b' edx='0x00020000' eax='0x00000000'/> </feature> <feature name='vmx-xsaves'> - <msr index='0x0000048b' edx='0x00000000' eax='0x00100000'/> + <msr index='0x0000048b' edx='0x00100000' eax='0x00000000'/> </feature> <feature name='vmx-tsc-scaling'> - <msr index='0x0000048b' edx='0x00000000' eax='0x02000000'/> + <msr index='0x0000048b' edx='0x02000000' eax='0x00000000'/> </feature> <feature name='vmx-enable-user-wait-pause'> - <msr index='0x0000048b' edx='0x00000000' eax='0x04000000'/> + <msr index='0x0000048b' edx='0x04000000' eax='0x00000000'/> </feature> <!-- msr 0x0000048c --> @@ -1101,151 +1101,151 @@ <!-- msr 0x0000048d --> <feature name='vmx-intr-exit'> - <msr index='0x0000048d' edx='0x00000000' eax='0x00000001'/> + <msr index='0x0000048d' edx='0x00000001' eax='0x00000000'/> </feature> <feature name='vmx-nmi-exit'> - <msr index='0x0000048d' edx='0x00000000' eax='0x00000008'/> + <msr index='0x0000048d' edx='0x00000008' eax='0x00000000'/> </feature> <feature name='vmx-vnmi'> - <msr index='0x0000048d' edx='0x00000000' eax='0x00000020'/> + <msr index='0x0000048d' edx='0x00000020' eax='0x00000000'/> </feature> <feature name='vmx-preemption-timer'> - <msr index='0x0000048d' edx='0x00000000' eax='0x00000040'/> + <msr index='0x0000048d' edx='0x00000040' eax='0x00000000'/> </feature> <feature name='vmx-posted-intr'> - <msr index='0x0000048d' edx='0x00000000' eax='0x00000080'/> + <msr index='0x0000048d' edx='0x00000080' eax='0x00000000'/> </feature> <!-- msr 0x0000048e --> <feature name='vmx-vintr-pending'> - <msr index='0x0000048e' edx='0x00000000' eax='0x00000004'/> + <msr index='0x0000048e' edx='0x00000004' eax='0x00000000'/> </feature> <feature name='vmx-tsc-offset'> - <msr index='0x0000048e' edx='0x00000000' eax='0x00000008'/> + <msr index='0x0000048e' edx='0x00000008' eax='0x00000000'/> </feature> <feature name='vmx-hlt-exit'> - <msr index='0x0000048e' edx='0x00000000' eax='0x00000080'/> + <msr index='0x0000048e' edx='0x00000080' eax='0x00000000'/> </feature> <feature name='vmx-invlpg-exit'> - <msr index='0x0000048e' edx='0x00000000' eax='0x00000200'/> + <msr index='0x0000048e' edx='0x00000200' eax='0x00000000'/> </feature> <feature name='vmx-mwait-exit'> - <msr index='0x0000048e' edx='0x00000000' eax='0x00000400'/> + <msr index='0x0000048e' edx='0x00000400' eax='0x00000000'/> </feature> <feature name='vmx-rdpmc-exit'> - <msr index='0x0000048e' edx='0x00000000' eax='0x00000800'/> + <msr index='0x0000048e' edx='0x00000800' eax='0x00000000'/> </feature> <feature name='vmx-rdtsc-exit'> - <msr index='0x0000048e' edx='0x00000000' eax='0x00001000'/> + <msr index='0x0000048e' edx='0x00001000' eax='0x00000000'/> </feature> <feature name='vmx-cr3-load-noexit'> - <msr index='0x0000048e' edx='0x00000000' eax='0x00008000'/> + <msr index='0x0000048e' edx='0x00008000' eax='0x00000000'/> </feature> <feature name='vmx-cr3-store-noexit'> - <msr index='0x0000048e' edx='0x00000000' eax='0x00010000'/> + <msr index='0x0000048e' edx='0x00010000' eax='0x00000000'/> </feature> <feature name='vmx-cr8-load-exit'> - <msr index='0x0000048e' edx='0x00000000' eax='0x00080000'/> + <msr index='0x0000048e' edx='0x00080000' eax='0x00000000'/> </feature> <feature name='vmx-cr8-store-exit'> - <msr index='0x0000048e' edx='0x00000000' eax='0x00100000'/> + <msr index='0x0000048e' edx='0x00100000' eax='0x00000000'/> </feature> <feature name='vmx-flexpriority'> - <msr index='0x0000048e' edx='0x00000000' eax='0x00200000'/> + <msr index='0x0000048e' edx='0x00200000' eax='0x00000000'/> </feature> <feature name='vmx-vnmi-pending'> - <msr index='0x0000048e' edx='0x00000000' eax='0x00400000'/> + <msr index='0x0000048e' edx='0x00400000' eax='0x00000000'/> </feature> <feature name='vmx-movdr-exit'> - <msr index='0x0000048e' edx='0x00000000' eax='0x00800000'/> + <msr index='0x0000048e' edx='0x00800000' eax='0x00000000'/> </feature> <feature name='vmx-io-exit'> - <msr index='0x0000048e' edx='0x00000000' eax='0x01000000'/> + <msr index='0x0000048e' edx='0x01000000' eax='0x00000000'/> </feature> <feature name='vmx-io-bitmap'> - <msr index='0x0000048e' edx='0x00000000' eax='0x02000000'/> + <msr index='0x0000048e' edx='0x02000000' eax='0x00000000'/> </feature> <feature name='vmx-mtf'> - <msr index='0x0000048e' edx='0x00000000' eax='0x08000000'/> + <msr index='0x0000048e' edx='0x08000000' eax='0x00000000'/> </feature> <feature name='vmx-msr-bitmap'> - <msr index='0x0000048e' edx='0x00000000' eax='0x10000000'/> + <msr index='0x0000048e' edx='0x10000000' eax='0x00000000'/> </feature> <feature name='vmx-monitor-exit'> - <msr index='0x0000048e' edx='0x00000000' eax='0x20000000'/> + <msr index='0x0000048e' edx='0x20000000' eax='0x00000000'/> </feature> <feature name='vmx-pause-exit'> - <msr index='0x0000048e' edx='0x00000000' eax='0x40000000'/> + <msr index='0x0000048e' edx='0x40000000' eax='0x00000000'/> </feature> <feature name='vmx-secondary-ctls'> - <msr index='0x0000048e' edx='0x00000000' eax='0x80000000'/> + <msr index='0x0000048e' edx='0x80000000' eax='0x00000000'/> </feature> <!-- msr 0x0000048f --> <feature name='vmx-exit-nosave-debugctl'> - <msr index='0x0000048f' edx='0x00000000' eax='0x00000004'/> + <msr index='0x0000048f' edx='0x00000004' eax='0x00000000'/> </feature> <feature name='vmx-exit-load-perf-global-ctrl'> - <msr index='0x0000048f' edx='0x00000000' eax='0x00001000'/> + <msr index='0x0000048f' edx='0x00001000' eax='0x00000000'/> </feature> <feature name='vmx-exit-ack-intr'> - <msr index='0x0000048f' edx='0x00000000' eax='0x00008000'/> + <msr index='0x0000048f' edx='0x00008000' eax='0x00000000'/> </feature> <feature name='vmx-exit-save-pat'> - <msr index='0x0000048f' edx='0x00000000' eax='0x00040000'/> + <msr index='0x0000048f' edx='0x00040000' eax='0x00000000'/> </feature> <feature name='vmx-exit-load-pat'> - <msr index='0x0000048f' edx='0x00000000' eax='0x00080000'/> + <msr index='0x0000048f' edx='0x00080000' eax='0x00000000'/> </feature> <feature name='vmx-exit-save-efer'> - <msr index='0x0000048f' edx='0x00000000' eax='0x00100000'/> + <msr index='0x0000048f' edx='0x00100000' eax='0x00000000'/> </feature> <feature name='vmx-exit-load-efer'> - <msr index='0x0000048f' edx='0x00000000' eax='0x00200000'/> + <msr index='0x0000048f' edx='0x00200000' eax='0x00000000'/> </feature> <feature name='vmx-exit-save-preemption-timer'> - <msr index='0x0000048f' edx='0x00000000' eax='0x00400000'/> + <msr index='0x0000048f' edx='0x00400000' eax='0x00000000'/> </feature> <feature name='vmx-exit-clear-bndcfgs'> - <msr index='0x0000048f' edx='0x00000000' eax='0x00800000'/> + <msr index='0x0000048f' edx='0x00800000' eax='0x00000000'/> </feature> <feature name='vmx-exit-clear-rtit-ctl'> - <msr index='0x0000048f' edx='0x00000000' eax='0x02000000'/> + <msr index='0x0000048f' edx='0x02000000' eax='0x00000000'/> </feature> <feature name='vmx-exit-load-pkrs'> - <msr index='0x0000048f' edx='0x00000000' eax='0x20000000'/> + <msr index='0x0000048f' edx='0x20000000' eax='0x00000000'/> </feature> <feature name='vmx-exit-secondary-ctls'> - <msr index='0x0000048f' edx='0x00000000' eax='0x80000000'/> + <msr index='0x0000048f' edx='0x80000000' eax='0x00000000'/> </feature> <!-- msr 0x00000490 --> <feature name='vmx-entry-noload-debugctl'> - <msr index='0x00000490' edx='0x00000000' eax='0x00000004'/> + <msr index='0x00000490' edx='0x00000004' eax='0x00000000'/> </feature> <feature name='vmx-entry-ia32e-mode'> - <msr index='0x00000490' edx='0x00000000' eax='0x00000200'/> + <msr index='0x00000490' edx='0x00000200' eax='0x00000000'/> </feature> <feature name='vmx-entry-load-perf-global-ctrl'> - <msr index='0x00000490' edx='0x00000000' eax='0x00002000'/> + <msr index='0x00000490' edx='0x00002000' eax='0x00000000'/> </feature> <feature name='vmx-entry-load-pat'> - <msr index='0x00000490' edx='0x00000000' eax='0x00004000'/> + <msr index='0x00000490' edx='0x00004000' eax='0x00000000'/> </feature> <feature name='vmx-entry-load-efer'> - <msr index='0x00000490' edx='0x00000000' eax='0x00008000'/> + <msr index='0x00000490' edx='0x00008000' eax='0x00000000'/> </feature> <feature name='vmx-entry-load-bndcfgs'> - <msr index='0x00000490' edx='0x00000000' eax='0x00010000'/> + <msr index='0x00000490' edx='0x00010000' eax='0x00000000'/> </feature> <feature name='vmx-entry-load-rtit-ctl'> - <msr index='0x00000490' edx='0x00000000' eax='0x00040000'/> + <msr index='0x00000490' edx='0x00040000' eax='0x00000000'/> </feature> <feature name='vmx-entry-load-pkrs'> - <msr index='0x00000490' edx='0x00000000' eax='0x00400000'/> + <msr index='0x00000490' edx='0x00400000' eax='0x00000000'/> </feature> <feature name='vmx-entry-load-fred'> - <msr index='0x00000490' edx='0x00000000' eax='0x00800000'/> + <msr index='0x00000490' edx='0x00800000' eax='0x00000000'/> </feature> <!-- msr 0x00000491 --> diff --git a/tests/cputestdata/x86_64-cpuid-Atom-P5362-2-enabled.xml b/tests/cputestdata/x86_64-cpuid-Atom-P5362-2-enabled.xml index b2caa79560..d3acea7fb5 100644 --- a/tests/cputestdata/x86_64-cpuid-Atom-P5362-2-enabled.xml +++ b/tests/cputestdata/x86_64-cpuid-Atom-P5362-2-enabled.xml @@ -9,11 +9,11 @@ <msr index='0x10a' edx='0x00000000' eax='0x0400006b'/> <msr index='0x480' edx='0x00c00000' eax='0x00000000'/> <msr index='0x485' edx='0x00000000' eax='0x20000160'/> - <msr index='0x48b' edx='0x00000000' eax='0x06136bff'/> + <msr index='0x48b' edx='0x06136bff' eax='0x00000000'/> <msr index='0x48c' edx='0x00000d01' eax='0x06330041'/> - <msr index='0x48d' edx='0x00000000' eax='0x000000e9'/> - <msr index='0x48e' edx='0x00000000' eax='0xfbf99e8c'/> - <msr index='0x48f' edx='0x00000000' eax='0x007c8004'/> - <msr index='0x490' edx='0x00000000' eax='0x0000c204'/> + <msr index='0x48d' edx='0x000000e9' eax='0x00000000'/> + <msr index='0x48e' edx='0xfbf99e8c' eax='0x00000000'/> + <msr index='0x48f' edx='0x007c8004' eax='0x00000000'/> + <msr index='0x490' edx='0x0000c204' eax='0x00000000'/> <msr index='0x491' edx='0x00000000' eax='0x00000001'/> </cpudata> diff --git a/tests/cputestdata/x86_64-cpuid-Atom-P5362-enabled.xml b/tests/cputestdata/x86_64-cpuid-Atom-P5362-enabled.xml index 77613d6071..d9c8a18ddb 100644 --- a/tests/cputestdata/x86_64-cpuid-Atom-P5362-enabled.xml +++ b/tests/cputestdata/x86_64-cpuid-Atom-P5362-enabled.xml @@ -9,11 +9,11 @@ <msr index='0x10a' edx='0x00000000' eax='0x0000006b'/> <msr index='0x480' edx='0x00c00000' eax='0x00000000'/> <msr index='0x485' edx='0x00000000' eax='0x20000060'/> - <msr index='0x48b' edx='0x00000000' eax='0x00136bff'/> + <msr index='0x48b' edx='0x00136bff' eax='0x00000000'/> <msr index='0x48c' edx='0x00000d01' eax='0x06330041'/> - <msr index='0x48d' edx='0x00000000' eax='0x000000e9'/> - <msr index='0x48e' edx='0x00000000' eax='0xfbf99e8c'/> - <msr index='0x48f' edx='0x00000000' eax='0x007c8004'/> - <msr index='0x490' edx='0x00000000' eax='0x0000c204'/> + <msr index='0x48d' edx='0x000000e9' eax='0x00000000'/> + <msr index='0x48e' edx='0xfbf99e8c' eax='0x00000000'/> + <msr index='0x48f' edx='0x007c8004' eax='0x00000000'/> + <msr index='0x490' edx='0x0000c204' eax='0x00000000'/> <msr index='0x491' edx='0x00000000' eax='0x00000001'/> </cpudata> diff --git a/tests/cputestdata/x86_64-cpuid-Cooperlake-enabled.xml b/tests/cputestdata/x86_64-cpuid-Cooperlake-enabled.xml index 08609a89a5..27bc5c49b7 100644 --- a/tests/cputestdata/x86_64-cpuid-Cooperlake-enabled.xml +++ b/tests/cputestdata/x86_64-cpuid-Cooperlake-enabled.xml @@ -10,11 +10,11 @@ <msr index='0x10a' edx='0x00000000' eax='0x000001eb'/> <msr index='0x480' edx='0x00c00000' eax='0x00000000'/> <msr index='0x485' edx='0x00000000' eax='0x20000060'/> - <msr index='0x48b' edx='0x00000000' eax='0x00137bff'/> + <msr index='0x48b' edx='0x00137bff' eax='0x00000000'/> <msr index='0x48c' edx='0x00000d01' eax='0x06330041'/> - <msr index='0x48d' edx='0x00000000' eax='0x000000e9'/> - <msr index='0x48e' edx='0x00000000' eax='0xfbf99e8c'/> - <msr index='0x48f' edx='0x00000000' eax='0x007c8004'/> - <msr index='0x490' edx='0x00000000' eax='0x0000c204'/> + <msr index='0x48d' edx='0x000000e9' eax='0x00000000'/> + <msr index='0x48e' edx='0xfbf99e8c' eax='0x00000000'/> + <msr index='0x48f' edx='0x007c8004' eax='0x00000000'/> + <msr index='0x490' edx='0x0000c204' eax='0x00000000'/> <msr index='0x491' edx='0x00000000' eax='0x00000001'/> </cpudata> diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-1270P-enabled.xml b/tests/cputestdata/x86_64-cpuid-Core-i7-1270P-enabled.xml index 8af57fe0df..50ffe707d1 100644 --- a/tests/cputestdata/x86_64-cpuid-Core-i7-1270P-enabled.xml +++ b/tests/cputestdata/x86_64-cpuid-Core-i7-1270P-enabled.xml @@ -11,11 +11,11 @@ <msr index='0x10a' edx='0x00000000' eax='0x1400e06b'/> <msr index='0x480' edx='0x00c00000' eax='0x00000000'/> <msr index='0x485' edx='0x00000000' eax='0x20000160'/> - <msr index='0x48b' edx='0x00000000' eax='0x06137bff'/> + <msr index='0x48b' edx='0x06137bff' eax='0x00000000'/> <msr index='0x48c' edx='0x00000d01' eax='0x06330041'/> - <msr index='0x48d' edx='0x00000000' eax='0x000000e9'/> - <msr index='0x48e' edx='0x00000000' eax='0xfbf99e8c'/> - <msr index='0x48f' edx='0x00000000' eax='0x007c9004'/> - <msr index='0x490' edx='0x00000000' eax='0x0000e204'/> + <msr index='0x48d' edx='0x000000e9' eax='0x00000000'/> + <msr index='0x48e' edx='0xfbf99e8c' eax='0x00000000'/> + <msr index='0x48f' edx='0x007c9004' eax='0x00000000'/> + <msr index='0x490' edx='0x0000e204' eax='0x00000000'/> <msr index='0x491' edx='0x00000000' eax='0x00000001'/> </cpudata> diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-1365U-enabled.xml b/tests/cputestdata/x86_64-cpuid-Core-i7-1365U-enabled.xml index 433c09590c..1f6363183c 100644 --- a/tests/cputestdata/x86_64-cpuid-Core-i7-1365U-enabled.xml +++ b/tests/cputestdata/x86_64-cpuid-Core-i7-1365U-enabled.xml @@ -11,11 +11,11 @@ <msr index='0x10a' edx='0x00000000' eax='0x1400e06b'/> <msr index='0x480' edx='0x00c00000' eax='0x00000000'/> <msr index='0x485' edx='0x00000000' eax='0x20000160'/> - <msr index='0x48b' edx='0x00000000' eax='0x06137bff'/> + <msr index='0x48b' edx='0x06137bff' eax='0x00000000'/> <msr index='0x48c' edx='0x00000d01' eax='0x06330041'/> - <msr index='0x48d' edx='0x00000000' eax='0x000000e9'/> - <msr index='0x48e' edx='0x00000000' eax='0xfbf99e8c'/> - <msr index='0x48f' edx='0x00000000' eax='0x007c9004'/> - <msr index='0x490' edx='0x00000000' eax='0x0000e204'/> + <msr index='0x48d' edx='0x000000e9' eax='0x00000000'/> + <msr index='0x48e' edx='0xfbf99e8c' eax='0x00000000'/> + <msr index='0x48f' edx='0x007c9004' eax='0x00000000'/> + <msr index='0x490' edx='0x0000e204' eax='0x00000000'/> <msr index='0x491' edx='0x00000000' eax='0x00000001'/> </cpudata> diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-enabled.xml b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-enabled.xml index 424c2492bd..04b63dc586 100644 --- a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-enabled.xml +++ b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-enabled.xml @@ -8,11 +8,11 @@ <msr index='0x10a' edx='0x00000000' eax='0x00000048'/> <msr index='0x480' edx='0x00c00000' eax='0x00000000'/> <msr index='0x485' edx='0x00000000' eax='0x20000060'/> - <msr index='0x48b' edx='0x00000000' eax='0x001378ff'/> + <msr index='0x48b' edx='0x001378ff' eax='0x00000000'/> <msr index='0x48c' edx='0x00000d01' eax='0x06330041'/> - <msr index='0x48d' edx='0x00000000' eax='0x00000069'/> - <msr index='0x48e' edx='0x00000000' eax='0xfbf99e8c'/> - <msr index='0x48f' edx='0x00000000' eax='0x007c8004'/> - <msr index='0x490' edx='0x00000000' eax='0x0000c204'/> + <msr index='0x48d' edx='0x00000069' eax='0x00000000'/> + <msr index='0x48e' edx='0xfbf99e8c' eax='0x00000000'/> + <msr index='0x48f' edx='0x007c8004' eax='0x00000000'/> + <msr index='0x490' edx='0x0000c204' eax='0x00000000'/> <msr index='0x491' edx='0x00000000' eax='0x00000001'/> </cpudata> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-6731E-enabled.xml b/tests/cputestdata/x86_64-cpuid-Xeon-6731E-enabled.xml index e9a9bb3ee1..907b0c68fe 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-6731E-enabled.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-6731E-enabled.xml @@ -11,11 +11,11 @@ <msr index='0x10a' edx='0x00000000' eax='0x0d00e06b'/> <msr index='0x480' edx='0x00c00000' eax='0x00000000'/> <msr index='0x485' edx='0x00000000' eax='0x20000160'/> - <msr index='0x48b' edx='0x00000000' eax='0x06137bff'/> + <msr index='0x48b' edx='0x06137bff' eax='0x00000000'/> <msr index='0x48c' edx='0x00000d01' eax='0x06330041'/> - <msr index='0x48d' edx='0x00000000' eax='0x000000e9'/> - <msr index='0x48e' edx='0x00000000' eax='0xfbf99e8c'/> - <msr index='0x48f' edx='0x00000000' eax='0x007c9004'/> - <msr index='0x490' edx='0x00000000' eax='0x0000e204'/> + <msr index='0x48d' edx='0x000000e9' eax='0x00000000'/> + <msr index='0x48e' edx='0xfbf99e8c' eax='0x00000000'/> + <msr index='0x48f' edx='0x007c9004' eax='0x00000000'/> + <msr index='0x490' edx='0x0000e204' eax='0x00000000'/> <msr index='0x491' edx='0x00000000' eax='0x00000001'/> </cpudata> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-6788P-disabled.xml b/tests/cputestdata/x86_64-cpuid-Xeon-6788P-disabled.xml index 58f1456f81..5dd24f2d17 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-6788P-disabled.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-6788P-disabled.xml @@ -7,4 +7,5 @@ <msr index='0xcf' edx='0x00000000' eax='0x00000020'/> <msr index='0x10a' edx='0x00000000' eax='0x00000100'/> <msr index='0x480' edx='0x05000000' eax='0x00000000'/> + <msr index='0x48b' edx='0x00000400' eax='0x00000000'/> </cpudata> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-6788P-enabled.xml b/tests/cputestdata/x86_64-cpuid-Xeon-6788P-enabled.xml index 6e2caa27f5..c70cd4fdef 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-6788P-enabled.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-6788P-enabled.xml @@ -12,11 +12,11 @@ <msr index='0x10a' edx='0x40000000' eax='0x0d00e0eb'/> <msr index='0x480' edx='0x00c00000' eax='0x00000000'/> <msr index='0x485' edx='0x00000000' eax='0x20000160'/> - <msr index='0x48b' edx='0x00000000' eax='0x06137bff'/> + <msr index='0x48b' edx='0x06137bff' eax='0x00000000'/> <msr index='0x48c' edx='0x00000d01' eax='0x063300c1'/> - <msr index='0x48d' edx='0x00000000' eax='0x000000e9'/> - <msr index='0x48e' edx='0x00000000' eax='0xfbf99e8c'/> - <msr index='0x48f' edx='0x00000000' eax='0x007c9004'/> - <msr index='0x490' edx='0x00000000' eax='0x0000e204'/> + <msr index='0x48d' edx='0x000000e9' eax='0x00000000'/> + <msr index='0x48e' edx='0xfbf99e8c' eax='0x00000000'/> + <msr index='0x48f' edx='0x007c9004' eax='0x00000000'/> + <msr index='0x490' edx='0x0000e204' eax='0x00000000'/> <msr index='0x491' edx='0x00000000' eax='0x00000001'/> </cpudata> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Bronze-3408U-enabled.xml b/tests/cputestdata/x86_64-cpuid-Xeon-Bronze-3408U-enabled.xml index d4d780d899..84fc093c94 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-Bronze-3408U-enabled.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-Bronze-3408U-enabled.xml @@ -11,11 +11,11 @@ <msr index='0x10a' edx='0x00000000' eax='0x0c00e0eb'/> <msr index='0x480' edx='0x00c00000' eax='0x00000000'/> <msr index='0x485' edx='0x00000000' eax='0x20000160'/> - <msr index='0x48b' edx='0x00000000' eax='0x06137bff'/> + <msr index='0x48b' edx='0x06137bff' eax='0x00000000'/> <msr index='0x48c' edx='0x00000d01' eax='0x063300c1'/> - <msr index='0x48d' edx='0x00000000' eax='0x000000e9'/> - <msr index='0x48e' edx='0x00000000' eax='0xfbf99e8c'/> - <msr index='0x48f' edx='0x00000000' eax='0x007c9004'/> - <msr index='0x490' edx='0x00000000' eax='0x0000e204'/> + <msr index='0x48d' edx='0x000000e9' eax='0x00000000'/> + <msr index='0x48e' edx='0xfbf99e8c' eax='0x00000000'/> + <msr index='0x48f' edx='0x007c9004' eax='0x00000000'/> + <msr index='0x490' edx='0x0000e204' eax='0x00000000'/> <msr index='0x491' edx='0x00000000' eax='0x00000001'/> </cpudata> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-E3-1270-v5-enabled.xml b/tests/cputestdata/x86_64-cpuid-Xeon-E3-1270-v5-enabled.xml index 72bfea23de..27ce9c5910 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-E3-1270-v5-enabled.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-E3-1270-v5-enabled.xml @@ -8,11 +8,11 @@ <msr index='0x10a' edx='0x00000000' eax='0x08000048'/> <msr index='0x480' edx='0x00c00000' eax='0x00000000'/> <msr index='0x485' edx='0x00000000' eax='0x20000160'/> - <msr index='0x48b' edx='0x00000000' eax='0x001378ff'/> + <msr index='0x48b' edx='0x001378ff' eax='0x00000000'/> <msr index='0x48c' edx='0x00000d01' eax='0x06330041'/> - <msr index='0x48d' edx='0x00000000' eax='0x00000069'/> - <msr index='0x48e' edx='0x00000000' eax='0xfbf99e8c'/> - <msr index='0x48f' edx='0x00000000' eax='0x00fc9004'/> - <msr index='0x490' edx='0x00000000' eax='0x0001e204'/> + <msr index='0x48d' edx='0x00000069' eax='0x00000000'/> + <msr index='0x48e' edx='0xfbf99e8c' eax='0x00000000'/> + <msr index='0x48f' edx='0x00fc9004' eax='0x00000000'/> + <msr index='0x490' edx='0x0001e204' eax='0x00000000'/> <msr index='0x491' edx='0x00000000' eax='0x00000001'/> </cpudata> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6152-enabled.xml b/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6152-enabled.xml index 81421fd0b3..fec5d74fc5 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6152-enabled.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6152-enabled.xml @@ -9,11 +9,11 @@ <msr index='0x10a' edx='0x00000000' eax='0x08000048'/> <msr index='0x480' edx='0x00c00000' eax='0x00000000'/> <msr index='0x485' edx='0x00000000' eax='0x20000160'/> - <msr index='0x48b' edx='0x00000000' eax='0x02137bff'/> + <msr index='0x48b' edx='0x02137bff' eax='0x00000000'/> <msr index='0x48c' edx='0x00000d01' eax='0x06330041'/> - <msr index='0x48d' edx='0x00000000' eax='0x000000e9'/> - <msr index='0x48e' edx='0x00000000' eax='0xfbf99e8c'/> - <msr index='0x48f' edx='0x00000000' eax='0x00fc9004'/> - <msr index='0x490' edx='0x00000000' eax='0x0001e204'/> + <msr index='0x48d' edx='0x000000e9' eax='0x00000000'/> + <msr index='0x48e' edx='0xfbf99e8c' eax='0x00000000'/> + <msr index='0x48f' edx='0x00fc9004' eax='0x00000000'/> + <msr index='0x490' edx='0x0001e204' eax='0x00000000'/> <msr index='0x491' edx='0x00000000' eax='0x00000001'/> </cpudata> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6530-enabled.xml b/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6530-enabled.xml index de6ca528c4..db6cde2570 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6530-enabled.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6530-enabled.xml @@ -10,11 +10,11 @@ <msr index='0x10a' edx='0x00000000' eax='0x0c00e0eb'/> <msr index='0x480' edx='0x00c00000' eax='0x00000000'/> <msr index='0x485' edx='0x00000000' eax='0x20000160'/> - <msr index='0x48b' edx='0x00000000' eax='0x06137bff'/> + <msr index='0x48b' edx='0x06137bff' eax='0x00000000'/> <msr index='0x48c' edx='0x00000d01' eax='0x063300c1'/> - <msr index='0x48d' edx='0x00000000' eax='0x000000e9'/> - <msr index='0x48e' edx='0x00000000' eax='0xfbf99e8c'/> - <msr index='0x48f' edx='0x00000000' eax='0x007c8004'/> - <msr index='0x490' edx='0x00000000' eax='0x0000c204'/> + <msr index='0x48d' edx='0x000000e9' eax='0x00000000'/> + <msr index='0x48e' edx='0xfbf99e8c' eax='0x00000000'/> + <msr index='0x48f' edx='0x007c8004' eax='0x00000000'/> + <msr index='0x490' edx='0x0000c204' eax='0x00000000'/> <msr index='0x491' edx='0x00000000' eax='0x00000001'/> </cpudata> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-9242-enabled.xml b/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-9242-enabled.xml index a8e24f2302..343f055ebf 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-9242-enabled.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-9242-enabled.xml @@ -9,11 +9,11 @@ <msr index='0x10a' edx='0x00000000' eax='0x000000eb'/> <msr index='0x480' edx='0x00c00000' eax='0x00000000'/> <msr index='0x485' edx='0x00000000' eax='0x20000060'/> - <msr index='0x48b' edx='0x00000000' eax='0x00137bff'/> + <msr index='0x48b' edx='0x00137bff' eax='0x00000000'/> <msr index='0x48c' edx='0x00000d01' eax='0x06330041'/> - <msr index='0x48d' edx='0x00000000' eax='0x000000e9'/> - <msr index='0x48e' edx='0x00000000' eax='0xfbf99e8c'/> - <msr index='0x48f' edx='0x00000000' eax='0x007c8004'/> - <msr index='0x490' edx='0x00000000' eax='0x0000c204'/> + <msr index='0x48d' edx='0x000000e9' eax='0x00000000'/> + <msr index='0x48e' edx='0xfbf99e8c' eax='0x00000000'/> + <msr index='0x48f' edx='0x007c8004' eax='0x00000000'/> + <msr index='0x490' edx='0x0000c204' eax='0x00000000'/> <msr index='0x491' edx='0x00000000' eax='0x00000001'/> </cpudata> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Silver-4214R-enabled.xml b/tests/cputestdata/x86_64-cpuid-Xeon-Silver-4214R-enabled.xml index 05da313503..95e74865cc 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-Silver-4214R-enabled.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-Silver-4214R-enabled.xml @@ -9,11 +9,11 @@ <msr index='0x10a' edx='0x00000000' eax='0x080000eb'/> <msr index='0x480' edx='0x00c00000' eax='0x00000000'/> <msr index='0x485' edx='0x00000000' eax='0x20000160'/> - <msr index='0x48b' edx='0x00000000' eax='0x02137bff'/> + <msr index='0x48b' edx='0x02137bff' eax='0x00000000'/> <msr index='0x48c' edx='0x00000d01' eax='0x06330041'/> - <msr index='0x48d' edx='0x00000000' eax='0x000000e9'/> - <msr index='0x48e' edx='0x00000000' eax='0xfbf99e8c'/> - <msr index='0x48f' edx='0x00000000' eax='0x00fc9004'/> - <msr index='0x490' edx='0x00000000' eax='0x0001e204'/> + <msr index='0x48d' edx='0x000000e9' eax='0x00000000'/> + <msr index='0x48e' edx='0xfbf99e8c' eax='0x00000000'/> + <msr index='0x48f' edx='0x00fc9004' eax='0x00000000'/> + <msr index='0x490' edx='0x0001e204' eax='0x00000000'/> <msr index='0x491' edx='0x00000000' eax='0x00000001'/> </cpudata> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-w7-3465X-enabled.xml b/tests/cputestdata/x86_64-cpuid-Xeon-w7-3465X-enabled.xml index de6ca528c4..db6cde2570 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-w7-3465X-enabled.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-w7-3465X-enabled.xml @@ -10,11 +10,11 @@ <msr index='0x10a' edx='0x00000000' eax='0x0c00e0eb'/> <msr index='0x480' edx='0x00c00000' eax='0x00000000'/> <msr index='0x485' edx='0x00000000' eax='0x20000160'/> - <msr index='0x48b' edx='0x00000000' eax='0x06137bff'/> + <msr index='0x48b' edx='0x06137bff' eax='0x00000000'/> <msr index='0x48c' edx='0x00000d01' eax='0x063300c1'/> - <msr index='0x48d' edx='0x00000000' eax='0x000000e9'/> - <msr index='0x48e' edx='0x00000000' eax='0xfbf99e8c'/> - <msr index='0x48f' edx='0x00000000' eax='0x007c8004'/> - <msr index='0x490' edx='0x00000000' eax='0x0000c204'/> + <msr index='0x48d' edx='0x000000e9' eax='0x00000000'/> + <msr index='0x48e' edx='0xfbf99e8c' eax='0x00000000'/> + <msr index='0x48f' edx='0x007c8004' eax='0x00000000'/> + <msr index='0x490' edx='0x0000c204' eax='0x00000000'/> <msr index='0x491' edx='0x00000000' eax='0x00000001'/> </cpudata> -- 2.45.2
On Mon, Nov 24, 2025 at 14:40:30 +0100, Hector Cao wrote:
the vmx-* features are currently decoded from the 32-lower bits (EAX) of the MSR 64-bit values. They should be decoded instead from the 32-higher bits (EDX). --- src/cpu_map/x86_features.xml | 136 +++++++++--------- .../x86_64-cpuid-Atom-P5362-2-enabled.xml | 10 +- .../x86_64-cpuid-Atom-P5362-enabled.xml | 10 +- .../x86_64-cpuid-Cooperlake-enabled.xml | 10 +- .../x86_64-cpuid-Core-i7-1270P-enabled.xml | 10 +- .../x86_64-cpuid-Core-i7-1365U-enabled.xml | 10 +- .../x86_64-cpuid-Core-i7-8550U-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-6731E-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-6788P-disabled.xml | 1 + .../x86_64-cpuid-Xeon-6788P-enabled.xml | 10 +- ...x86_64-cpuid-Xeon-Bronze-3408U-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-E3-1270-v5-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-Gold-6152-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-Gold-6530-enabled.xml | 10 +- ...86_64-cpuid-Xeon-Platinum-9242-enabled.xml | 10 +- ...x86_64-cpuid-Xeon-Silver-4214R-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-w7-3465X-enabled.xml | 10 +- 17 files changed, 144 insertions(+), 143 deletions(-)
The following patch needs to be squashed in to make sure tests pass after each commit. I even tried splitting this differently and just update the x86_features.xml, but that fails in different ways. Thus I don't see a reasonable way to split the changes into multiple commits. Jirka
--- .../x86_64-cpuid-Xeon-6788P-guest.xml | 17 ++++++++--------- .../x86_64-cpuid-Xeon-6788P-host.xml | 17 ++++++++++------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-6788P-guest.xml b/tests/cputestdata/x86_64-cpuid-Xeon-6788P-guest.xml index 8b651338ec..f5d80aebf8 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-6788P-guest.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-6788P-guest.xml @@ -55,6 +55,7 @@ <feature policy='require' name='rfds-no'/> <feature policy='require' name='vmx-any-errcode'/> <feature policy='require' name='vmx-nested-exception'/> + <feature policy='require' name='vmx-ple'/> <feature policy='disable' name='hle'/> <feature policy='disable' name='rtm'/> <feature policy='disable' name='taa-no'/> @@ -63,16 +64,7 @@ <feature policy='disable' name='vmx-store-lma'/> <feature policy='disable' name='vmx-activity-hlt'/> <feature policy='disable' name='vmx-vmwrite-vmexit-fields'/> - <feature policy='disable' name='vmx-apicv-xapic'/> - <feature policy='disable' name='vmx-ept'/> - <feature policy='disable' name='vmx-desc-exit'/> - <feature policy='disable' name='vmx-rdtscp-exit'/> - <feature policy='disable' name='vmx-apicv-x2apic'/> - <feature policy='disable' name='vmx-vpid'/> - <feature policy='disable' name='vmx-wbinvd-exit'/> - <feature policy='disable' name='vmx-unrestricted-guest'/> <feature policy='disable' name='vmx-apicv-register'/> - <feature policy='disable' name='vmx-apicv-vid'/> <feature policy='disable' name='vmx-rdrand-exit'/> <feature policy='disable' name='vmx-invpcid-exit'/> <feature policy='disable' name='vmx-vmfunc'/> @@ -99,6 +91,11 @@ <feature policy='disable' name='vmx-vintr-pending'/> <feature policy='disable' name='vmx-tsc-offset'/> <feature policy='disable' name='vmx-hlt-exit'/> + <feature policy='disable' name='vmx-invlpg-exit'/> + <feature policy='disable' name='vmx-mwait-exit'/> + <feature policy='disable' name='vmx-rdpmc-exit'/> + <feature policy='disable' name='vmx-rdtsc-exit'/> + <feature policy='disable' name='vmx-cr3-load-noexit'/> <feature policy='disable' name='vmx-cr3-store-noexit'/> <feature policy='disable' name='vmx-cr8-load-exit'/> <feature policy='disable' name='vmx-cr8-store-exit'/> @@ -112,6 +109,7 @@ <feature policy='disable' name='vmx-monitor-exit'/> <feature policy='disable' name='vmx-pause-exit'/> <feature policy='disable' name='vmx-secondary-ctls'/> + <feature policy='disable' name='vmx-exit-nosave-debugctl'/> <feature policy='disable' name='vmx-exit-load-perf-global-ctrl'/> <feature policy='disable' name='vmx-exit-ack-intr'/> <feature policy='disable' name='vmx-exit-save-pat'/> @@ -119,6 +117,7 @@ <feature policy='disable' name='vmx-exit-save-efer'/> <feature policy='disable' name='vmx-exit-load-efer'/> <feature policy='disable' name='vmx-exit-save-preemption-timer'/> + <feature policy='disable' name='vmx-entry-noload-debugctl'/> <feature policy='disable' name='vmx-entry-ia32e-mode'/> <feature policy='disable' name='vmx-entry-load-perf-global-ctrl'/> <feature policy='disable' name='vmx-entry-load-pat'/> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-6788P-host.xml b/tests/cputestdata/x86_64-cpuid-Xeon-6788P-host.xml index e0419f91bd..55fd746133 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-6788P-host.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-6788P-host.xml @@ -89,13 +89,16 @@ <feature name='rfds-no'/> <feature name='vmx-any-errcode'/> <feature name='vmx-nested-exception'/> + <feature name='vmx-apicv-xapic'/> + <feature name='vmx-ept'/> + <feature name='vmx-desc-exit'/> + <feature name='vmx-rdtscp-exit'/> + <feature name='vmx-apicv-x2apic'/> + <feature name='vmx-vpid'/> + <feature name='vmx-wbinvd-exit'/> + <feature name='vmx-unrestricted-guest'/> + <feature name='vmx-apicv-vid'/> + <feature name='vmx-ple'/> <feature name='vmx-invept-single-context'/> <feature name='vmx-invept-all-context'/> - <feature name='vmx-invlpg-exit'/> - <feature name='vmx-mwait-exit'/> - <feature name='vmx-rdpmc-exit'/> - <feature name='vmx-rdtsc-exit'/> - <feature name='vmx-cr3-load-noexit'/> - <feature name='vmx-exit-nosave-debugctl'/> - <feature name='vmx-entry-noload-debugctl'/> </cpu> -- 2.45.2
On Mon, Nov 24, 2025 at 14:40:28 +0100, Hector Cao wrote:
Currently, libvirt is unable to detect the CPU model of recent Intel CPUs (like Granite Rapids) with VMX-* features specified in the MSRs (Model Specific Registers). This is due to the wrong parsing of these VMX-* features from the MSR values.
This series of 3 commits allow to fix the MSR VMX-* feature detection.
This has been tested successfully on a platform equipped with Intel Granite Rapids CPU.
Hector Cao (3): cpu_map: fix sync script to extract correctly vmx-* features cpu_map: update vmx-* features cputest : fix test failures due to VMX-* feature update
src/cpu_map/sync_qemu_features_i386.py | 19 +++ src/cpu_map/x86_features.xml | 136 +++++++++--------- .../x86_64-cpuid-Atom-P5362-2-enabled.xml | 10 +- .../x86_64-cpuid-Atom-P5362-enabled.xml | 10 +- .../x86_64-cpuid-Cooperlake-enabled.xml | 10 +- .../x86_64-cpuid-Core-i7-1270P-enabled.xml | 10 +- .../x86_64-cpuid-Core-i7-1365U-enabled.xml | 10 +- .../x86_64-cpuid-Core-i7-8550U-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-6731E-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-6788P-disabled.xml | 1 + .../x86_64-cpuid-Xeon-6788P-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-6788P-guest.xml | 17 ++- .../x86_64-cpuid-Xeon-6788P-host.xml | 17 ++- ...x86_64-cpuid-Xeon-Bronze-3408U-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-E3-1270-v5-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-Gold-6152-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-Gold-6530-enabled.xml | 10 +- ...86_64-cpuid-Xeon-Platinum-9242-enabled.xml | 10 +- ...x86_64-cpuid-Xeon-Silver-4214R-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-w7-3465X-enabled.xml | 10 +- 20 files changed, 181 insertions(+), 159 deletions(-)
I wanted to fix the empty lines in the first patch, squash patches 2 and 3 into a single one so that I can push the series, but the patches are missing Signed-off-by tags (see https://libvirt.org/hacking.html#developer-certificate-of-origin) You can either do the appropriate changes, add Signed-off-by and resubmit or just reply with your Signed-off-by here and I'll add that to the commits myself before pushing. Thanks Jirka
Thanks Jiri, I am grateful for that quick feedback and your proposal to do further changes, Here is my Sign-off line: Signed-off-by: Hector Cao <hector.cao@canonical.com> Best regards Hector On Tue, Nov 25, 2025 at 11:59 AM Jiri Denemark <jdenemar@redhat.com> wrote:
On Mon, Nov 24, 2025 at 14:40:28 +0100, Hector Cao wrote:
Currently, libvirt is unable to detect the CPU model of recent Intel CPUs (like Granite Rapids) with VMX-* features specified in the MSRs (Model Specific Registers). This is due to the wrong parsing of these VMX-* features from the MSR values.
This series of 3 commits allow to fix the MSR VMX-* feature detection.
This has been tested successfully on a platform equipped with Intel Granite Rapids CPU.
Hector Cao (3): cpu_map: fix sync script to extract correctly vmx-* features cpu_map: update vmx-* features cputest : fix test failures due to VMX-* feature update
src/cpu_map/sync_qemu_features_i386.py | 19 +++ src/cpu_map/x86_features.xml | 136 +++++++++--------- .../x86_64-cpuid-Atom-P5362-2-enabled.xml | 10 +- .../x86_64-cpuid-Atom-P5362-enabled.xml | 10 +- .../x86_64-cpuid-Cooperlake-enabled.xml | 10 +- .../x86_64-cpuid-Core-i7-1270P-enabled.xml | 10 +- .../x86_64-cpuid-Core-i7-1365U-enabled.xml | 10 +- .../x86_64-cpuid-Core-i7-8550U-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-6731E-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-6788P-disabled.xml | 1 + .../x86_64-cpuid-Xeon-6788P-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-6788P-guest.xml | 17 ++- .../x86_64-cpuid-Xeon-6788P-host.xml | 17 ++- ...x86_64-cpuid-Xeon-Bronze-3408U-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-E3-1270-v5-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-Gold-6152-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-Gold-6530-enabled.xml | 10 +- ...86_64-cpuid-Xeon-Platinum-9242-enabled.xml | 10 +- ...x86_64-cpuid-Xeon-Silver-4214R-enabled.xml | 10 +- .../x86_64-cpuid-Xeon-w7-3465X-enabled.xml | 10 +- 20 files changed, 181 insertions(+), 159 deletions(-)
I wanted to fix the empty lines in the first patch, squash patches 2 and 3 into a single one so that I can push the series, but the patches are missing Signed-off-by tags (see https://libvirt.org/hacking.html#developer-certificate-of-origin)
You can either do the appropriate changes, add Signed-off-by and resubmit or just reply with your Signed-off-by here and I'll add that to the commits myself before pushing.
Thanks Jirka
-- Hector CAO Software Engineer – Server Team / Virtualization hector.cao@canonical.com https://launc <https://launchpad.net/~hectorcao>hpad.net/~hectorcao <https://launchpad.net/~hectorcao> <https://launchpad.net/~hectorcao>
On Tue, Nov 25, 2025 at 13:36:53 +0100, Hector Cao wrote:
Thanks Jiri,
I am grateful for that quick feedback and your proposal to do further changes,
Here is my Sign-off line:
Signed-off-by: Hector Cao <hector.cao@canonical.com>
Thanks, pushed now as the freeze is over. Jirka
participants (3)
-
Hector Cao -
Jiri Denemark -
Jiří Denemark