]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
cpu_map: Add missing vmx features from MSR 0x48C
authorTim Wiederhake <twiederh@redhat.com>
Thu, 9 Nov 2023 13:37:19 +0000 (14:37 +0100)
committerTim Wiederhake <twiederh@redhat.com>
Fri, 24 Nov 2023 09:46:50 +0000 (10:46 +0100)
Differences from qemu:

* "vmx-ept-uc" (bit 8) and "vmx-ept-wb" (bit 14) are not added to
qemu's list of named features yet, but used in several qemu cpu
models never the less. Add to libvirt regardless.

* "vmx-invvpid-single-context" (bit 41) is erroneously called
"vmx-invept-single-context" in qemu. This is the name of the
feature associated with bit 25 in both libvirt and qemu.

* "vmx-invvpid-single-context-noglobals" (bit 43) is erroneously
called "vmx-invept-single-context-noglobals". Use the correct name.

Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
16 files changed:
src/cpu_map/x86_features.xml
tests/cputestdata/x86_64-cpuid-Atom-P5362-enabled.xml
tests/cputestdata/x86_64-cpuid-Atom-P5362-json.xml
tests/cputestdata/x86_64-cpuid-Cooperlake-enabled.xml
tests/cputestdata/x86_64-cpuid-Cooperlake-json.xml
tests/cputestdata/x86_64-cpuid-Core-i7-8550U-enabled.xml
tests/cputestdata/x86_64-cpuid-Core-i7-8550U-json.xml
tests/cputestdata/x86_64-cpuid-Xeon-Platinum-9242-enabled.xml
tests/cputestdata/x86_64-cpuid-Xeon-Platinum-9242-json.xml
tests/cputestdata/x86_64-cpuid-baseline-Cooperlake+Cascadelake.xml
tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml
tests/domaincapsdata/qemu_4.2.0.x86_64.xml
tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml
tests/domaincapsdata/qemu_5.0.0.x86_64.xml
tests/qemuxml2argvdata/cpu-host-model-kvm.x86_64-4.2.0.args
tests/qemuxml2argvdata/cpu-host-model-kvm.x86_64-5.0.0.args

index 7b6ff44c20075fce459fd4a6f162d630b3e8edc7..f37b8170130e1df8875185f82843075973a3e6c7 100644 (file)
   <feature name='vmx-enable-user-wait-pause'>
     <msr index='0x48b' edx='0x00000000' eax='0x04000000'/>
   </feature>
+
+  <feature name='vmx-invvpid'>
+    <msr index='0x48c' edx='0x00000001' eax='0x00000000'/>
+  </feature>
+  <feature name='vmx-invvpid-single-addr'>
+    <msr index='0x48c' edx='0x00000100' eax='0x00000000'/>
+  </feature>
+  <feature name='vmx-invvpid-single-context'>
+    <msr index='0x48c' edx='0x00000200' eax='0x00000000'/>
+  </feature>
+  <feature name='vmx-invvpid-all-context'>
+    <msr index='0x48c' edx='0x00000400' eax='0x00000000'/>
+  </feature>
+  <feature name='vmx-invvpid-single-context-noglobals'>
+    <alias name='vmx-invept-single-context-noglobals' source='qemu'/>
+    <msr index='0x48c' edx='0x00000800' eax='0x00000000'/>
+  </feature>
+  <feature name='vmx-ept-execonly'>
+    <msr index='0x48c' edx='0x00000000' eax='0x00000001'/>
+  </feature>
+  <feature name='vmx-page-walk-4'>
+    <msr index='0x48c' edx='0x00000000' eax='0x00000040'/>
+  </feature>
+  <feature name='vmx-page-walk-5'>
+    <msr index='0x48c' edx='0x00000000' eax='0x00000080'/>
+  </feature>
+  <feature name='vmx-ept-uc'>
+    <msr index='0x48c' edx='0x00000000' eax='0x00000100'/>
+  </feature>
+  <feature name='vmx-ept-wb'>
+    <msr index='0x48c' edx='0x00000000' eax='0x00004000'/>
+  </feature>
+  <feature name='vmx-ept-2mb'>
+    <msr index='0x48c' edx='0x00000000' eax='0x00010000'/>
+  </feature>
+  <feature name='vmx-ept-1gb'>
+    <msr index='0x48c' edx='0x00000000' eax='0x00020000'/>
+  </feature>
+  <feature name='vmx-invept'>
+    <msr index='0x48c' edx='0x00000000' eax='0x00100000'/>
+  </feature>
+  <feature name='vmx-eptad'>
+    <msr index='0x48c' edx='0x00000000' eax='0x00200000'/>
+  </feature>
+  <feature name='vmx-ept-advanced-exitinfo'>
+    <msr index='0x48c' edx='0x00000000' eax='0x00400000'/>
+  </feature>
+  <feature name='vmx-invept-single-context'>
+    <msr index='0x48c' edx='0x00000000' eax='0x02000000'/>
+  </feature>
+  <feature name='vmx-invept-all-context'>
+    <msr index='0x48c' edx='0x00000000' eax='0x04000000'/>
+  </feature>
 </cpus>
