Skip to content

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

  1. Launch an affected VM while pinning the vCPU to a specific core
  2. Host experiences increased CPU load due to high VMEXIT count
  3. 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.

Edited by ​lovesyk
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information