Windows 11 guest stucks in bootloop when hyper-v is enabled

Host environment

  • Operating system: Ubuntu 22.04.5 LTS
  • OS/kernel version: 5.15.0-119-generic
  • Architecture: x86
  • QEMU flavor: qemu-system-x86_64
  • QEMU version: QEMU emulator version 6.2.0
  • QEMU command line (we use OpenStack with QEMU backend):
    -cpu Icelake-Server-noTSX,3dnowprefetch=on,abm=on,acpi=on,adx=on,aes=on,apic=on,arat=on,arch-capabilities=on,avx=on,avx-vnni=on,avx2=on,avx512-bf16=on,avx512-fp16=on,avx512-vpopcntdq=on,avx512bitalg=on,avx5
    12bw=on,avx512cd=on,avx512dq=on,avx512f=on,avx512ifma=on,avx512vbmi=on,avx512vbmi2=on,avx512vl=on,avx512vnni=on,bmi1=on,bmi2=on,bus-lock-detect=on,cldemote=on,clflush=on,clflushopt=on,clwb=on,cmov=on,core-c
    apability=on,cx16=on,cx8=on,dca=on,de=on,ds=on,ds-cpl=on,dtes64=on,erms=on,est=on,f16c=on,fma=on,fpu=on,fsgsbase=on,fsrm=on,fxsr=on,gfni=on,hle=off,ht=on,hypervisor=off,ibrs-all=on,intel-pt=on,invpcid=on,la
    57=on,lahf-lm=on,lm=on,mca=on,mce=on,md-clear=on,mds-no=on,mmx=on,monitor=on,movbe=on,movdir64b=on,movdiri=on,mpx=off,msr=on,mtrr=on,nx=on,pae=on,pat=on,pbe=on,pcid=on,pclmulqdq=on,pdcm=on,pdpe1gb=on,pge=on
    ,pks=on,pku=on,pni=on,popcnt=on,pschange-mc-no=on,pse=on,pse36=on,rdctl-no=on,rdpid=on,rdrand=on,rdseed=on,rdtscp=on,rtm=off,sep=on,serialize=on,sgx=on,sgxlc=on,sha-ni=on,skip-l1dfl-vmentry=on,smap=on,smep=
    on,smx=on,spec-ctrl=on,ss=on,ssbd=on,sse=on,sse2=on,sse4.1=on,sse4.2=on,ssse3=on,stibp=on,syscall=on,tm=on,tm2=on,tsc=on,tsc-deadline=on,tsc-adjust=on,tsx-ctrl=on,tsx-ldtrk=on,umip=on,vaes=on,vme=on,vmx=on,
    vpclmulqdq=on,waitpkg=on,wbnoinvd=on,x2apic=on,xgetbv1=on,xsave=on,xsavec=on,xsaveopt=on,xsaves=on,xtpr=on 

Emulated/Virtualized environment

  • Operating system: Windows 11
  • OS/kernel version:
  • Architecture: x86

Description of problem

A Windows 11 guest becomes unable to boot after enabling Virtual Machine Platform/Hyper-V inside the VM and performing a reboot. This issue does not occur on Windows 10 under the same conditions. image.png

Steps to reproduce

  1. Create a Windows 11 guest
  2. Enabling Virtual Machine Platform/Hyper-V inside
  3. Reboot guest

Additional information

Host CPU: Intel Xeon Gold 6538Y+ with virtualization is enabled.

We tested several cpu models configurations and observed the following:

  • Icelake-Server-noTSX → error (boot loop)
  • Icelake-Server → error (boot loop)
  • Broadwell-noTSX-IBRS → works
  • Cascadelake-Server-noTSX → works
Edited by Hai Pham