index 7a1f047382d0d939bcadc8342c41f2dad67cdc39..195bf887651033ff8e07fce98fddda4f37d4c0c9 100644 (file)
@@ -10,4 +10,5 @@
   <msr index='0x480' edx='0x00c00000' eax='0x00000000'/>
   <msr index='0x485' edx='0x00000000' eax='0x20000060'/>
   <msr index='0x48b' edx='0x00000000' eax='0x00136bff'/>
+  <msr index='0x48c' edx='0x00000501' eax='0x06330041'/>
 </cpudata>
index bb4259058aa77ca5b4fc87756393ef735da98f38..d7d8d89d42318350b140b506b86e9a349140f8bc 100644 (file)
   <feature policy='require' name='vmx-rdseed-exit'/>
   <feature policy='require' name='vmx-pml'/>
   <feature policy='require' name='vmx-xsaves'/>
+  <feature policy='require' name='vmx-invvpid'/>
+  <feature policy='require' name='vmx-invvpid-single-addr'/>
+  <feature policy='require' name='vmx-invvpid-all-context'/>
+  <feature policy='require' name='vmx-ept-execonly'/>
+  <feature policy='require' name='vmx-page-walk-4'/>
+  <feature policy='require' name='vmx-ept-2mb'/>
+  <feature policy='require' name='vmx-ept-1gb'/>
+  <feature policy='require' name='vmx-invept'/>
+  <feature policy='require' name='vmx-eptad'/>
+  <feature policy='require' name='vmx-invept-single-context'/>
+  <feature policy='require' name='vmx-invept-all-context'/>
   <feature policy='disable' name='mpx'/>
   <feature policy='disable' name='core-capability'/>
   <feature policy='disable' name='pdpe1gb'/>
index 01d81a64a6aba1bece6eb1d0a740a7bb47719c13..7acddcae81ce4d8e89623b478c78746aa4680af4 100644 (file)
@@ -11,4 +11,5 @@
   <msr index='0x480' edx='0x00c00000' eax='0x00000000'/>
   <msr index='0x485' edx='0x00000000' eax='0x20000060'/>
   <msr index='0x48b' edx='0x00000000' eax='0x00137bff'/>
+  <msr index='0x48c' edx='0x00000501' eax='0x06330041'/>
 </cpudata>
index bb1d2f628cc634d0a87b1573f725bc7486ab6867..1dee592f232071b0f9a72ca476d947b6d3928451 100644 (file)
   <feature policy='require' name='vmx-rdseed-exit'/>
   <feature policy='require' name='vmx-pml'/>
   <feature policy='require' name='vmx-xsaves'/>
+  <feature policy='require' name='vmx-invvpid'/>
+  <feature policy='require' name='vmx-invvpid-single-addr'/>
+  <feature policy='require' name='vmx-invvpid-all-context'/>
+  <feature policy='require' name='vmx-ept-execonly'/>
+  <feature policy='require' name='vmx-page-walk-4'/>
+  <feature policy='require' name='vmx-ept-2mb'/>
+  <feature policy='require' name='vmx-ept-1gb'/>
+  <feature policy='require' name='vmx-invept'/>
+  <feature policy='require' name='vmx-eptad'/>
+  <feature policy='require' name='vmx-invept-single-context'/>
+  <feature policy='require' name='vmx-invept-all-context'/>
 </cpu>
index 1bf7882b2e15063fc8eac5648f942ca258bd45f7..1309da972b0552c1396eaa1e8cbf04ff771c7502 100644 (file)
@@ -9,4 +9,5 @@
   <msr index='0x480' edx='0x00c00000' eax='0x00000000'/>
   <msr index='0x485' edx='0x00000000' eax='0x20000060'/>
   <msr index='0x48b' edx='0x00000000' eax='0x001378ff'/>
+  <msr index='0x48c' edx='0x00000501' eax='0x06330041'/>
 </cpudata>
index e150ef400492a589ae5d223e64e0676fd8bc40f6..8e590da2c9ee304c955e65f98912f60d9771c10a 100644 (file)
   <feature policy='require' name='vmx-rdseed-exit'/>
   <feature policy='require' name='vmx-pml'/>
   <feature policy='require' name='vmx-xsaves'/>
