-
Bug
-
Resolution: Unresolved
-
Normal
-
None
-
rhel-9.3.0
-
None
-
Moderate
-
rhel-sst-virtualization-hwe
-
ssg_virtualization
-
None
-
False
-
-
None
-
None
-
None
-
None
-
If docs needed, set a value
-
-
x86_64
-
None
Description of problem:
CPU flags don't match between QEMU cmdline and Libvirt xml(dumpxml) on some AMD hosts
Version-Release number of selected component (if applicable):
Test Env:
5.14.0-252.el9.x86_64
qemu-kvm-7.2.0-6.el9.x86_64
libvirt-9.0.0-3.el9.x86_64
Model name: AMD EPYC 7313 16-Core Processor
How reproducible: 100%
Steps to Reproduce:
1. define one basic xml file
- cat test.xml
<domain type='kvm'>
<name>test</name>
<memory>1</memory>
<os>
<type arch='x86_64' machine='q35'>hvm</type>
</os>
<cpu mode='host-model'/>
</domain>
2. start libvirt with above xml configuration. Then check the cpu element by 'virsh dumpxml test' when it's running.
<cpu mode='custom' match='exact' check='full'>
<model fallback='forbid'>EPYC-Milan</model>
<vendor>AMD</vendor>
<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='vaes'/>
<feature policy='require' name='vpclmulqdq'/>
<feature policy='require' name='spec-ctrl'/>
<feature policy='require' name='stibp'/>
<feature policy='require' name='arch-capabilities'/>
<feature policy='require' name='ssbd'/>
<feature policy='require' name='cmp_legacy'/>
<feature policy='require' name='virt-ssbd'/>
<feature policy='disable' name='lbrv'/>
<feature policy='disable' name='tsc-scale'/>
<feature policy='disable' name='vmcb-clean'/>
<feature policy='disable' name='pause-filter'/>
<feature policy='disable' name='pfthreshold'/>
<feature policy='disable' name='v-vmsave-vmload'/>
<feature policy='disable' name='vgif'/>
<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'/>
<feature policy='disable' name='svm'/>
<feature policy='require' name='topoext'/>
<feature policy='disable' name='npt'/>
<feature policy='disable' name='nrip-save'/>
<feature policy='disable' name='svme-addr-chk'/>
</cpu>
3. Check the QEMU cpu command lines with 'ps -aux | grep qemu'
-cpu EPYC-Milan,x2apic=on,tsc-deadline=on,hypervisor=on,tsc-adjust=on,vaes=on,vpclmulqdq=on,spec-ctrl=on,stibp=on,arch-capabilities=on,ssbd=on,cmp-legacy=on,virt-ssbd=on,lbrv=on,tsc-scale=on,vmcb-clean=on,pause-filter=on,pfthreshold=on,v-vmsave-vmload=on,vgif=on,rdctl-no=on,skip-l1dfl-vmentry=on,mds-no=on,pschange-mc-no=on
Actual results:
1. we can see libvirt disables lots of features but in qemu command line, these features are still 'on'.
2. Boot a separate qemu process with above qemu command line, I can get lots of warnings.
- /usr/libexec/qemu-kvm -qmp unix:/tmp/mm,server=on,wait=off -M q35 -cpu EPYC-Milan,x2apic=on,tsc-deadline=on,hypervisor=on,tsc-adjust=on,vaes=on,vpclmulqdq=on,spec-ctrl=on,stibp=on,arch-capabilities=on,ssbd=on,cmp-legacy=on,virt-ssbd=on,lbrv=on,tsc-scale=on,vmcb-clean=on,pause-filter=on,pfthreshold=on,v-vmsave-vmload=on,vgif=on,rdctl-no=on,skip-l1dfl-vmentry=on,mds-no=on,pschange-mc-no=on -monitor stdio
QEMU 7.2.0 monitor - type 'help' for more information
(qemu) qemu-kvm: warning: This feature depends on other features that were not requested: CPUID.8000000AH:EDX.lbrv [bit 1]
qemu-kvm: warning: This feature depends on other features that were not requested: CPUID.8000000AH:EDX.tsc-scale [bit 4]
qemu-kvm: warning: This feature depends on other features that were not requested: CPUID.8000000AH:EDX.vmcb-clean [bit 5]
qemu-kvm: warning: This feature depends on other features that were not requested: CPUID.8000000AH:EDX.pause-filter [bit 10]
qemu-kvm: warning: This feature depends on other features that were not requested: CPUID.8000000AH:EDX.pfthreshold [bit 12]
qemu-kvm: warning: This feature depends on other features that were not requested: CPUID.8000000AH:EDX.v-vmsave-vmload [bit 15]
qemu-kvm: warning: This feature depends on other features that were not requested: CPUID.8000000AH:EDX.vgif [bit 16]
VNC server running on ::1:5900
3. Run `query-cpu-model-expansion` with model name `host`, these features all show 'True'.
{ "execute":"query-cpu-model-expansion","arguments":{"type":"full","model":
}}
Expected results:
They should be the same
Additional info:
Such situation also happens on AMD Rome and AMD Geona,
- external trackers