[PATCH 02/29] cpu_map: Add a few missing features to 0x80000021 CPUID leaf

Jiri Denemark via Devel posted 29 patches 2 weeks ago
[PATCH 02/29] cpu_map: Add a few missing features to 0x80000021 CPUID leaf
Posted by Jiri Denemark via Devel 2 weeks ago
From: Jiri Denemark <jdenemar@redhat.com>

QEMU commit dfd5b456108a75588ab094358ba5754787146d3d

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
---
 src/cpu_map/sync_qemu_models_i386.py                        | 2 ++
 src/cpu_map/x86_features.xml                                | 6 ++++++
 .../cputestdata/x86_64-cpuid-EPYC-9334-32-Core-disabled.xml | 1 +
 tests/cputestdata/x86_64-cpuid-EPYC-9334-32-Core-guest.xml  | 1 +
 tests/cputestdata/x86_64-cpuid-EPYC-9334-32-Core-host.xml   | 1 +
 tests/domaincapsdata/qemu_10.2.0-q35.x86_64.xml             | 2 ++
 tests/domaincapsdata/qemu_10.2.0.x86_64.xml                 | 2 ++
 .../cpu-host-model-fallback-kvm.x86_64-latest.args          | 2 +-
 .../cpu-host-model-features.x86_64-latest.args              | 2 +-
 tests/qemuxmlconfdata/cpu-host-model-kvm.x86_64-latest.args | 2 +-
 .../cpu-host-model-nofallback-kvm.x86_64-latest.args        | 2 +-
 11 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/src/cpu_map/sync_qemu_models_i386.py b/src/cpu_map/sync_qemu_models_i386.py
index f3e9a0dcde..3ef34572c0 100755
--- a/src/cpu_map/sync_qemu_models_i386.py
+++ b/src/cpu_map/sync_qemu_models_i386.py
@@ -108,6 +108,8 @@ def translate_feature(name):
             "lfence-always-serializing",
         "CPUID_8000_0021_EAX_NULL_SEL_CLR_BASE": "null-sel-clr-base",
         "CPUID_8000_0021_EAX_No_NESTED_DATA_BP": "no-nested-data-bp",
+        "CPUID_8000_0021_EAX_FS_GS_BASE_NS": "fs-gs-base-ns",
+        "CPUID_8000_0021_EAX_PREFETCHI": "prefetchi",
         "CPUID_ACPI": "acpi",
         "CPUID_APIC": "apic",
         "CPUID_CLFLUSH": "clflush",
diff --git a/src/cpu_map/x86_features.xml b/src/cpu_map/x86_features.xml
index 8a0e786aea..043f876c3e 100644
--- a/src/cpu_map/x86_features.xml
+++ b/src/cpu_map/x86_features.xml
@@ -803,6 +803,9 @@
   <feature name='no-nested-data-bp'>
     <cpuid eax_in='0x80000021' eax='0x00000001'/>
   </feature>
+  <feature name='fs-gs-base-ns'>
+    <cpuid eax_in='0x80000021' eax='0x00000002'/>
+  </feature>
   <feature name='lfence-always-serializing'>
     <cpuid eax_in='0x80000021' eax='0x00000004'/>
   </feature>
@@ -812,6 +815,9 @@
   <feature name='auto-ibrs'>
     <cpuid eax_in='0x80000021' eax='0x00000100'/>
   </feature>
+  <feature name='prefetchi'>
+    <cpuid eax_in='0x80000021' eax='0x00100000'/>
+  </feature>
   <feature name='eraps'>
     <cpuid eax_in='0x80000021' eax='0x01000000'/>
   </feature>
diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-9334-32-Core-disabled.xml b/tests/cputestdata/x86_64-cpuid-EPYC-9334-32-Core-disabled.xml
index 7db00c4075..a5f3f1ba1d 100644
--- a/tests/cputestdata/x86_64-cpuid-EPYC-9334-32-Core-disabled.xml
+++ b/tests/cputestdata/x86_64-cpuid-EPYC-9334-32-Core-disabled.xml
@@ -6,4 +6,5 @@
   <cpuid eax_in='0x80000001' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x01423408' edx='0x00000000'/>
   <cpuid eax_in='0x80000007' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000100'/>
   <cpuid eax_in='0x8000000a' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00002084'/>