+  <feature policy='require' name='vmx-invvpid'/>
+  <feature policy='require' name='vmx-invvpid-single-addr'/>
+  <feature policy='require' name='vmx-invvpid-all-context'/>
+  <feature policy='require' name='vmx-ept-execonly'/>
+  <feature policy='require' name='vmx-page-walk-4'/>
+  <feature policy='require' name='vmx-ept-2mb'/>
+  <feature policy='require' name='vmx-ept-1gb'/>
+  <feature policy='require' name='vmx-invept'/>
+  <feature policy='require' name='vmx-eptad'/>
+  <feature policy='require' name='vmx-invept-single-context'/>
+  <feature policy='require' name='vmx-invept-all-context'/>
   <feature policy='disable' name='hle'/>
   <feature policy='disable' name='rtm'/>
 </cpu>
index b7ffbb27083cb178610884e182485b08dce08bf0..a9bf08018ae9ff43d96c544d0a74d2ffe69a2130 100644 (file)
@@ -10,4 +10,5 @@
   <msr index='0x480' edx='0x00c00000' eax='0x00000000'/>
   <msr index='0x485' edx='0x00000000' eax='0x20000060'/>
   <msr index='0x48b' edx='0x00000000' eax='0x00137bff'/>
+  <msr index='0x48c' edx='0x00000501' eax='0x06330041'/>
 </cpudata>
index 2813c72012fc1e7776b3a0d95a2bf071ec59a30b..edb4dfbb5c896fb704ceb13aa4c4ca76da2fab32 100644 (file)
   <feature policy='require' name='vmx-rdseed-exit'/>
   <feature policy='require' name='vmx-pml'/>
   <feature policy='require' name='vmx-xsaves'/>
+  <feature policy='require' name='vmx-invvpid'/>
+  <feature policy='require' name='vmx-invvpid-single-addr'/>
+  <feature policy='require' name='vmx-invvpid-all-context'/>
+  <feature policy='require' name='vmx-ept-execonly'/>
+  <feature policy='require' name='vmx-page-walk-4'/>
+  <feature policy='require' name='vmx-ept-2mb'/>
+  <feature policy='require' name='vmx-ept-1gb'/>
+  <feature policy='require' name='vmx-invept'/>
+  <feature policy='require' name='vmx-eptad'/>
+  <feature policy='require' name='vmx-invept-single-context'/>
+  <feature policy='require' name='vmx-invept-all-context'/>
 </cpu>
index ca6387e39066a0ae54f339ce386714ad0a0bd075..0918fc96cba0949feca926d0ec8170e3268f7d22 100644 (file)
   <feature policy='require' name='vmx-rdseed-exit'/>
   <feature policy='require' name='vmx-pml'/>
   <feature policy='require' name='vmx-xsaves'/>
+  <feature policy='require' name='vmx-invvpid'/>
+  <feature policy='require' name='vmx-invvpid-single-addr'/>
+  <feature policy='require' name='vmx-invvpid-all-context'/>
+  <feature policy='require' name='vmx-ept-execonly'/>
+  <feature policy='require' name='vmx-page-walk-4'/>
+  <feature policy='require' name='vmx-ept-2mb'/>
+  <feature policy='require' name='vmx-ept-1gb'/>
+  <feature policy='require' name='vmx-invept'/>
+  <feature policy='require' name='vmx-eptad'/>
+  <feature policy='require' name='vmx-invept-single-context'/>
+  <feature policy='require' name='vmx-invept-all-context'/>
 </cpu>
index 398a027e92a9a752ca377a260bda2bb0ad2b1a93..563c2cbd24b7d3f878e742f967f935053034ebee 100644 (file)
       <feature policy='require' name='vmx-rdseed-exit'/>
       <feature policy='require' name='vmx-pml'/>
       <feature policy='require' name='vmx-xsaves'/>
+      <feature policy='require' name='vmx-invvpid'/>
+      <feature policy='require' name='vmx-invvpid-single-addr'/>
+      <feature policy='require' name='vmx-invvpid-all-context'/>
+      <feature policy='require' name='vmx-ept-execonly'/>
+      <feature policy='require' name='vmx-page-walk-4'/>
+      <feature policy='require' name='vmx-ept-2mb'/>
+      <feature policy='require' name='vmx-ept-1gb'/>
+      <feature policy='require' name='vmx-invept'/>
+      <feature policy='require' name='vmx-eptad'/>
+      <feature policy='require' name='vmx-invept-single-context'/>
+      <feature policy='require' name='vmx-invept-all-context'/>
     </mode>
     <mode name='custom' supported='yes'>
       <model usable='yes' vendor='unknown'>qemu64</model>
