Recent update to
For example, for this Intel CPU:
QEMU claims it supports
This is obviously incorrect. even if QEMU will boot while ignoring flag. On the other hand, Hyper-V enlightenment flags are not present in this list at all, no matter what CPU QEMU runs on (tried few Intel and EPYC CPUs), which causes PVE to show them as incompatible:

The change should likely be reverted or minimally, Hyper-V enlightenment should be excluded as QEMU does not seem to treat them in same way as other flags.
pve-manager includes ability to query supported flags via call to qemu --cpu help, however utilizing this endpoint is in vain and incorrect as it will almost universally always present incorrect list.For example, for this Intel CPU:
Code:
root@riko:~# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 39 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Vendor ID: GenuineIntel
Model name: Intel(R) Xeon(R) CPU E3-1275 v6 @ 3.80GHz
CPU family: 6
Model: 158
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
Stepping: 9
CPU(s) scaling MHz: 45%
CPU max MHz: 3800.0000
CPU min MHz: 800.0000
BogoMIPS: 7599.80
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopol
ogy nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm a
bm 3dnowprefetch cpuid_fault epb pti ssbd ibrs ibpb stibp tpr_shadow flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec x
getbv1 xsaves dtherm arat pln pts hwp hwp_notify hwp_act_window hwp_epp vnmi md_clear flush_l1d arch_capabilities
Virtualization features:
Virtualization: VT-x
QEMU claims it supports
amd-ssbd and 3dnow:
Code:
Recognized CPUID flags:
3dnow 3dnowext 3dnowprefetch abm ace2 ace2-en acpi adx aes amd-no-ssb
amd-psfd amd-ssbd amd-stibp amx-avx512 amx-bf16 amx-bf16-alias
amx-complex amx-complex-alias amx-fp16 amx-fp16-alias amx-fp8 amx-int8
amx-int8-alias amx-movrs amx-tf32 amx-tile apic apx-nci-ndd-nf apxf arat
arch-capabilities arch-lbr auto-ibrs avic avx avx-ifma avx-ne-convert
avx-vnni avx-vnni-int16 avx-vnni-int8 avx10 avx10-128 avx10-256 avx10-512
avx10-vnni-int avx2 avx512-4fmaps avx512-4vnniw avx512-bf16 avx512-fp16
avx512-vp2intersect avx512-vpopcntdq avx512bitalg avx512bw avx512cd
avx512dq avx512er avx512f avx512ifma avx512pf avx512vbmi avx512vbmi2
avx512vl avx512vnni bhi-ctrl bhi-no bmi1 bmi2 bus-lock-detect cet-ibt
cet-ss cid cldemote clflush clflushopt clwb clzero cmov cmp-legacy
cmpccxadd core-capability cr8legacy cx16 cx8 dca ddpd-u de decodeassists
ds ds-cpl dtes64 eraps erms est extapic f16c fb-clear fbsdp-no
fdp-excptn-only flush-l1d flushbyasid fma fma4 fpu fred fs-gs-base-ns
fsgsbase fsrc fsrm fsrs full-width-write fxsr fxsr-opt fzrm gds-no gfni
gmet hle ht hypervisor ia64 ibpb ibpb-brtype ibrs ibrs-all ibs intel-psfd
intel-pt intel-pt-lip invpcid invtsc ipred-ctrl its-no kvm-asyncpf
kvm-asyncpf-int kvm-asyncpf-vmexit kvm-hint-dedicated kvm-mmu
kvm-msi-ext-dest-id kvm-nopiodelay kvm-poll-control kvm-pv-eoi kvm-pv-ipi
kvm-pv-sched-yield kvm-pv-tlb-flush kvm-pv-unhalt kvm-steal-time kvmclock
kvmclock kvmclock-stable-bit la57 lahf-lm lam lbrv
lfence-always-serializing lkgs lm lwp mca mcdt-no mce md-clear mds-no
misalignsse mmx mmxext monitor movbe movdir64b movdiri movrs mpx msr
msr-imm mtrr no-nested-data-bp nodeid-msr npt nrip-save null-sel-clr-base
nx osvw overflow-recov pae pat pause-filter pbe pbrsb-no pcid pclmulqdq
pcommit pdcm pdpe1gb perfctr-core perfctr-nb perfmon-v2 pfthreshold pge
phe phe-en pks pku pmm pmm-en pn pni popcnt prefetchi prefetchiti
pschange-mc-no psdp-no pse pse36 rdctl-no rdpid rdrand rdseed rdtscp
rfds-clear rfds-no rrsba-ctrl rsba rtm sbdr-ssdp-no sbpb sep serialize
sgx sgx-aex-notify sgx-debug sgx-edeccssa sgx-exinfo sgx-kss sgx-mode64
sgx-provisionkey sgx-tokenkey sgx1 sgx2 sgxlc sha-ni sha512 skinit
skip-l1dfl-vmentry sm3 sm4 smap smep smx spec-ctrl split-lock-detect
srso-no srso-user-kernel-no ss ssb-no ssbd sse sse2 sse4.1 sse4.2 sse4a
ssse3 stibp stibp-always-on succor svm svm-lock svme-addr-chk syscall
taa-no tbm tce tm tm2 topoext tsa-l1-no tsa-sq-no tsc tsc-adjust
tsc-deadline tsc-scale tsx-ctrl tsx-ldtrk umip v-vmsave-vmload vaes
verw-clear vgif virt-ssbd vmcb-clean vme vmx vmx-activity-hlt
vmx-activity-shutdown vmx-activity-wait-sipi vmx-any-errcode
vmx-apicv-register vmx-apicv-vid vmx-apicv-x2apic vmx-apicv-xapic
vmx-cr3-load-noexit vmx-cr3-store-noexit vmx-cr8-load-exit
vmx-cr8-store-exit vmx-desc-exit vmx-enable-user-wait-pause
vmx-encls-exit vmx-entry-ia32e-mode vmx-entry-load-bndcfgs
vmx-entry-load-cet vmx-entry-load-efer vmx-entry-load-fred
vmx-entry-load-pat vmx-entry-load-perf-global-ctrl vmx-entry-load-pkrs
vmx-entry-load-rtit-ctl vmx-entry-noload-debugctl vmx-ept vmx-ept-1gb
vmx-ept-2mb vmx-ept-advanced-exitinfo vmx-ept-execonly vmx-eptad
vmx-eptp-switching vmx-exit-ack-intr vmx-exit-clear-bndcfgs
vmx-exit-clear-rtit-ctl vmx-exit-load-efer vmx-exit-load-pat
vmx-exit-load-perf-global-ctrl vmx-exit-load-pkrs
vmx-exit-nosave-debugctl vmx-exit-save-cet vmx-exit-save-efer
vmx-exit-save-pat vmx-exit-save-preemption-timer vmx-exit-secondary-ctls
vmx-flexpriority vmx-hlt-exit vmx-ins-outs vmx-intr-exit vmx-invept
vmx-invept-all-context vmx-invept-single-context
vmx-invept-single-context vmx-invept-single-context-noglobals
vmx-invlpg-exit vmx-invpcid-exit vmx-invvpid vmx-invvpid-all-context
vmx-invvpid-single-addr vmx-io-bitmap vmx-io-exit vmx-mbec
vmx-monitor-exit vmx-movdr-exit vmx-msr-bitmap vmx-mtf vmx-mwait-exit
vmx-nested-exception vmx-nmi-exit vmx-page-walk-4 vmx-page-walk-5
vmx-pause-exit vmx-ple vmx-pml vmx-posted-intr vmx-preemption-timer
vmx-rdpmc-exit vmx-rdrand-exit vmx-rdseed-exit vmx-rdtsc-exit
vmx-rdtscp-exit vmx-secondary-ctls vmx-shadow-vmcs vmx-store-lma
vmx-true-ctls vmx-tsc-offset vmx-tsc-scaling vmx-unrestricted-guest
vmx-vintr-pending vmx-vmfunc vmx-vmwrite-vmexit-fields vmx-vnmi
vmx-vnmi-pending vmx-vpid vmx-wbinvd-exit vmx-xsaves vmx-zero-len-inject
vnmi vpclmulqdq waitpkg wbnoinvd wdt wrmsrns x2apic xcrypt xcrypt-en xfd
xgetbv1 xop xsave xsavec xsaveerptr xsaveopt xsaves xstore xstore-en xtpr
zero-fcs-fds
This is obviously incorrect. even if QEMU will boot while ignoring flag. On the other hand, Hyper-V enlightenment flags are not present in this list at all, no matter what CPU QEMU runs on (tried few Intel and EPYC CPUs), which causes PVE to show them as incompatible:

The change should likely be reverted or minimally, Hyper-V enlightenment should be excluded as QEMU does not seem to treat them in same way as other flags.
Last edited: