UEFI enabled HVMs hang on "Guest has not initialized the display (yet)"
Qubes OS release
Fresh install of 4.2-RC4
Brief summary
After upgrading to 4.2, UEFI enabled HVMs won't boot anymore and will just hang on Guest has not initialized the display (yet)
Steps to reproduce
- Create an HVM qube
- Set uefi domain feature to 1 via
qvm-features <vm-name> uefi 1 - Start HVM qube
- It hangs on this:
Expected behavior
HVM with UEFI boot enabled boots.
Actual behavior
It hangs while displaying the message Guest has not initialized the display (yet)
What I think is happening (And I might be wrong). It looks like there were changes related to edk2 packages and how things work. Starting with edk2-stable202108, they removed Xen support and moved it to the OvmfXen, and it looks like ovmf binaries provided in dom0 lack Xen support (not from edk2-ovmf-xen)...
So as for temporary solution, it is possible to get ovmf.bin firmware from R4.1 installation that still has Xen support (located at /usr/libexec/xen/boot/ovmf.bin) and place it in /usr/libexec/xen/boot/ovmf.bin in new R4.2 installation. With that, HVMs with uefi boot enabled work.
references: https://bugzilla.redhat.com/show_bug.cgi?id=2170730 https://bugzilla.tianocore.org/show_bug.cgi?id=2122
Thank you, for mentioning the workaround. I had the same problem, fetched the R4.1 ovmf.bin from https://yum.qubes-os.org/r4.1/current/host/fc32/rpm/xen-runtime-4.14.6-4.fc32.x86_64.rpm and it works for me too.
Update: My HVM/UEFI qube never had a PCI device attached and it still got stuck with ovmf.bin from R4.2.
It works for HVM without PCI devices attached to it.
But if I attach any PCI device to HVM with UEFI enabled then it'll be stuck at Guest has not initialized the display (yet) again.
Yeah, this solution will only enable you to boot HVMs with uefi boot enabled. But soon as you add PCI devices to that HVM, it will get stuck again.
I'll try to see whats wrong today or tomorrow.
This looks like a Xen build system bug. There is no way that Xen should be building an ovmf.bin without Xen support.
I don't think Xen builds OVMF at all. It looks to be taken from edk2-ovmf Fedora's package. I guess that's the problem, looking at Fedora package, it should be edk2-ovmf-xen nowadays. And since the package already seems to provide combined code+vars, that extra processing in xen.spec is not needed anymore.