Skip to content

ARM64 Windows VM Stays on a Black Screen for a Long Time When Shutting Down (Fast Startup) ​

On ARM64 hosts a Windows 11 ARM virtual machine shut down from inside Windows can sit on a black screen for tens of seconds to several minutes before it powers off. The longer the VM has been running, the longer this takes. Linux VMs are not affected.

Symptoms ​

  1. Virtual machine

After you click Shut down, the screen stays black, the VM responds to nothing, and it only powers off much later.

  1. Host
  • The host logs (dmesg, journalctl) show no errors.
  • top -H -p $(cat /var/run/qemu-server/<vmid>.pid) shows every CPU n/KVM thread at 100%.
  1. How to confirm

While the VM is stuck, run the following to count VM exits over one second (replace <vmid> with the VM ID):

pid=$(cat /var/run/qemu-server/<vmid>.pid)
d=$(ls -d /sys/kernel/debug/kvm/${pid}-*)
e=$(cat $d/exits); w=$(cat $d/wfi_exit_stat); sleep 1
echo "exits/s=$(( $(cat $d/exits) - e )) wfi/s=$(( $(cat $d/wfi_exit_stat) - w ))"

If exits/s is around a million or more and wfi/s is 0, you have hit this issue:

exits/s=1141905 wfi/s=0

Cause ​

  1. Windows enables "Fast Startup" by default, so Shut down actually hibernates the kernel session to hiberfil.sys.
  2. While writing the hibernation file, Windows freezes all other CPUs. A single CPU, with interrupts disabled, polls the disk through diskdump.sys and calls KeStallExecutionProcessor between polls to wait briefly.
  3. Windows on ARM64 times that wait with the PMU cycle counter PMCCNTR_EL0. Under KVM, every read of this register traps to the host, and the virtual PMU counts guest cycles only, so the time spent handling each trap on the host is not counted.
  4. Measured during this phase, the counter advanced at only about 2.6% of real time. Every wait was stretched by roughly 38x, which turns a few seconds of writing into minutes.

Solution ​

Disable hibernation inside Windows, which also disables Fast Startup. From an elevated PowerShell or Command Prompt, run:

powercfg /h off

Shutdown then completes within seconds.

To disable only Fast Startup and keep hibernation, go to Control Panel → Power Options → Choose what the power buttons do → Change settings that are currently unavailable, and clear "Turn on fast startup".