mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-11-03 11:51:11 +00:00
48341b025a
For finding the best matching CPU model for a given set of features while we don't know the CPU signature (i.e., when computing a baseline CPU model) we've been using a "shortest list of features" heuristics. This works well if new CPU models are supersets of older models, but that's not always the case. As a result it may actually select a new CPU model as a baseline while removing some features from it to make it compatible with older models. This is in general worse than using an old CPU model with a bunch of added features as a guest OS or apps may crash when using features that were disabled. On the other hand we don't want to end up with a very old model which would guarantee no disabled features as it could stop a guest OS or apps from using some features provided by the CPU because they would not expect them on such an old CPU. This patch changes the heuristics to something in between. Enabled and disabled features are counted separately so that a CPU model requiring some features to be disabled looks worse than a model with fewer disabled features even if its complete list of features is longer. The penalty given for each additional disabled feature gets bigger to make longer list of disabled features look even worse. https://bugzilla.redhat.com/show_bug.cgi?id=1851227 Signed-off-by: Jiri Denemark <jdenemar@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
245 lines
8.1 KiB
XML
245 lines
8.1 KiB
XML
<domainCapabilities>
|
|
<path>/usr/bin/qemu-system-x86_64</path>
|
|
<domain>qemu</domain>
|
|
<machine>pc-i440fx-6.2</machine>
|
|
<arch>x86_64</arch>
|
|
<vcpu max='255'/>
|
|
<iothreads supported='yes'/>
|
|
<os supported='yes'>
|
|
<enum name='firmware'>
|
|
<value>bios</value>
|
|
<value>efi</value>
|
|
</enum>
|
|
<loader supported='yes'>
|
|
<value>/usr/share/AAVMF/AAVMF_CODE.fd</value>
|
|
<value>/usr/share/AAVMF/AAVMF32_CODE.fd</value>
|
|
<value>/usr/share/OVMF/OVMF_CODE.fd</value>
|
|
<enum name='type'>
|
|
<value>rom</value>
|
|
<value>pflash</value>
|
|
</enum>
|
|
<enum name='readonly'>
|
|
<value>yes</value>
|
|
<value>no</value>
|
|
</enum>
|
|
<enum name='secure'>
|
|
<value>no</value>
|
|
</enum>
|
|
</loader>
|
|
</os>
|
|
<cpu>
|
|
<mode name='host-passthrough' supported='no'/>
|
|
<mode name='maximum' supported='yes'>
|
|
<enum name='maximumMigratable'>
|
|
<value>on</value>
|
|
<value>off</value>
|
|
</enum>
|
|
</mode>
|
|
<mode name='host-model' supported='yes'>
|
|
<model fallback='forbid'>Opteron_G3</model>
|
|
<vendor>AMD</vendor>
|
|
<feature policy='require' name='acpi'/>
|
|
<feature policy='require' name='ss'/>
|
|
<feature policy='require' name='pclmuldq'/>
|
|
<feature policy='require' name='monitor'/>
|
|
<feature policy='require' name='ssse3'/>
|
|
<feature policy='require' name='sse4.1'/>
|
|
<feature policy='require' name='sse4.2'/>
|
|
<feature policy='require' name='movbe'/>
|
|
<feature policy='require' name='aes'/>
|
|
<feature policy='require' name='xsave'/>
|
|
<feature policy='require' name='rdrand'/>
|
|
<feature policy='require' name='hypervisor'/>
|
|
<feature policy='require' name='arat'/>
|
|
<feature policy='require' name='fsgsbase'/>
|
|
<feature policy='require' name='bmi1'/>
|
|
<feature policy='require' name='smep'/>
|
|
<feature policy='require' name='bmi2'/>
|
|
<feature policy='require' name='erms'/>
|
|
<feature policy='require' name='mpx'/>
|
|
<feature policy='require' name='adx'/>
|
|
<feature policy='require' name='smap'/>
|
|
<feature policy='require' name='pcommit'/>
|
|
<feature policy='require' name='clflushopt'/>
|
|
<feature policy='require' name='clwb'/>
|
|
<feature policy='require' name='pku'/>
|
|
<feature policy='require' name='la57'/>
|
|
<feature policy='require' name='xsaveopt'/>
|
|
<feature policy='require' name='xgetbv1'/>
|
|
<feature policy='require' name='mmxext'/>
|
|
<feature policy='require' name='pdpe1gb'/>
|
|
<feature policy='require' name='3dnowext'/>
|
|
<feature policy='require' name='3dnow'/>
|
|
<feature policy='require' name='cr8legacy'/>
|
|
<feature policy='require' name='npt'/>
|
|
<feature policy='require' name='svme-addr-chk'/>
|
|
<feature policy='disable' name='misalignsse'/>
|
|
</mode>
|
|
<mode name='custom' supported='yes'>
|
|
<model usable='yes'>qemu64</model>
|
|
<model usable='yes'>qemu32</model>
|
|
<model usable='no'>phenom</model>
|
|
<model usable='yes'>pentium3</model>
|
|
<model usable='yes'>pentium2</model>
|
|
<model usable='yes'>pentium</model>
|
|
<model usable='yes'>n270</model>
|
|
<model usable='yes'>kvm64</model>
|
|
<model usable='yes'>kvm32</model>
|
|
<model usable='yes'>coreduo</model>
|
|
<model usable='yes'>core2duo</model>
|
|
<model usable='yes'>athlon</model>
|
|
<model usable='no'>Westmere-IBRS</model>
|
|
<model usable='yes'>Westmere</model>
|
|
<model usable='no'>Snowridge</model>
|
|
<model usable='no'>Skylake-Server-noTSX-IBRS</model>
|
|
<model usable='no'>Skylake-Server-IBRS</model>
|
|
<model usable='no'>Skylake-Server</model>
|
|
<model usable='no'>Skylake-Client-noTSX-IBRS</model>
|
|
<model usable='no'>Skylake-Client-IBRS</model>
|
|
<model usable='no'>Skylake-Client</model>
|
|
<model usable='no'>SandyBridge-IBRS</model>
|
|
<model usable='no'>SandyBridge</model>
|
|
<model usable='yes'>Penryn</model>
|
|
<model usable='no'>Opteron_G5</model>
|
|
<model usable='no'>Opteron_G4</model>
|
|
<model usable='no'>Opteron_G3</model>
|
|
<model usable='yes'>Opteron_G2</model>
|
|
<model usable='yes'>Opteron_G1</model>
|
|
<model usable='no'>Nehalem-IBRS</model>
|
|
<model usable='yes'>Nehalem</model>
|
|
<model usable='no'>IvyBridge-IBRS</model>
|
|
<model usable='no'>IvyBridge</model>
|
|
<model usable='no'>Icelake-Server-noTSX</model>
|
|
<model usable='no'>Icelake-Server</model>
|
|
<model usable='no' deprecated='yes'>Icelake-Client-noTSX</model>
|
|
<model usable='no' deprecated='yes'>Icelake-Client</model>
|
|
<model usable='no'>Haswell-noTSX-IBRS</model>
|
|
<model usable='no'>Haswell-noTSX</model>
|
|
<model usable='no'>Haswell-IBRS</model>
|
|
<model usable='no'>Haswell</model>
|
|
<model usable='no'>EPYC-Rome</model>
|
|
<model usable='no'>EPYC-Milan</model>
|
|
<model usable='no'>EPYC-IBPB</model>
|
|
<model usable='no'>EPYC</model>
|
|
<model usable='no'>Dhyana</model>
|
|
<model usable='no'>Cooperlake</model>
|
|
<model usable='yes'>Conroe</model>
|
|
<model usable='no'>Cascadelake-Server-noTSX</model>
|
|
<model usable='no'>Cascadelake-Server</model>
|
|
<model usable='no'>Broadwell-noTSX-IBRS</model>
|
|
<model usable='no'>Broadwell-noTSX</model>
|
|
<model usable='no'>Broadwell-IBRS</model>
|
|
<model usable='no'>Broadwell</model>
|
|
<model usable='yes'>486</model>
|
|
</mode>
|
|
</cpu>
|
|
<memoryBacking supported='yes'>
|
|
<enum name='sourceType'>
|
|
<value>file</value>
|
|
<value>anonymous</value>
|
|
<value>memfd</value>
|
|
</enum>
|
|
</memoryBacking>
|
|
<devices>
|
|
<disk supported='yes'>
|
|
<enum name='diskDevice'>
|
|
<value>disk</value>
|
|
<value>cdrom</value>
|
|
<value>floppy</value>
|
|
<value>lun</value>
|
|
</enum>
|
|
<enum name='bus'>
|
|
<value>ide</value>
|
|
<value>fdc</value>
|
|
<value>scsi</value>
|
|
<value>virtio</value>
|
|
<value>usb</value>
|
|
<value>sata</value>
|
|
</enum>
|
|
<enum name='model'>
|
|
<value>virtio</value>
|
|
<value>virtio-transitional</value>
|
|
<value>virtio-non-transitional</value>
|
|
</enum>
|
|
</disk>
|
|
<graphics supported='yes'>
|
|
<enum name='type'>
|
|
<value>sdl</value>
|
|
<value>vnc</value>
|
|
<value>spice</value>
|
|
<value>egl-headless</value>
|
|
</enum>
|
|
</graphics>
|
|
<video supported='yes'>
|
|
<enum name='modelType'>
|
|
<value>vga</value>
|
|
<value>cirrus</value>
|
|
<value>vmvga</value>
|
|
<value>qxl</value>
|
|
<value>virtio</value>
|
|
<value>none</value>
|
|
<value>bochs</value>
|
|
<value>ramfb</value>
|
|
</enum>
|
|
</video>
|
|
<hostdev supported='yes'>
|
|
<enum name='mode'>
|
|
<value>subsystem</value>
|
|
</enum>
|
|
<enum name='startupPolicy'>
|
|
<value>default</value>
|
|
<value>mandatory</value>
|
|
<value>requisite</value>
|
|
<value>optional</value>
|
|
</enum>
|
|
<enum name='subsysType'>
|
|
<value>usb</value>
|
|
<value>pci</value>
|
|
<value>scsi</value>
|
|
</enum>
|
|
<enum name='capsType'/>
|
|
<enum name='pciBackend'>
|
|
<value>default</value>
|
|
<value>vfio</value>
|
|
</enum>
|
|
</hostdev>
|
|
<rng supported='yes'>
|
|
<enum name='model'>
|
|
<value>virtio</value>
|
|
<value>virtio-transitional</value>
|
|
<value>virtio-non-transitional</value>
|
|
</enum>
|
|
<enum name='backendModel'>
|
|
<value>random</value>
|
|
<value>egd</value>
|
|
<value>builtin</value>
|
|
</enum>
|
|
</rng>
|
|
<filesystem supported='yes'>
|
|
<enum name='driverType'>
|
|
<value>path</value>
|
|
<value>handle</value>
|
|
<value>virtiofs</value>
|
|
</enum>
|
|
</filesystem>
|
|
<tpm supported='yes'>
|
|
<enum name='model'>
|
|
<value>tpm-tis</value>
|
|
<value>tpm-crb</value>
|
|
</enum>
|
|
<enum name='backendModel'>
|
|
<value>passthrough</value>
|
|
<value>emulator</value>
|
|
</enum>
|
|
</tpm>
|
|
</devices>
|
|
<features>
|
|
<gic supported='no'/>
|
|
<vmcoreinfo supported='yes'/>
|
|
<genid supported='yes'/>
|
|
<backingStoreInput supported='yes'/>
|
|
<backup supported='yes'/>
|
|
<sev supported='no'/>
|
|
</features>
|
|
</domainCapabilities>
|