Imported Windows VM hangs/crashes at login: Xen PoD memory issue with high maxmem

I ran into an issue after migrating a Windows VM to Qubes OS.

Symptoms:

  • Windows VM was imported from VMware / converted disk image.
  • UEFI boot worked.
  • The VM sometimes reached the Windows login screen.
  • At or shortly after login, the VM froze, reset, or the window closed.
  • It looked like a Windows boot/driver/storage issue at first.

Relevant Xen log:

p2m_pod_demand_populate: DomXX out of PoD memory!
domain_crash called from arch/x86/mm/p2m-pod.c

The VM had a very high memory setting, around 20 GB, on a system with about 31 GB RAM.

Fix/workaround:

qvm-shutdown --wait <VMNAME>
qvm-prefs <VMNAME> memory 8192
qvm-prefs <VMNAME> maxmem 8192
qvm-prefs <VMNAME> vcpus 4
qvm-prefs <VMNAME> debug true
qvm-start <VMNAME>

After setting memory and maxmem to the same smaller fixed value, the Windows VM booted and reached the desktop normally.

So if a migrated Windows HVM appears to hang/crash around login, check hypervisor.log for:

out of PoD memory

It may not be a broken Windows installation or bad migration, but Xen/Qubes memory overcommit / PoD behavior caused by too high maxmem.

By the way: I run the VM from a external SSD.

It literally says you don’t have enough memory to run it and you need to shrink.