+  <cpuid eax_in='0x80000021' ecx_in='0x00' eax='0x00000002' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
 </cpudata>
diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-9334-32-Core-guest.xml b/tests/cputestdata/x86_64-cpuid-EPYC-9334-32-Core-guest.xml
index c7097f9c73..1ef9a4a365 100644
--- a/tests/cputestdata/x86_64-cpuid-EPYC-9334-32-Core-guest.xml
+++ b/tests/cputestdata/x86_64-cpuid-EPYC-9334-32-Core-guest.xml
@@ -32,6 +32,7 @@
   <feature policy='require' name='avic'/>
   <feature policy='require' name='v-vmsave-vmload'/>
   <feature policy='require' name='vgif'/>
+  <feature policy='require' name='fs-gs-base-ns'/>
   <feature policy='require' name='perfmon-v2'/>
   <feature policy='require' name='rdctl-no'/>
   <feature policy='require' name='skip-l1dfl-vmentry'/>
diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-9334-32-Core-host.xml b/tests/cputestdata/x86_64-cpuid-EPYC-9334-32-Core-host.xml
index ef3a89733b..cdf23b7a60 100644
--- a/tests/cputestdata/x86_64-cpuid-EPYC-9334-32-Core-host.xml
+++ b/tests/cputestdata/x86_64-cpuid-EPYC-9334-32-Core-host.xml
@@ -34,6 +34,7 @@
   <feature name='avic'/>
   <feature name='v-vmsave-vmload'/>
   <feature name='vgif'/>
+  <feature name='fs-gs-base-ns'/>
   <feature name='perfmon-v2'/>
   <feature name='rdctl-no'/>
   <feature name='skip-l1dfl-vmentry'/>
diff --git a/tests/domaincapsdata/qemu_10.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_10.2.0-q35.x86_64.xml
index ed78d225ba..8f78fc1d2d 100644
--- a/tests/domaincapsdata/qemu_10.2.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_10.2.0-q35.x86_64.xml
@@ -69,6 +69,8 @@
       <feature policy='require' name='pfthreshold'/>
       <feature policy='require' name='v-vmsave-vmload'/>
       <feature policy='require' name='vgif'/>
+      <feature policy='require' name='fs-gs-base-ns'/>
+      <feature policy='require' name='prefetchi'/>
       <feature policy='require' name='sbpb'/>
       <feature policy='require' name='ibpb-brtype'/>
       <feature policy='require' name='srso-user-kernel-no'/>
diff --git a/tests/domaincapsdata/qemu_10.2.0.x86_64.xml b/tests/domaincapsdata/qemu_10.2.0.x86_64.xml
index d6988a17c3..d12500658a 100644
--- a/tests/domaincapsdata/qemu_10.2.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_10.2.0.x86_64.xml
@@ -68,6 +68,8 @@
       <feature policy='require' name='pfthreshold'/>
       <feature policy='require' name='v-vmsave-vmload'/>
       <feature policy='require' name='vgif'/>
+      <feature policy='require' name='fs-gs-base-ns'/>
+      <feature policy='require' name='prefetchi'/>
       <feature policy='require' name='sbpb'/>
       <feature policy='require' name='ibpb-brtype'/>
       <feature policy='require' name='srso-user-kernel-no'/>
diff --git a/tests/qemuxmlconfdata/cpu-host-model-fallback-kvm.x86_64-latest.args b/tests/qemuxmlconfdata/cpu-host-model-fallback-kvm.x86_64-latest.args
index 7c5f5ffbb3..642dcd3035 100644
--- a/tests/qemuxmlconfdata/cpu-host-model-fallback-kvm.x86_64-latest.args
+++ b/tests/qemuxmlconfdata/cpu-host-model-fallback-kvm.x86_64-latest.args
@@ -12,7 +12,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \
 -object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \
 -machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=off \
 -accel kvm \