index 446bf915a55a7a5f1cc6c680054b540de455406d..2ee9422dd3bc0267375f06f63da4b81fa1c6c372 100644 (file)
       <feature policy='require' name='vmx-rdseed-exit'/>
       <feature policy='require' name='vmx-pml'/>
       <feature policy='require' name='vmx-xsaves'/>
+      <feature policy='require' name='vmx-invvpid'/>
+      <feature policy='require' name='vmx-invvpid-single-addr'/>
+      <feature policy='require' name='vmx-invvpid-all-context'/>
+      <feature policy='require' name='vmx-ept-execonly'/>
+      <feature policy='require' name='vmx-page-walk-4'/>
+      <feature policy='require' name='vmx-ept-2mb'/>
+      <feature policy='require' name='vmx-ept-1gb'/>
+      <feature policy='require' name='vmx-invept'/>
+      <feature policy='require' name='vmx-eptad'/>
+      <feature policy='require' name='vmx-invept-single-context'/>
+      <feature policy='require' name='vmx-invept-all-context'/>
     </mode>
     <mode name='custom' supported='yes'>
       <model usable='yes' vendor='unknown'>qemu64</model>
index c1dd623709eab1a861b1e70ebe0a63b85616b134..fbb7549ef55d2f7f011a610b63d0842867b7f5e1 100644 (file)
       <feature policy='require' name='vmx-rdseed-exit'/>
       <feature policy='require' name='vmx-pml'/>
       <feature policy='require' name='vmx-xsaves'/>
+      <feature policy='require' name='vmx-invvpid'/>
+      <feature policy='require' name='vmx-invvpid-single-addr'/>
+      <feature policy='require' name='vmx-invvpid-all-context'/>
+      <feature policy='require' name='vmx-ept-execonly'/>
+      <feature policy='require' name='vmx-page-walk-4'/>
+      <feature policy='require' name='vmx-ept-2mb'/>
+      <feature policy='require' name='vmx-ept-1gb'/>
+      <feature policy='require' name='vmx-invept'/>
+      <feature policy='require' name='vmx-eptad'/>
+      <feature policy='require' name='vmx-invept-single-context'/>
+      <feature policy='require' name='vmx-invept-all-context'/>
     </mode>
     <mode name='custom' supported='yes'>
       <model usable='yes' vendor='unknown'>qemu64</model>
index 4618fd24e4c1a3e29f68ac766fe435f7d33b119b..e8cd88a7558d1f92ab8545724fae0ed118d8ac05 100644 (file)
       <feature policy='require' name='vmx-rdseed-exit'/>
       <feature policy='require' name='vmx-pml'/>
       <feature policy='require' name='vmx-xsaves'/>
+      <feature policy='require' name='vmx-invvpid'/>
+      <feature policy='require' name='vmx-invvpid-single-addr'/>
+      <feature policy='require' name='vmx-invvpid-all-context'/>
+      <feature policy='require' name='vmx-ept-execonly'/>
+      <feature policy='require' name='vmx-page-walk-4'/>
+      <feature policy='require' name='vmx-ept-2mb'/>
+      <feature policy='require' name='vmx-ept-1gb'/>
+      <feature policy='require' name='vmx-invept'/>
+      <feature policy='require' name='vmx-eptad'/>
+      <feature policy='require' name='vmx-invept-single-context'/>
+      <feature policy='require' name='vmx-invept-all-context'/>
     </mode>
     <mode name='custom' supported='yes'>
       <model usable='yes' vendor='unknown'>qemu64</model>
index 22e4023886756e57dce5b7842261450a10fdcddd..7f06d6c410bc653ae52f76335c666f632cbf349e 100644 (file)
@@ -12,7 +12,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \
 -object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes \
 -machine pc-q35-4.2,usb=off,dump-guest-core=off \
 -accel kvm \
--cpu Skylake-Client-IBRS,ss=on,vmx=on,hypervisor=on,tsc-adjust=on,clflushopt=on,umip=on,md-clear=on,stibp=on,arch-capabilities=on,ssbd=on,xsaves=on,pdpe1gb=on,skip-l1dfl-vmentry=on,pschange-mc-no=on,vmx-ins-outs=on,vmx-true-ctls=on,vmx-store-lma=on,vmx-activity-hlt=on,vmx-vmwrite-vmexit-fields=on,vmx-apicv-xapic=on,vmx-ept=on,vmx-desc-exit=on,vmx-rdtscp-exit=on,vmx-apicv-x2apic=on,vmx-vpid=on,vmx-wbinvd-exit=on,vmx-unrestricted-guest=on,vmx-rdrand-exit=on,vmx-invpcid-exit=on,vmx-vmfunc=on,vmx-shadow-vmcs=on,vmx-rdseed-exit=on,vmx-pml=on,vmx-xsaves=on \
+-cpu Skylake-Client-IBRS,ss=on,vmx=on,hypervisor=on,tsc-adjust=on,clflushopt=on,umip=on,md-clear=on,stibp=on,arch-capabilities=on,ssbd=on,xsaves=on,pdpe1gb=on,skip-l1dfl-vmentry=on,pschange-mc-no=on,vmx-ins-outs=on,vmx-true-ctls=on,vmx-store-lma=on,vmx-activity-hlt=on,vmx-vmwrite-vmexit-fields=on,vmx-apicv-xapic=on,vmx-ept=on,vmx-desc-exit=on,vmx-rdtscp-exit=on,vmx-apicv-x2apic=on,vmx-vpid=on,vmx-wbinvd-exit=on,vmx-unrestricted-guest=on,vmx-rdrand-exit=on,vmx-invpcid-exit=on,vmx-vmfunc=on,vmx-shadow-vmcs=on,vmx-rdseed-exit=on,vmx-pml=on,vmx-xsaves=on,vmx-invvpid=on,vmx-invvpid-single-addr=on,vmx-invvpid-all-context=on,vmx-ept-execonly=on,vmx-page-walk-4=on,vmx-ept-2mb=on,vmx-ept-1gb=on,vmx-invept=on,vmx-eptad=on,vmx-invept-single-context=on,vmx-invept-all-context=on \
 -m size=219136k \
 -overcommit mem-lock=off \
 -smp 1,sockets=1,cores=1,threads=1 \
index df890b9f8972e541a171c61ddb297494d44a9bb8..030d129e667f2ebb245ae6c668528f16ffc76915 100644 (file)
@@ -12,7 +12,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \
 -object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes \
 -machine pc-q35-5.0,usb=off,dump-guest-core=off \
 -accel kvm \
--cpu Skylake-Client-IBRS,ss=on,vmx=on,hypervisor=on,tsc-adjust=on,clflushopt=on,umip=on,md-clear=on,stibp=on,arch-capabilities=on,ssbd=on,xsaves=on,pdpe1gb=on,skip-l1dfl-vmentry=on,pschange-mc-no=on,vmx-ins-outs=on,vmx-true-ctls=on,vmx-store-lma=on,vmx-activity-hlt=on,vmx-vmwrite-vmexit-fields=on,vmx-apicv-xapic=on,vmx-ept=on,vmx-desc-exit=on,vmx-rdtscp-exit=on,vmx-apicv-x2apic=on,vmx-vpid=on,vmx-wbinvd-exit=on,vmx-unrestricted-guest=on,vmx-rdrand-exit=on,vmx-invpcid-exit=on,vmx-vmfunc=on,vmx-shadow-vmcs=on,vmx-rdseed-exit=on,vmx-pml=on,vmx-xsaves=on \
+-cpu Skylake-Client-IBRS,ss=on,vmx=on,hypervisor=on,tsc-adjust=on,clflushopt=on,umip=on,md-clear=on,stibp=on,arch-capabilities=on,ssbd=on,xsaves=on,pdpe1gb=on,skip-l1dfl-vmentry=on,pschange-mc-no=on,vmx-ins-outs=on,vmx-true-ctls=on,vmx-store-lma=on,vmx-activity-hlt=on,vmx-vmwrite-vmexit-fields=on,vmx-apicv-xapic=on,vmx-ept=on,vmx-desc-exit=on,vmx-rdtscp-exit=on,vmx-apicv-x2apic=on,vmx-vpid=on,vmx-wbinvd-exit=on,vmx-unrestricted-guest=on,vmx-rdrand-exit=on,vmx-invpcid-exit=on,vmx-vmfunc=on,vmx-shadow-vmcs=on,vmx-rdseed-exit=on,vmx-pml=on,vmx-xsaves=on,vmx-invvpid=on,vmx-invvpid-single-addr=on,vmx-invvpid-all-context=on,vmx-ept-execonly=on,vmx-page-walk-4=on,vmx-ept-2mb=on,vmx-ept-1gb=on,vmx-invept=on,vmx-eptad=on,vmx-invept-single-context=on,vmx-invept-all-context=on \
 -m size=219136k \
 -overcommit mem-lock=off \
 -smp 1,sockets=1,cores=1,threads=1 \