Windows 11 24H2+ VM prevents host CPU from entering C3
Host environment
-
Operating system: Debian testing
-
OS/kernel version: Linux host 6.16.9+deb14-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.16.9-1 (2025-09-27) x86_64 GNU/Linux
-
Architecture: x86_64
-
QEMU flavor: qemu-system-x86_64
-
QEMU version: 10.1.0 (Debian 1:10.1.0+ds-5)
-
QEMU command line: (as generated by virt-manager + core pinning)
/usr/bin/qemu-system-x86_64 -name guest=win11-1150,debug-threads=on -S -object {"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain-22-win11-1150/master-key.aes"} -blockdev {"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE_4M.ms.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"} -blockdev {"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"} -blockdev {"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/win11-1150_VARS.fd","node-name":"libvirt-pflash1-storage","read-only":false} -machine pc-q35-10.1,usb=off,smm=on,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-storage,hpet=off,acpi=on -accel kvm -cpu host,migratable=on,hv-time=on,hv-relaxed=on,hv-vapic=on,hv-spinlocks=0x1fff -global driver=cfi.pflash01,property=secure,value=on -m size=8388608k -object {"qom-type":"memory-backend-ram","id":"pc.ram","size":8589934592} -overcommit mem-lock=off -smp 8,sockets=1,dies=1,clusters=1,cores=8,threads=1 -uuid f7048348-4bbe-41a9-b42f-b935e8e1ebae -no-user-config -nodefaults -chardev socket,id=charmonitor,fd=34,server=on,wait=off -mon chardev=charmonitor,id=monitor,mode=control -rtc base=localtime,driftfix=slew -global kvm-pit.lost_tick_policy=delay -no-shutdown -global ICH9-LPC.disable_s3=1 -global ICH9-LPC.disable_s4=1 -boot strict=on -device {"driver":"pcie-root-port","port":16,"chassis":1,"id":"pci.1","bus":"pcie.0","multifunction":true,"addr":"0x2"} -device {"driver":"pcie-root-port","port":17,"chassis":2,"id":"pci.2","bus":"pcie.0","addr":"0x2.0x1"} -device {"driver":"pcie-root-port","port":18,"chassis":3,"id":"pci.3","bus":"pcie.0","addr":"0x2.0x2"} -device {"driver":"pcie-root-port","port":19,"chassis":4,"id":"pci.4","bus":"pcie.0","addr":"0x2.0x3"} -device {"driver":"pcie-root-port","port":20,"chassis":5,"id":"pci.5","bus":"pcie.0","addr":"0x2.0x4"} -device {"driver":"pcie-root-port","port":21,"chassis":6,"id":"pci.6","bus":"pcie.0","addr":"0x2.0x5"} -device {"driver":"pcie-root-port","port":22,"chassis":7,"id":"pci.7","bus":"pcie.0","addr":"0x2.0x6"} -device {"driver":"pcie-root-port","port":23,"chassis":8,"id":"pci.8","bus":"pcie.0","addr":"0x2.0x7"} -device {"driver":"pcie-root-port","port":24,"chassis":9,"id":"pci.9","bus":"pcie.0","multifunction":true,"addr":"0x3"} -device {"driver":"pcie-root-port","port":25,"chassis":10,"id":"pci.10","bus":"pcie.0","addr":"0x3.0x1"} -device {"driver":"pcie-root-port","port":26,"chassis":11,"id":"pci.11","bus":"pcie.0","addr":"0x3.0x2"} -device {"driver":"pcie-root-port","port":27,"chassis":12,"id":"pci.12","bus":"pcie.0","addr":"0x3.0x3"} -device {"driver":"pcie-root-port","port":28,"chassis":13,"id":"pci.13","bus":"pcie.0","addr":"0x3.0x4"} -device {"driver":"pcie-root-port","port":29,"chassis":14,"id":"pci.14","bus":"pcie.0","addr":"0x3.0x5"} -device {"driver":"qemu-xhci","p2":15,"p3":15,"id":"usb","bus":"pci.1","addr":"0x0"} -blockdev {"driver":"file","filename":"/var/lib/libvirt/images/win11-2.qcow2","node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap"} -blockdev {"node-name":"libvirt-2-format","read-only":false,"discard":"unmap","driver":"qcow2","file":"libvirt-2-storage","backing":null} -device {"driver":"ide-hd","bus":"ide.0","drive":"libvirt-2-format","id":"sata0-0-0","bootindex":1} -blockdev {"driver":"file","filename":"/var/lib/libvirt/images/26100.1150.240705-0657.GE_RELEASE_CLIENTMULTI_X64FRE_EN-US.ISO","node-name":"libvirt-1-storage","read-only":true} -device {"driver":"ide-cd","bus":"ide.1","drive":"libvirt-1-storage","id":"sata0-0-1"} -chardev pty,id=charserial0 -device {"driver":"isa-serial","chardev":"charserial0","id":"serial0","index":0} -chardev socket,id=chrtpm,path=/run/libvirt/qemu/swtpm/22-win11-1150-swtpm.sock -tpmdev emulator,id=tpm-tpm0,chardev=chrtpm -device {"driver":"tpm-crb","tpmdev":"tpm-tpm0","id":"tpm0"} -device {"driver":"usb-tablet","id":"input0","bus":"usb.0","port":"1"} -audiodev {"id":"audio1","driver":"none"} -vnc 127.0.0.1:0,audiodev=audio1 -device {"driver":"bochs-display","id":"video0","vgamem":16777216,"bus":"pcie.0","addr":"0x1"} -global ICH9-LPC.noreboot=off -watchdog-action reset -device {"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.2","addr":"0x0"} -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny -msg timestamp=on
Emulated/Virtualized environment
-
Operating system: Windows 11 24H2+
-
OS/kernel version: 26100.1150+
-
Architecture: x86_64
Description of problem
Host CPU cores which get assigned a vCPU of an affected VM become unable to enter C3 state. The same applies to their HT siblings. The host experiences increased VMEXIT count and a slight increase in CPU load compared to a non-affected VM.
This can be reproduced on Windows 11 24H2 / 24H2 26100.1150 / 24H2 IoT LTS / 25H2
Similar findings are reported for Server 2025
The issue does not occur on: Windows 10 22H2 / 11 23H2
Following is an output comparison of perf kvm and turbostat while assigning the VM to uneven cores. C3 time can be seen decreasing from about 90% on 23H2 to 0% on 24H2, despite CPU load only increasing by 1% or so per core:
# 23H2 (cpuset=uneven cores)
$ perf kvm --host stat live
VM-EXIT Samples Samples% Time% Min Time Max Time Avg time
EOI_INDUCED 494 48.96% 0.03% 1.43us 6.00us 4.04us ( +- 0.72% )
HLT 492 48.76% 98.96% 4530.68us 15769.42us 15435.74us ( +- 0.32% )
EPT_MISCONFIG 9 0.89% 1.02% 13.07us 77606.03us 8658.88us ( +- 99.53% )
EXTERNAL_INTERRUPT 5 0.50% 0.00% 14.94us 20.75us 17.80us ( +- 5.33% )
VMCALL 5 0.50% 0.00% 4.66us 14.60us 8.37us ( +- 20.82% )
APIC_WRITE 4 0.40% 0.00% 5.20us 7.13us 6.41us ( +- 6.52% )
$ turbostat --quiet --interval 1
Core CPU Avg_MHz Busy% Bzy_MHz TSC_MHz IPC IRQ NMI SMI POLL% C1% C2% C3% CPU%c1 CPU%c6 CPU%c7 CoreTmp CoreThr PkgTmp Totl%C0 Any%C0 GFX%C0 CPUGFX% Pkg%pc2 Pkg%pc3 Pkg%pc6 Pkg%pc8 Pk%pc10 CPU%LPI SYS%LPI PkgWatt CorWatt GFXWatt RAMWatt PKG_% RAM_% UncMHz SysWatt
- - 13 1.64 813 2112 0.50 2892 0 0 0.00 1.05 6.96 90.47 3.33 38.03 55.69 39 0 40 37.05 22.30 0.00 0.00 57.25 0.00 0.00 0.00 0.00 0.00 0.00 2.36 1.10 0.00 0.00 0.00 0.00 800 0.00
0 0 11 1.43 800 2112 0.29 219 0 0 0.00 1.86 14.14 82.81 4.24 20.95 71.07 38 0 40 37.04 22.29 0.00 0.00 57.24 0.00 0.00 0.00 0.00 0.00 0.00 2.36 1.10 0.00 0.00 0.00 0.00 800
0 1 15 1.90 800 2112 0.34 200 0 0 0.00 1.34 10.45 86.56 4.23
4 2 13 1.68 801 2112 0.27 182 0 0 0.00 0.73 14.36 83.42 4.07 15.54 77.12 39 0
4 3 11 1.40 801 2112 0.27 140 0 0 0.00 0.35 7.95 90.50 4.07
8 4 17 1.97 859 2112 0.57 186 0 0 0.00 1.74 12.11 84.36 6.21 11.48 78.55 37 0
8 5 14 1.62 860 2112 0.64 128 0 0 0.00 0.33 4.39 93.82 6.21
12 6 11 1.41 801 2112 0.30 132 0 0 0.00 0.12 7.93 90.69 1.74 9.54 85.70 35 0
12 7 11 1.41 801 2112 0.29 122 0 0 0.00 0.25 4.95 93.55 1.74
16 8 6 0.75 806 2112 0.27 72 0 0 0.00 0.90 4.16 94.28 1.71 4.73 91.84 36 0
16 9 8 1.03 802 2112 0.31 98 0 0 0.00 0.26 2.19 96.62 1.71
20 10 5 0.60 803 2112 0.28 55 0 0 0.00 1.22 2.81 95.45 2.00 3.41 93.05 35 0
20 11 8 1.02 802 2112 0.32 96 0 0 0.00 0.37 2.09 96.61 2.00
24 12 15 1.72 867 2112 0.92 135 0 0 0.00 0.48 8.45 89.48 3.39 8.25 85.30 37 0
24 13 11 1.27 857 2112 0.28 112 0 0 0.00 0.17 4.69 94.00 3.39
28 14 12 1.45 805 2112 0.48 115 0 0 0.00 0.50 9.68 88.52 2.00 9.49 85.76 37 0
28 15 10 1.21 803 2112 0.30 115 0 0 0.00 0.18 4.29 94.47 2.00
# 24H2 (cpuset=uneven cores)
$ perf kvm --host stat live
VM-EXIT Samples Samples% Time% Min Time Max Time Avg time
HLT 1105 49.46% 97.89% 20.43us 80025.30us 1827.12us ( +- 5.43% )
EOI_INDUCED 1099 49.19% 1.26% 0.64us 24351.12us 23.61us ( +- 93.83% )
APIC_WRITE 12 0.54% 0.00% 2.39us 4.90us 3.88us ( +- 6.18% )
VMCALL 9 0.40% 0.00% 7.35us 16.19us 11.09us ( +- 10.53% )
EXTERNAL_INTERRUPT 7 0.31% 0.00% 4.24us 12.82us 6.83us ( +- 15.77% )
EPT_MISCONFIG 2 0.09% 0.84% 63.00us 17298.67us 8680.83us ( +- 99.27% )
$ turbostat --quiet --interval 1
Core CPU Avg_MHz Busy% Bzy_MHz TSC_MHz IPC IRQ NMI SMI POLL% C1% C2% C3% CPU%c1 CPU%c6 CPU%c7 CoreTmp CoreThr PkgTmp Totl%C0 Any%C0 GFX%C0 CPUGFX% Pkg%pc2 Pkg%pc3 Pkg%pc6 Pkg%pc8 Pk%pc10 CPU%LPI SYS%LPI PkgWatt CorWatt GFXWatt RAMWatt PKG_% RAM_% UncMHz SysWatt
- - 39 3.08 1277 2112 1.30 9082 0 0 0.01 2.27 44.87 49.88 78.11 29.66 0.00 39 0 43 64.32 35.65 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 5.53 4.04 0.00 0.00 0.00 0.00 800 0.00
0 0 17 1.73 958 2112 1.15 344 0 0 0.03 2.13 31.74 64.50 96.13 0.00 0.00 39 0 43 64.32 35.65 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 5.53 4.04 0.00 0.00 0.00 0.00 800
0 1 23 2.84 811 2112 1.01 871 0 0 0.00 2.44 94.89 0.00 96.12
4 2 3 0.38 815 2112 0.70 101 0 0 0.00 2.64 3.22 93.78 97.82 0.00 0.00 39 0
4 3 19 2.36 803 2112 1.10 855 0 0 0.00 1.43 96.37 0.00 97.83
8 4 11 1.06 1045 2112 0.87 158 0 0 0.03 2.15 10.54 86.29 96.81 0.00 0.00 37 0
8 5 23 2.72 829 2112 1.40 851 0 0 0.00 1.38 96.07 0.00 96.81
12 6 5 0.52 962 2112 0.76 88 0 0 0.00 2.82 5.10 91.58 97.74 0.00 0.00 36 0
12 7 19 2.30 806 2112 1.10 851 0 0 0.00 1.74 96.13 0.00 97.74
16 8 8 0.76 983 2112 0.69 142 0 0 0.00 3.16 6.56 89.55 97.32 0.00 0.00 38 0
16 9 20 2.52 804 2112 1.04 850 0 0 0.03 1.86 95.79 0.00 97.32
20 10 4 0.50 849 2112 0.91 203 0 0 0.00 6.70 4.13 88.71 97.58 0.00 0.00 38 0
20 11 20 2.48 806 2112 1.08 850 0 0 0.00 1.87 95.81 0.00 97.58
24 12 31 1.96 1580 2112 1.46 228 0 0 0.00 7.63 13.06 77.40 96.18 0.00 0.00 37 0
24 13 21 2.50 833 2112 1.01 849 0 0 0.03 1.57 96.10 0.00 96.18
28 14 9 1.03 915 2112 0.87 121 0 0 0.01 2.90 14.19 81.93 97.14 0.00 0.00 39 0
28 15 20 2.44 805 2112 1.05 851 0 0 0.03 1.47 96.26 0.00 97.14
Steps to reproduce
- Launch an affected VM while pinning the vCPU to a specific core
- Host experiences increased CPU load due to high VMEXIT count
- Host experiences decreased single core performance due to decreased C3 time -> less headroom for Turbo Boost
Additional information
CPU: Intel i7-12700
I've tried different CPU models, flags, enlightments, as well as settings inside the host such as GlobalTimerResolutionRequests, bcdedit flags, disabling nested virtualization etc. but without success.
The only way I found C3 to work on 24H2 and higher is by enabling useplatformticks with HPET enabled (which results in even worse performance). This makes me believe something related to timer resolution changed between 23H2 and 24H2.