--cpu EPYC-Genoa,x2apic=on,tsc-deadline=on,hypervisor=on,tsc-adjust=on,movdiri=on,movdir64b=on,avx512-vp2intersect=on,spec-ctrl=on,stibp=on,flush-l1d=on,ssbd=on,avx-vnni=on,cmp-legacy=on,overflow-recov=on,succor=on,virt-ssbd=on,lbrv=on,tsc-scale=on,vmcb-clean=on,flushbyasid=on,pause-filter=on,pfthreshold=on,v-vmsave-vmload=on,vgif=on,sbpb=on,ibpb-brtype=on,srso-user-kernel-no=on,perfmon-v2=on,pcid=off,la57=off \
+-cpu EPYC-Genoa,x2apic=on,tsc-deadline=on,hypervisor=on,tsc-adjust=on,movdiri=on,movdir64b=on,avx512-vp2intersect=on,spec-ctrl=on,stibp=on,flush-l1d=on,ssbd=on,avx-vnni=on,cmp-legacy=on,overflow-recov=on,succor=on,virt-ssbd=on,lbrv=on,tsc-scale=on,vmcb-clean=on,flushbyasid=on,pause-filter=on,pfthreshold=on,v-vmsave-vmload=on,vgif=on,fs-gs-base-ns=on,prefetchi=on,sbpb=on,ibpb-brtype=on,srso-user-kernel-no=on,perfmon-v2=on,pcid=off,la57=off \
 -m size=219136k \
 -object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}' \
 -overcommit mem-lock=off \
diff --git a/tests/qemuxmlconfdata/cpu-host-model-features.x86_64-latest.args b/tests/qemuxmlconfdata/cpu-host-model-features.x86_64-latest.args
index 99cea80a35..8db71ce1fc 100644
--- a/tests/qemuxmlconfdata/cpu-host-model-features.x86_64-latest.args
+++ b/tests/qemuxmlconfdata/cpu-host-model-features.x86_64-latest.args
@@ -12,7 +12,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \
 -object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \
 -machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=off \
 -accel kvm \
--cpu EPYC-Genoa,x2apic=on,tsc-deadline=on,hypervisor=on,tsc-adjust=on,movdiri=on,movdir64b=on,avx512-vp2intersect=on,spec-ctrl=on,stibp=on,flush-l1d=on,ssbd=on,avx-vnni=on,cmp-legacy=on,overflow-recov=on,succor=on,virt-ssbd=on,lbrv=on,tsc-scale=on,vmcb-clean=on,flushbyasid=on,pause-filter=on,pfthreshold=on,v-vmsave-vmload=on,vgif=on,sbpb=on,ibpb-brtype=on,srso-user-kernel-no=on,perfmon-v2=on,pcid=off,la57=off,abm=on,ds=on,invtsc=off \
+-cpu EPYC-Genoa,x2apic=on,tsc-deadline=on,hypervisor=on,tsc-adjust=on,movdiri=on,movdir64b=on,avx512-vp2intersect=on,spec-ctrl=on,stibp=on,flush-l1d=on,ssbd=on,avx-vnni=on,cmp-legacy=on,overflow-recov=on,succor=on,virt-ssbd=on,lbrv=on,tsc-scale=on,vmcb-clean=on,flushbyasid=on,pause-filter=on,pfthreshold=on,v-vmsave-vmload=on,vgif=on,fs-gs-base-ns=on,prefetchi=on,sbpb=on,ibpb-brtype=on,srso-user-kernel-no=on,perfmon-v2=on,pcid=off,la57=off,abm=on,ds=on,invtsc=off \
 -m size=219136k \
 -object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}' \
 -overcommit mem-lock=off \
diff --git a/tests/qemuxmlconfdata/cpu-host-model-kvm.x86_64-latest.args b/tests/qemuxmlconfdata/cpu-host-model-kvm.x86_64-latest.args
index 7ab53e790a..a2197d382e 100644
--- a/tests/qemuxmlconfdata/cpu-host-model-kvm.x86_64-latest.args
+++ b/tests/qemuxmlconfdata/cpu-host-model-kvm.x86_64-latest.args
@@ -12,7 +12,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \
 -object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \
 -machine q35,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=off \
 -accel kvm \
