]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
domaincapstest: Use proper input file based on 'variant' in 'fillQemuCaps'
authorPeter Krempa <pkrempa@redhat.com>
Mon, 3 Mar 2025 17:18:06 +0000 (18:18 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 6 Mar 2025 12:04:25 +0000 (13:04 +0100)
The qemu part of 'domaincapstest' supports testing of the '+hvf' variant
of files, but doesn't properly pick the input file. The input file lacks
the variant part thus the wrong file is used.

Propagate the variant and select the correct input file.

Fixes: 738c5bae888cfa72ed359899cf1a41fed9dbb0f5
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
tests/domaincapsdata/qemu_7.0.0-hvf.aarch64+hvf.xml
tests/domaincapsdata/qemu_7.2.0-hvf.x86_64+hvf.xml
tests/domaincapstest.c

index bf130dde1075b2236ac1dd7ac5d3ae718a161dc7..e3d4dbd3dba5fd78175312feb15ae328af52578a 100644 (file)
@@ -3,6 +3,7 @@
   <domain>hvf</domain>
   <machine>virt-7.0</machine>
   <arch>aarch64</arch>
+  <vcpu max='512'/>
   <iothreads supported='yes'/>
   <os supported='yes'>
     <enum name='firmware'>
       </enum>
     </mode>
     <mode name='host-model' supported='no'/>
-    <mode name='custom' supported='no'/>
+    <mode name='custom' supported='yes'>
+      <model usable='unknown' vendor='unknown'>a64fx</model>
+      <model usable='unknown' vendor='unknown'>arm1026</model>
+      <model usable='unknown' vendor='unknown'>arm1136</model>
+      <model usable='unknown' vendor='unknown'>arm1136-r2</model>
+      <model usable='unknown' vendor='unknown'>arm1176</model>
+      <model usable='unknown' vendor='unknown'>arm11mpcore</model>
+      <model usable='unknown' vendor='unknown'>arm926</model>
+      <model usable='unknown' vendor='unknown'>arm946</model>
+      <model usable='unknown' vendor='unknown'>cortex-a15</model>
+      <model usable='unknown' vendor='unknown'>cortex-a53</model>
+      <model usable='unknown' vendor='unknown'>cortex-a57</model>
+      <model usable='unknown' vendor='unknown'>cortex-a7</model>
+      <model usable='unknown' vendor='unknown'>cortex-a72</model>
+      <model usable='unknown' vendor='unknown'>cortex-a8</model>
+      <model usable='unknown' vendor='unknown'>cortex-a9</model>
+      <model usable='unknown' vendor='unknown'>cortex-m0</model>
+      <model usable='unknown' vendor='unknown'>cortex-m3</model>
+      <model usable='unknown' vendor='unknown'>cortex-m33</model>
+      <model usable='unknown' vendor='unknown'>cortex-m4</model>
+      <model usable='unknown' vendor='unknown'>cortex-m55</model>
+      <model usable='unknown' vendor='unknown'>cortex-m7</model>
+      <model usable='unknown' vendor='unknown'>cortex-r5</model>
+      <model usable='unknown' vendor='unknown'>cortex-r5f</model>
+      <model usable='unknown' vendor='unknown'>max</model>
+      <model usable='unknown' vendor='unknown'>pxa250</model>
+      <model usable='unknown' vendor='unknown'>pxa255</model>
+      <model usable='unknown' vendor='unknown'>pxa260</model>
+      <model usable='unknown' vendor='unknown'>pxa261</model>
+      <model usable='unknown' vendor='unknown'>pxa262</model>
+      <model usable='unknown' vendor='unknown'>pxa270</model>
+      <model usable='unknown' vendor='unknown'>pxa270-a0</model>
+      <model usable='unknown' vendor='unknown'>pxa270-a1</model>
+      <model usable='unknown' vendor='unknown'>pxa270-b0</model>
+      <model usable='unknown' vendor='unknown'>pxa270-b1</model>
+      <model usable='unknown' vendor='unknown'>pxa270-c0</model>
+      <model usable='unknown' vendor='unknown'>pxa270-c5</model>
+      <model usable='unknown' vendor='unknown'>sa1100</model>
+      <model usable='unknown' vendor='unknown'>sa1110</model>
+      <model usable='unknown' vendor='unknown'>ti925t</model>
+    </mode>
   </cpu>
   <memoryBacking supported='yes'>
     <enum name='sourceType'>
index 75b2f1102d1a3d7bc3bc278d293c8eb97d9ed19b..ce2e4f9f3735f3907967a4d9945953c1444bed17 100644 (file)
@@ -3,6 +3,7 @@
   <domain>hvf</domain>
   <machine>pc-i440fx-7.2</machine>
   <arch>x86_64</arch>
+  <vcpu max='255'/>
   <iothreads supported='yes'/>
   <os supported='yes'>
     <enum name='firmware'>
         <value>off</value>
       </enum>
     </mode>
-    <mode name='host-model' supported='no'/>
-    <mode name='custom' supported='no'/>
+    <mode name='host-model' supported='yes'>
+      <model fallback='forbid'>EPYC-Rome</model>
+      <vendor>AMD</vendor>
+      <maxphysaddr mode='passthrough' limit='64'/>
+      <feature policy='require' name='x2apic'/>
+      <feature policy='require' name='tsc-deadline'/>
+      <feature policy='require' name='hypervisor'/>
+      <feature policy='require' name='tsc_adjust'/>
+      <feature policy='require' name='stibp'/>
+      <feature policy='require' name='arch-capabilities'/>
+      <feature policy='require' name='ssbd'/>
+      <feature policy='require' name='xsaves'/>
+      <feature policy='require' name='cmp_legacy'/>
+      <feature policy='require' name='invtsc'/>
+      <feature policy='require' name='amd-ssbd'/>
+      <feature policy='require' name='virt-ssbd'/>
+      <feature policy='require' name='lbrv'/>
+      <feature policy='require' name='tsc-scale'/>
+      <feature policy='require' name='vmcb-clean'/>
+      <feature policy='require' name='pause-filter'/>
+      <feature policy='require' name='pfthreshold'/>
+      <feature policy='require' name='v-vmsave-vmload'/>
+      <feature policy='require' name='vgif'/>
+      <feature policy='require' name='svme-addr-chk'/>
+      <feature policy='require' name='rdctl-no'/>
+      <feature policy='require' name='skip-l1dfl-vmentry'/>
+      <feature policy='require' name='mds-no'/>
+      <feature policy='require' name='pschange-mc-no'/>
+    </mode>
+    <mode name='custom' supported='yes'>
+      <model usable='yes' vendor='unknown' canonical='486-v1'>486</model>
+      <model usable='yes' vendor='unknown'>486-v1</model>
+      <model usable='no' vendor='Intel' canonical='Broadwell-v1'>Broadwell</model>
+      <blockers model='Broadwell'>
+        <feature name='erms'/>
+        <feature name='hle'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='rtm'/>
+      </blockers>
+      <model usable='no' vendor='Intel' canonical='Broadwell-v3'>Broadwell-IBRS</model>
+      <blockers model='Broadwell-IBRS'>
+        <feature name='erms'/>
+        <feature name='hle'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='rtm'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='Intel' canonical='Broadwell-v2'>Broadwell-noTSX</model>
+      <blockers model='Broadwell-noTSX'>
+        <feature name='erms'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+      </blockers>
+      <model usable='no' vendor='Intel' canonical='Broadwell-v4'>Broadwell-noTSX-IBRS</model>
+      <blockers model='Broadwell-noTSX-IBRS'>
+        <feature name='erms'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Broadwell-v1</model>
+      <blockers model='Broadwell-v1'>
+        <feature name='erms'/>
+        <feature name='hle'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='rtm'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Broadwell-v2</model>
+      <blockers model='Broadwell-v2'>
+        <feature name='erms'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Broadwell-v3</model>
+      <blockers model='Broadwell-v3'>
+        <feature name='erms'/>
+        <feature name='hle'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='rtm'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Broadwell-v4</model>
+      <blockers model='Broadwell-v4'>
+        <feature name='erms'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='Intel' canonical='Cascadelake-Server-v1'>Cascadelake-Server</model>
+      <blockers model='Cascadelake-Server'>
+        <feature name='avx512bw'/>
+        <feature name='avx512cd'/>
+        <feature name='avx512dq'/>
+        <feature name='avx512f'/>
+        <feature name='avx512vl'/>
+        <feature name='avx512vnni'/>
+        <feature name='erms'/>
+        <feature name='hle'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='pku'/>
+        <feature name='rtm'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='Intel' canonical='Cascadelake-Server-v3'>Cascadelake-Server-noTSX</model>
+      <blockers model='Cascadelake-Server-noTSX'>
+        <feature name='avx512bw'/>
+        <feature name='avx512cd'/>
+        <feature name='avx512dq'/>
+        <feature name='avx512f'/>
+        <feature name='avx512vl'/>
+        <feature name='avx512vnni'/>
+        <feature name='erms'/>
+        <feature name='ibrs-all'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='pku'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Cascadelake-Server-v1</model>
+      <blockers model='Cascadelake-Server-v1'>
+        <feature name='avx512bw'/>
+        <feature name='avx512cd'/>
+        <feature name='avx512dq'/>
+        <feature name='avx512f'/>
+        <feature name='avx512vl'/>
+        <feature name='avx512vnni'/>
+        <feature name='erms'/>
+        <feature name='hle'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='pku'/>
+        <feature name='rtm'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Cascadelake-Server-v2</model>
+      <blockers model='Cascadelake-Server-v2'>
+        <feature name='avx512bw'/>
+        <feature name='avx512cd'/>
+        <feature name='avx512dq'/>
+        <feature name='avx512f'/>
+        <feature name='avx512vl'/>
+        <feature name='avx512vnni'/>
+        <feature name='erms'/>
+        <feature name='hle'/>
+        <feature name='ibrs-all'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='pku'/>
+        <feature name='rtm'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Cascadelake-Server-v3</model>
+      <blockers model='Cascadelake-Server-v3'>
+        <feature name='avx512bw'/>
+        <feature name='avx512cd'/>
+        <feature name='avx512dq'/>
+        <feature name='avx512f'/>
+        <feature name='avx512vl'/>
+        <feature name='avx512vnni'/>
+        <feature name='erms'/>
+        <feature name='ibrs-all'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='pku'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Cascadelake-Server-v4</model>
+      <blockers model='Cascadelake-Server-v4'>
+        <feature name='avx512bw'/>
+        <feature name='avx512cd'/>
+        <feature name='avx512dq'/>
+        <feature name='avx512f'/>
+        <feature name='avx512vl'/>
+        <feature name='avx512vnni'/>
+        <feature name='erms'/>
+        <feature name='ibrs-all'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='pku'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Cascadelake-Server-v5</model>
+      <blockers model='Cascadelake-Server-v5'>
+        <feature name='avx512bw'/>
+        <feature name='avx512cd'/>
+        <feature name='avx512dq'/>
+        <feature name='avx512f'/>
+        <feature name='avx512vl'/>
+        <feature name='avx512vnni'/>
+        <feature name='erms'/>
+        <feature name='ibrs-all'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='pku'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='yes' vendor='Intel' canonical='Conroe-v1'>Conroe</model>
+      <model usable='yes' vendor='Intel'>Conroe-v1</model>
+      <model usable='no' vendor='Intel' canonical='Cooperlake-v1'>Cooperlake</model>
+      <blockers model='Cooperlake'>
+        <feature name='avx512-bf16'/>
+        <feature name='avx512bw'/>
+        <feature name='avx512cd'/>
+        <feature name='avx512dq'/>
+        <feature name='avx512f'/>
+        <feature name='avx512vl'/>
+        <feature name='avx512vnni'/>
+        <feature name='erms'/>
+        <feature name='hle'/>
+        <feature name='ibrs-all'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='pku'/>
+        <feature name='rtm'/>
+        <feature name='spec-ctrl'/>
+        <feature name='taa-no'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Cooperlake-v1</model>
+      <blockers model='Cooperlake-v1'>
+        <feature name='avx512-bf16'/>
+        <feature name='avx512bw'/>
+        <feature name='avx512cd'/>
+        <feature name='avx512dq'/>
+        <feature name='avx512f'/>
+        <feature name='avx512vl'/>
+        <feature name='avx512vnni'/>
+        <feature name='erms'/>
+        <feature name='hle'/>
+        <feature name='ibrs-all'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='pku'/>
+        <feature name='rtm'/>
+        <feature name='spec-ctrl'/>
+        <feature name='taa-no'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Cooperlake-v2</model>
+      <blockers model='Cooperlake-v2'>
+        <feature name='avx512-bf16'/>
+        <feature name='avx512bw'/>
+        <feature name='avx512cd'/>
+        <feature name='avx512dq'/>
+        <feature name='avx512f'/>
+        <feature name='avx512vl'/>
+        <feature name='avx512vnni'/>
+        <feature name='erms'/>
+        <feature name='hle'/>
+        <feature name='ibrs-all'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='pku'/>
+        <feature name='rtm'/>
+        <feature name='spec-ctrl'/>
+        <feature name='taa-no'/>
+      </blockers>
+      <model usable='no' vendor='Intel' canonical='Denverton-v1'>Denverton</model>
+      <blockers model='Denverton'>
+        <feature name='erms'/>
+        <feature name='mpx'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Denverton-v1</model>
+      <blockers model='Denverton-v1'>
+        <feature name='erms'/>
+        <feature name='mpx'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Denverton-v2</model>
+      <blockers model='Denverton-v2'>
+        <feature name='erms'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Denverton-v3</model>
+      <blockers model='Denverton-v3'>
+        <feature name='erms'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='yes' vendor='Hygon' canonical='Dhyana-v1'>Dhyana</model>
+      <model usable='yes' vendor='Hygon'>Dhyana-v1</model>
+      <model usable='yes' vendor='Hygon'>Dhyana-v2</model>
+      <model usable='yes' vendor='AMD' canonical='EPYC-v1'>EPYC</model>
+      <model usable='yes' vendor='AMD' canonical='EPYC-v2'>EPYC-IBPB</model>
+      <model usable='no' vendor='AMD' canonical='EPYC-Milan-v1'>EPYC-Milan</model>
+      <blockers model='EPYC-Milan'>
+        <feature name='erms'/>
+        <feature name='fsrm'/>
+        <feature name='ibrs'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='pku'/>
+      </blockers>
+      <model usable='no' vendor='AMD'>EPYC-Milan-v1</model>
+      <blockers model='EPYC-Milan-v1'>
+        <feature name='erms'/>
+        <feature name='fsrm'/>
+        <feature name='ibrs'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='pku'/>
+      </blockers>
+      <model usable='yes' vendor='AMD' canonical='EPYC-Rome-v1'>EPYC-Rome</model>
+      <model usable='yes' vendor='AMD'>EPYC-Rome-v1</model>
+      <model usable='no' vendor='AMD'>EPYC-Rome-v2</model>
+      <blockers model='EPYC-Rome-v2'>
+        <feature name='ibrs'/>
+      </blockers>
+      <model usable='yes' vendor='AMD'>EPYC-v1</model>
+      <model usable='yes' vendor='AMD'>EPYC-v2</model>
+      <model usable='yes' vendor='AMD'>EPYC-v3</model>
+      <model usable='no' vendor='Intel' canonical='Haswell-v1'>Haswell</model>
+      <blockers model='Haswell'>
+        <feature name='erms'/>
+        <feature name='hle'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='rtm'/>
+      </blockers>
+      <model usable='no' vendor='Intel' canonical='Haswell-v3'>Haswell-IBRS</model>
+      <blockers model='Haswell-IBRS'>
+        <feature name='erms'/>
+        <feature name='hle'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='rtm'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='Intel' canonical='Haswell-v2'>Haswell-noTSX</model>
+      <blockers model='Haswell-noTSX'>
+        <feature name='erms'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+      </blockers>
+      <model usable='no' vendor='Intel' canonical='Haswell-v4'>Haswell-noTSX-IBRS</model>
+      <blockers model='Haswell-noTSX-IBRS'>
+        <feature name='erms'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Haswell-v1</model>
+      <blockers model='Haswell-v1'>
+        <feature name='erms'/>
+        <feature name='hle'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='rtm'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Haswell-v2</model>
+      <blockers model='Haswell-v2'>
+        <feature name='erms'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Haswell-v3</model>
+      <blockers model='Haswell-v3'>
+        <feature name='erms'/>
+        <feature name='hle'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='rtm'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Haswell-v4</model>
+      <blockers model='Haswell-v4'>
+        <feature name='erms'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='Intel' canonical='Icelake-Server-v1'>Icelake-Server</model>
+      <blockers model='Icelake-Server'>
+        <feature name='avx512-vpopcntdq'/>
+        <feature name='avx512bitalg'/>
+        <feature name='avx512bw'/>
+        <feature name='avx512cd'/>
+        <feature name='avx512dq'/>
+        <feature name='avx512f'/>
+        <feature name='avx512vbmi'/>
+        <feature name='avx512vbmi2'/>
+        <feature name='avx512vl'/>
+        <feature name='avx512vnni'/>
+        <feature name='erms'/>
+        <feature name='gfni'/>
+        <feature name='hle'/>
+        <feature name='invpcid'/>
+        <feature name='la57'/>
+        <feature name='pcid'/>
+        <feature name='pku'/>
+        <feature name='rtm'/>
+        <feature name='spec-ctrl'/>
+        <feature name='vaes'/>
+        <feature name='vpclmulqdq'/>
+      </blockers>
+      <model usable='no' vendor='Intel' canonical='Icelake-Server-v2'>Icelake-Server-noTSX</model>
+      <blockers model='Icelake-Server-noTSX'>
+        <feature name='avx512-vpopcntdq'/>
+        <feature name='avx512bitalg'/>
+        <feature name='avx512bw'/>
+        <feature name='avx512cd'/>
+        <feature name='avx512dq'/>
+        <feature name='avx512f'/>
+        <feature name='avx512vbmi'/>
+        <feature name='avx512vbmi2'/>
+        <feature name='avx512vl'/>
+        <feature name='avx512vnni'/>
+        <feature name='erms'/>
+        <feature name='gfni'/>
+        <feature name='invpcid'/>
+        <feature name='la57'/>
+        <feature name='pcid'/>
+        <feature name='pku'/>
+        <feature name='spec-ctrl'/>
+        <feature name='vaes'/>
+        <feature name='vpclmulqdq'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Icelake-Server-v1</model>
+      <blockers model='Icelake-Server-v1'>
+        <feature name='avx512-vpopcntdq'/>
+        <feature name='avx512bitalg'/>
+        <feature name='avx512bw'/>
+        <feature name='avx512cd'/>
+        <feature name='avx512dq'/>
+        <feature name='avx512f'/>
+        <feature name='avx512vbmi'/>
+        <feature name='avx512vbmi2'/>
+        <feature name='avx512vl'/>
+        <feature name='avx512vnni'/>
+        <feature name='erms'/>
+        <feature name='gfni'/>
+        <feature name='hle'/>
+        <feature name='invpcid'/>
+        <feature name='la57'/>
+        <feature name='pcid'/>
+        <feature name='pku'/>
+        <feature name='rtm'/>
+        <feature name='spec-ctrl'/>
+        <feature name='vaes'/>
+        <feature name='vpclmulqdq'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Icelake-Server-v2</model>
+      <blockers model='Icelake-Server-v2'>
+        <feature name='avx512-vpopcntdq'/>
+        <feature name='avx512bitalg'/>
+        <feature name='avx512bw'/>
+        <feature name='avx512cd'/>
+        <feature name='avx512dq'/>
+        <feature name='avx512f'/>
+        <feature name='avx512vbmi'/>
+        <feature name='avx512vbmi2'/>
+        <feature name='avx512vl'/>
+        <feature name='avx512vnni'/>
+        <feature name='erms'/>
+        <feature name='gfni'/>
+        <feature name='invpcid'/>
+        <feature name='la57'/>
+        <feature name='pcid'/>
+        <feature name='pku'/>
+        <feature name='spec-ctrl'/>
+        <feature name='vaes'/>
+        <feature name='vpclmulqdq'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Icelake-Server-v3</model>
+      <blockers model='Icelake-Server-v3'>
+        <feature name='avx512-vpopcntdq'/>
+        <feature name='avx512bitalg'/>
+        <feature name='avx512bw'/>
+        <feature name='avx512cd'/>
+        <feature name='avx512dq'/>
+        <feature name='avx512f'/>
+        <feature name='avx512vbmi'/>
+        <feature name='avx512vbmi2'/>
+        <feature name='avx512vl'/>
+        <feature name='avx512vnni'/>
+        <feature name='erms'/>
+        <feature name='gfni'/>
+        <feature name='ibrs-all'/>
+        <feature name='invpcid'/>
+        <feature name='la57'/>
+        <feature name='pcid'/>
+        <feature name='pku'/>
+        <feature name='spec-ctrl'/>
+        <feature name='taa-no'/>
+        <feature name='vaes'/>
+        <feature name='vpclmulqdq'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Icelake-Server-v4</model>
+      <blockers model='Icelake-Server-v4'>
+        <feature name='avx512-vpopcntdq'/>
+        <feature name='avx512bitalg'/>
+        <feature name='avx512bw'/>
+        <feature name='avx512cd'/>
+        <feature name='avx512dq'/>
+        <feature name='avx512f'/>
+        <feature name='avx512ifma'/>
+        <feature name='avx512vbmi'/>
+        <feature name='avx512vbmi2'/>
+        <feature name='avx512vl'/>
+        <feature name='avx512vnni'/>
+        <feature name='erms'/>
+        <feature name='fsrm'/>
+        <feature name='gfni'/>
+        <feature name='ibrs-all'/>
+        <feature name='invpcid'/>
+        <feature name='la57'/>
+        <feature name='pcid'/>
+        <feature name='pku'/>
+        <feature name='spec-ctrl'/>
+        <feature name='taa-no'/>
+        <feature name='vaes'/>
+        <feature name='vpclmulqdq'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Icelake-Server-v5</model>
+      <blockers model='Icelake-Server-v5'>
+        <feature name='avx512-vpopcntdq'/>
+        <feature name='avx512bitalg'/>
+        <feature name='avx512bw'/>
+        <feature name='avx512cd'/>
+        <feature name='avx512dq'/>
+        <feature name='avx512f'/>
+        <feature name='avx512ifma'/>
+        <feature name='avx512vbmi'/>
+        <feature name='avx512vbmi2'/>
+        <feature name='avx512vl'/>
+        <feature name='avx512vnni'/>
+        <feature name='erms'/>
+        <feature name='fsrm'/>
+        <feature name='gfni'/>
+        <feature name='ibrs-all'/>
+        <feature name='invpcid'/>
+        <feature name='la57'/>
+        <feature name='pcid'/>
+        <feature name='pku'/>
+        <feature name='spec-ctrl'/>
+        <feature name='taa-no'/>
+        <feature name='vaes'/>
+        <feature name='vpclmulqdq'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Icelake-Server-v6</model>
+      <blockers model='Icelake-Server-v6'>
+        <feature name='avx512-vpopcntdq'/>
+        <feature name='avx512bitalg'/>
+        <feature name='avx512bw'/>
+        <feature name='avx512cd'/>
+        <feature name='avx512dq'/>
+        <feature name='avx512f'/>
+        <feature name='avx512ifma'/>
+        <feature name='avx512vbmi'/>
+        <feature name='avx512vbmi2'/>
+        <feature name='avx512vl'/>
+        <feature name='avx512vnni'/>
+        <feature name='erms'/>
+        <feature name='fsrm'/>
+        <feature name='gfni'/>
+        <feature name='ibrs-all'/>
+        <feature name='invpcid'/>
+        <feature name='la57'/>
+        <feature name='pcid'/>
+        <feature name='pku'/>
+        <feature name='spec-ctrl'/>
+        <feature name='taa-no'/>
+        <feature name='vaes'/>
+        <feature name='vpclmulqdq'/>
+      </blockers>
+      <model usable='no' vendor='Intel' canonical='IvyBridge-v1'>IvyBridge</model>
+      <blockers model='IvyBridge'>
+        <feature name='erms'/>
+      </blockers>
+      <model usable='no' vendor='Intel' canonical='IvyBridge-v2'>IvyBridge-IBRS</model>
+      <blockers model='IvyBridge-IBRS'>
+        <feature name='erms'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>IvyBridge-v1</model>
+      <blockers model='IvyBridge-v1'>
+        <feature name='erms'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>IvyBridge-v2</model>
+      <blockers model='IvyBridge-v2'>
+        <feature name='erms'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='Intel' canonical='KnightsMill-v1'>KnightsMill</model>
+      <blockers model='KnightsMill'>
+        <feature name='avx512-4fmaps'/>
+        <feature name='avx512-4vnniw'/>
+        <feature name='avx512-vpopcntdq'/>
+        <feature name='avx512cd'/>
+        <feature name='avx512er'/>
+        <feature name='avx512f'/>
+        <feature name='avx512pf'/>
+        <feature name='erms'/>
+        <feature name='ss'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>KnightsMill-v1</model>
+      <blockers model='KnightsMill-v1'>
+        <feature name='avx512-4fmaps'/>
+        <feature name='avx512-4vnniw'/>
+        <feature name='avx512-vpopcntdq'/>
+        <feature name='avx512cd'/>
+        <feature name='avx512er'/>
+        <feature name='avx512f'/>
+        <feature name='avx512pf'/>
+        <feature name='erms'/>
+        <feature name='ss'/>
+      </blockers>
+      <model usable='yes' vendor='Intel' canonical='Nehalem-v1'>Nehalem</model>
+      <model usable='no' vendor='Intel' canonical='Nehalem-v2'>Nehalem-IBRS</model>
+      <blockers model='Nehalem-IBRS'>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='yes' vendor='Intel'>Nehalem-v1</model>
+      <model usable='no' vendor='Intel'>Nehalem-v2</model>
+      <blockers model='Nehalem-v2'>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='yes' vendor='AMD' canonical='Opteron_G1-v1'>Opteron_G1</model>
+      <model usable='yes' vendor='AMD'>Opteron_G1-v1</model>
+      <model usable='yes' vendor='AMD' canonical='Opteron_G2-v1'>Opteron_G2</model>
+      <model usable='yes' vendor='AMD'>Opteron_G2-v1</model>
+      <model usable='yes' vendor='AMD' canonical='Opteron_G3-v1'>Opteron_G3</model>
+      <model usable='yes' vendor='AMD'>Opteron_G3-v1</model>
+      <model usable='no' vendor='AMD' canonical='Opteron_G4-v1'>Opteron_G4</model>
+      <blockers model='Opteron_G4'>
+        <feature name='fma4'/>
+        <feature name='xop'/>
+      </blockers>
+      <model usable='no' vendor='AMD'>Opteron_G4-v1</model>
+      <blockers model='Opteron_G4-v1'>
+        <feature name='fma4'/>
+        <feature name='xop'/>
+      </blockers>
+      <model usable='no' vendor='AMD' canonical='Opteron_G5-v1'>Opteron_G5</model>
+      <blockers model='Opteron_G5'>
+        <feature name='fma4'/>
+        <feature name='tbm'/>
+        <feature name='xop'/>
+      </blockers>
+      <model usable='no' vendor='AMD'>Opteron_G5-v1</model>
+      <blockers model='Opteron_G5-v1'>
+        <feature name='fma4'/>
+        <feature name='tbm'/>
+        <feature name='xop'/>
+      </blockers>
+      <model usable='yes' vendor='Intel' canonical='Penryn-v1'>Penryn</model>
+      <model usable='yes' vendor='Intel'>Penryn-v1</model>
+      <model usable='yes' vendor='Intel' canonical='SandyBridge-v1'>SandyBridge</model>
+      <model usable='no' vendor='Intel' canonical='SandyBridge-v2'>SandyBridge-IBRS</model>
+      <blockers model='SandyBridge-IBRS'>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='yes' vendor='Intel'>SandyBridge-v1</model>
+      <model usable='no' vendor='Intel'>SandyBridge-v2</model>
+      <blockers model='SandyBridge-v2'>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='Intel' canonical='Skylake-Client-v1'>Skylake-Client</model>
+      <blockers model='Skylake-Client'>
+        <feature name='erms'/>
+        <feature name='hle'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='rtm'/>
+      </blockers>
+      <model usable='no' vendor='Intel' canonical='Skylake-Client-v2'>Skylake-Client-IBRS</model>
+      <blockers model='Skylake-Client-IBRS'>
+        <feature name='erms'/>
+        <feature name='hle'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='rtm'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='Intel' canonical='Skylake-Client-v3'>Skylake-Client-noTSX-IBRS</model>
+      <blockers model='Skylake-Client-noTSX-IBRS'>
+        <feature name='erms'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Skylake-Client-v1</model>
+      <blockers model='Skylake-Client-v1'>
+        <feature name='erms'/>
+        <feature name='hle'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='rtm'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Skylake-Client-v2</model>
+      <blockers model='Skylake-Client-v2'>
+        <feature name='erms'/>
+        <feature name='hle'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='rtm'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Skylake-Client-v3</model>
+      <blockers model='Skylake-Client-v3'>
+        <feature name='erms'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Skylake-Client-v4</model>
+      <blockers model='Skylake-Client-v4'>
+        <feature name='erms'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='Intel' canonical='Skylake-Server-v1'>Skylake-Server</model>
+      <blockers model='Skylake-Server'>
+        <feature name='avx512bw'/>
+        <feature name='avx512cd'/>
+        <feature name='avx512dq'/>
+        <feature name='avx512f'/>
+        <feature name='avx512vl'/>
+        <feature name='erms'/>
+        <feature name='hle'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='pku'/>
+        <feature name='rtm'/>
+      </blockers>
+      <model usable='no' vendor='Intel' canonical='Skylake-Server-v2'>Skylake-Server-IBRS</model>
+      <blockers model='Skylake-Server-IBRS'>
+        <feature name='avx512bw'/>
+        <feature name='avx512cd'/>
+        <feature name='avx512dq'/>
+        <feature name='avx512f'/>
+        <feature name='avx512vl'/>
+        <feature name='erms'/>
+        <feature name='hle'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='pku'/>
+        <feature name='rtm'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='Intel' canonical='Skylake-Server-v3'>Skylake-Server-noTSX-IBRS</model>
+      <blockers model='Skylake-Server-noTSX-IBRS'>
+        <feature name='avx512bw'/>
+        <feature name='avx512cd'/>
+        <feature name='avx512dq'/>
+        <feature name='avx512f'/>
+        <feature name='avx512vl'/>
+        <feature name='erms'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='pku'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Skylake-Server-v1</model>
+      <blockers model='Skylake-Server-v1'>
+        <feature name='avx512bw'/>
+        <feature name='avx512cd'/>
+        <feature name='avx512dq'/>
+        <feature name='avx512f'/>
+        <feature name='avx512vl'/>
+        <feature name='erms'/>
+        <feature name='hle'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='pku'/>
+        <feature name='rtm'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Skylake-Server-v2</model>
+      <blockers model='Skylake-Server-v2'>
+        <feature name='avx512bw'/>
+        <feature name='avx512cd'/>
+        <feature name='avx512dq'/>
+        <feature name='avx512f'/>
+        <feature name='avx512vl'/>
+        <feature name='erms'/>
+        <feature name='hle'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='pku'/>
+        <feature name='rtm'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Skylake-Server-v3</model>
+      <blockers model='Skylake-Server-v3'>
+        <feature name='avx512bw'/>
+        <feature name='avx512cd'/>
+        <feature name='avx512dq'/>
+        <feature name='avx512f'/>
+        <feature name='avx512vl'/>
+        <feature name='erms'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='pku'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Skylake-Server-v4</model>
+      <blockers model='Skylake-Server-v4'>
+        <feature name='avx512bw'/>
+        <feature name='avx512cd'/>
+        <feature name='avx512dq'/>
+        <feature name='avx512f'/>
+        <feature name='avx512vl'/>
+        <feature name='erms'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='pku'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Skylake-Server-v5</model>
+      <blockers model='Skylake-Server-v5'>
+        <feature name='avx512bw'/>
+        <feature name='avx512cd'/>
+        <feature name='avx512dq'/>
+        <feature name='avx512f'/>
+        <feature name='avx512vl'/>
+        <feature name='erms'/>
+        <feature name='invpcid'/>
+        <feature name='pcid'/>
+        <feature name='pku'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='Intel' canonical='Snowridge-v1'>Snowridge</model>
+      <blockers model='Snowridge'>
+        <feature name='cldemote'/>
+        <feature name='core-capability'/>
+        <feature name='erms'/>
+        <feature name='gfni'/>
+        <feature name='movdir64b'/>
+        <feature name='movdiri'/>
+        <feature name='mpx'/>
+        <feature name='spec-ctrl'/>
+        <feature name='split-lock-detect'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Snowridge-v1</model>
+      <blockers model='Snowridge-v1'>
+        <feature name='cldemote'/>
+        <feature name='core-capability'/>
+        <feature name='erms'/>
+        <feature name='gfni'/>
+        <feature name='movdir64b'/>
+        <feature name='movdiri'/>
+        <feature name='mpx'/>
+        <feature name='spec-ctrl'/>
+        <feature name='split-lock-detect'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Snowridge-v2</model>
+      <blockers model='Snowridge-v2'>
+        <feature name='cldemote'/>
+        <feature name='core-capability'/>
+        <feature name='erms'/>
+        <feature name='gfni'/>
+        <feature name='movdir64b'/>
+        <feature name='movdiri'/>
+        <feature name='spec-ctrl'/>
+        <feature name='split-lock-detect'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Snowridge-v3</model>
+      <blockers model='Snowridge-v3'>
+        <feature name='cldemote'/>
+        <feature name='core-capability'/>
+        <feature name='erms'/>
+        <feature name='gfni'/>
+        <feature name='movdir64b'/>
+        <feature name='movdiri'/>
+        <feature name='spec-ctrl'/>
+        <feature name='split-lock-detect'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>Snowridge-v4</model>
+      <blockers model='Snowridge-v4'>
+        <feature name='cldemote'/>
+        <feature name='erms'/>
+        <feature name='gfni'/>
+        <feature name='movdir64b'/>
+        <feature name='movdiri'/>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='yes' vendor='Intel' canonical='Westmere-v1'>Westmere</model>
+      <model usable='no' vendor='Intel' canonical='Westmere-v2'>Westmere-IBRS</model>
+      <blockers model='Westmere-IBRS'>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='yes' vendor='Intel'>Westmere-v1</model>
+      <model usable='no' vendor='Intel'>Westmere-v2</model>
+      <blockers model='Westmere-v2'>
+        <feature name='spec-ctrl'/>
+      </blockers>
+      <model usable='no' vendor='AMD' canonical='athlon-v1'>athlon</model>
+      <blockers model='athlon'>
+        <feature name='3dnow'/>
+        <feature name='3dnowext'/>
+      </blockers>
+      <model usable='no' vendor='AMD'>athlon-v1</model>
+      <blockers model='athlon-v1'>
+        <feature name='3dnow'/>
+        <feature name='3dnowext'/>
+      </blockers>
+      <model usable='no' vendor='Intel' canonical='core2duo-v1'>core2duo</model>
+      <blockers model='core2duo'>
+        <feature name='ss'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>core2duo-v1</model>
+      <blockers model='core2duo-v1'>
+        <feature name='ss'/>
+      </blockers>
+      <model usable='no' vendor='Intel' canonical='coreduo-v1'>coreduo</model>
+      <blockers model='coreduo'>
+        <feature name='ss'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>coreduo-v1</model>
+      <blockers model='coreduo-v1'>
+        <feature name='ss'/>
+      </blockers>
+      <model usable='yes' vendor='unknown' canonical='kvm32-v1'>kvm32</model>
+      <model usable='yes' vendor='unknown'>kvm32-v1</model>
+      <model usable='yes' vendor='unknown' canonical='kvm64-v1'>kvm64</model>
+      <model usable='yes' vendor='unknown'>kvm64-v1</model>
+      <model usable='no' vendor='Intel' canonical='n270-v1'>n270</model>
+      <blockers model='n270'>
+        <feature name='ss'/>
+      </blockers>
+      <model usable='no' vendor='Intel'>n270-v1</model>
+      <blockers model='n270-v1'>
+        <feature name='ss'/>
+      </blockers>
+      <model usable='yes' vendor='unknown' canonical='pentium-v1'>pentium</model>
+      <model usable='yes' vendor='unknown'>pentium-v1</model>
+      <model usable='yes' vendor='unknown' canonical='pentium2-v1'>pentium2</model>
+      <model usable='yes' vendor='unknown'>pentium2-v1</model>
+      <model usable='yes' vendor='unknown' canonical='pentium3-v1'>pentium3</model>
+      <model usable='yes' vendor='unknown'>pentium3-v1</model>
+      <model usable='no' vendor='AMD' canonical='phenom-v1'>phenom</model>
+      <blockers model='phenom'>
+        <feature name='3dnow'/>
+        <feature name='3dnowext'/>
+      </blockers>
+      <model usable='no' vendor='AMD'>phenom-v1</model>
+      <blockers model='phenom-v1'>
+        <feature name='3dnow'/>
+        <feature name='3dnowext'/>
+      </blockers>
+      <model usable='yes' vendor='unknown' canonical='qemu32-v1'>qemu32</model>
+      <model usable='yes' vendor='unknown'>qemu32-v1</model>
+      <model usable='yes' vendor='unknown' canonical='qemu64-v1'>qemu64</model>
+      <model usable='yes' vendor='unknown'>qemu64-v1</model>
+    </mode>
   </cpu>
   <memoryBacking supported='yes'>
     <enum name='sourceType'>
index e520c7d7bcd73728acab9819616aaed1ce880858..51fec0558fb4feaa3dadb936ea24476baf7843d2 100644 (file)
@@ -70,6 +70,7 @@ static int
 fillQemuCaps(virDomainCaps *domCaps,
              const char *name,
              const char *arch,
+             const char *variant,
              const char *machine,
              virQEMUDriverConfig *cfg)
 {
@@ -81,7 +82,7 @@ fillQemuCaps(virDomainCaps *domCaps,
     if (fakeHostCPU(domCaps->arch) < 0)
         return -1;
 
-    path = g_strdup_printf("%s/%s_%s.xml", TEST_QEMU_CAPS_PATH, name, arch);
+    path = g_strdup_printf("%s/%s_%s%s.xml", TEST_QEMU_CAPS_PATH, name, arch, variant);
     if (!(qemuCaps = qemuTestParseCapabilitiesArch(domCaps->arch, path)))
         return -1;
 
@@ -182,6 +183,7 @@ struct testData {
     const char *emulator;
     const char *machine;
     const char *arch;
+    const char *variant;
     virDomainVirtType type;
     enum testCapsType capsType;
     const char *capsName;
@@ -209,8 +211,8 @@ test_virDomainCapsFormat(const void *opaque)
 
     case CAPS_QEMU:
 #if WITH_QEMU
-        if (fillQemuCaps(domCaps, data->capsName, data->arch, data->machine,
-                         data->capsOpaque) < 0)
+        if (fillQemuCaps(domCaps, data->capsName, data->arch, data->variant,
+                         data->machine, data->capsOpaque) < 0)
             return -1;
 #endif
         break;
@@ -259,6 +261,7 @@ doTestQemuInternal(const char *version,
         .emulator = emulator,
         .machine = machine,
         .arch = arch,
+        .variant = variant,
         .type = type,
         .capsType = CAPS_QEMU,
         .capsName = capsName,
@@ -426,6 +429,7 @@ mymain(void)
             .emulator = Emulator, \
             .machine = Machine, \
             .arch = Arch, \
+            .variant = "", \
             .type = Type, \
             .capsType = CapsType, \
         }; \
@@ -440,6 +444,7 @@ mymain(void)
             .emulator = Emulator, \
             .machine = Machine, \
             .arch = Arch, \
+            .variant = "", \
             .type = Type, \
             .capsType = CAPS_LIBXL, \
         }; \
@@ -456,6 +461,7 @@ mymain(void)
             .name = name, \
             .emulator = Emulator, \
             .arch = "x86_64", \
+            .variant = "", \
             .type = Type, \
             .capsType = CAPS_BHYVE, \
             .capsOpaque = BhyveCaps, \