[pve-devel] partially-applied: [PATCH-SERIES qemu-server/manager v2 0/8] VM CPU flags: introduce vendor-agnostic 'nested-virt' CPU flag
Fiona Ebner
f.ebner at proxmox.com
Fri Nov 14 15:27:13 CET 2025
Am 13.11.25 um 11:53 PM schrieb Thomas Lamprecht:
> On Fri, 07 Nov 2025 15:43:38 +0100, Fiona Ebner wrote:
>> Changes in v2 (thanks Dano and Thomas!):
>> * Pass running CPU configuration when using 'nested-virt'. This
>> ensures that migration fails early if the flag resolves differently
>> on the target.
>> * Describe that live migration still only works if it's the same flag.
>> * Drop adding non-existing link in API end point.
>> * Keep $supported_cpu_flags private to module and add getter method.
>> * Unpack @_ first at the beginning of resolve_cpu_flags().
>> * ui: fix function call in the CPU flag selector widget.
>> * ui: use simpler method to get all records of the store.
>> * Drop already applied patches.
>>
>> [...]
>
> Applied the first three qemu-server patches already, thanks!
>
> For the nested-flag I'm not fully sure yet if this is enough also for Windows
> guests to run e.g. WSL with a non-host CPU type like x86-64-v3, which I might
> not put into scope originally, but for many users it will IMO be assumed as
> "has to work" if we put this in the changelog.
Thanks to Mario for directing my attention to the related bugzilla entry
[0] earlier today!
What seems to be necessary is setting the base model to something
matching the vendor of the host CPU "cpu: EPYC,flags=+nested-virt"
resulting in
EPYC,enforce,hv_ipi,hv_relaxed,hv_reset,hv_runtime,hv_spinlocks=0x1fff,hv_stimer,hv_synic,hv_time,hv_vapic,hv_vpindex,+kvm_pv_eoi,+kvm_pv_unhalt,+svm,vendor=AuthenticAMD
on the QEMU commandline.
Well, I still got an error later:
PS C:\Windows\system32> wsl -d archlinux
wsl: Nested virtualization is not supported on this machine.
but I also got a bash and could issue commands. FWIW, I got the same
error and behavior when using "host" CPU model.
I couldn't get it to work with CPU type qemu64, even with all of:
qemu64,+abm,+aes,+avx,+avx2,+bmi1,+bmi2,enforce,+f16c,+fma,hv_ipi,hv_relaxed,hv_reset,hv_runtime,hv_spinlocks=0x1fff,hv_stimer,hv_synic,hv_time,hv_vapic,hv_vpindex,+kvm_pv_eoi,+kvm_pv_unhalt,+movbe,+pni,+popcnt,+sse4.1,+sse4.2,+ssse3,+xsave,+svm,hv_emsr_bitmap,hv_syndbg,hv_tlbflush,hv_tlbflush_direct,hv_tlbflush_ext,hv_xmm_input,
kvm=off,vendor=AuthenticAMD,hv-passthrough
Should we add a hint in the UI (if OS type is Windows) that the
'nested-virt' flag may require a base model matching the vendor of the
host CPU?
[0]: https://bugzilla.proxmox.com/show_bug.cgi?id=7021
More information about the pve-devel
mailing list