--cpu EPYC-Genoa,x2apic=on,tsc-deadline=on,hypervisor=on,tsc-adjust=on,movdiri=on,movdir64b=on,avx512-vp2intersect=on,spec-ctrl=on,stibp=on,flush-l1d=on,ssbd=on,avx-vnni=on,cmp-legacy=on,overflow-recov=on,succor=on,virt-ssbd=on,lbrv=on,tsc-scale=on,vmcb-clean=on,flushbyasid=on,pause-filter=on,pfthreshold=on,v-vmsave-vmload=on,vgif=on,sbpb=on,ibpb-brtype=on,srso-user-kernel-no=on,perfmon-v2=on,pcid=off,la57=off \
+-cpu EPYC-Genoa,x2apic=on,tsc-deadline=on,hypervisor=on,tsc-adjust=on,movdiri=on,movdir64b=on,avx512-vp2intersect=on,spec-ctrl=on,stibp=on,flush-l1d=on,ssbd=on,avx-vnni=on,cmp-legacy=on,overflow-recov=on,succor=on,virt-ssbd=on,lbrv=on,tsc-scale=on,vmcb-clean=on,flushbyasid=on,pause-filter=on,pfthreshold=on,v-vmsave-vmload=on,vgif=on,fs-gs-base-ns=on,prefetchi=on,sbpb=on,ibpb-brtype=on,srso-user-kernel-no=on,perfmon-v2=on,pcid=off,la57=off \
 -m size=219136k \
 -object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}' \
 -overcommit mem-lock=off \
diff --git a/tests/qemuxmlconfdata/cpu-host-model-nofallback-kvm.x86_64-latest.args b/tests/qemuxmlconfdata/cpu-host-model-nofallback-kvm.x86_64-latest.args
index 7c5f5ffbb3..642dcd3035 100644
--- a/tests/qemuxmlconfdata/cpu-host-model-nofallback-kvm.x86_64-latest.args
+++ b/tests/qemuxmlconfdata/cpu-host-model-nofallback-kvm.x86_64-latest.args
@@ -12,7 +12,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \
 -object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \
 -machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=off \
 -accel kvm \
--cpu EPYC-Genoa,x2apic=on,tsc-deadline=on,hypervisor=on,tsc-adjust=on,movdiri=on,movdir64b=on,avx512-vp2intersect=on,spec-ctrl=on,stibp=on,flush-l1d=on,ssbd=on,avx-vnni=on,cmp-legacy=on,overflow-recov=on,succor=on,virt-ssbd=on,lbrv=on,tsc-scale=on,vmcb-clean=on,flushbyasid=on,pause-filter=on,pfthreshold=on,v-vmsave-vmload=on,vgif=on,sbpb=on,ibpb-brtype=on,srso-user-kernel-no=on,perfmon-v2=on,pcid=off,la57=off \
+-cpu EPYC-Genoa,x2apic=on,tsc-deadline=on,hypervisor=on,tsc-adjust=on,movdiri=on,movdir64b=on,avx512-vp2intersect=on,spec-ctrl=on,stibp=on,flush-l1d=on,ssbd=on,avx-vnni=on,cmp-legacy=on,overflow-recov=on,succor=on,virt-ssbd=on,lbrv=on,tsc-scale=on,vmcb-clean=on,flushbyasid=on,pause-filter=on,pfthreshold=on,v-vmsave-vmload=on,vgif=on,fs-gs-base-ns=on,prefetchi=on,sbpb=on,ibpb-brtype=on,srso-user-kernel-no=on,perfmon-v2=on,pcid=off,la57=off \
 -m size=219136k \
 -object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}' \
 -overcommit mem-lock=off \
-- 
2.51.0