Hello,

Given the following vm.cfg file:

name="vm"
type="hvm"

vcpus=4
memory=1024

firmware_override="/root/xen-syms"

kernel="/boot/vmlinuz-4.4-xen"
ramdisk="/boot/initrd-4.4.0+10.img"

cmdline="console=xen,pv dom0=pv --- earlyprintk=xen"

Xen crashes with the following trace:

(d15) (XEN) Xen BUG at pvh-boot.c:82
(d15) (XEN) ----[ Xen-4.12.0-rc  x86_64  debug=y   Not tainted ]----
(d15) (XEN) CPU:    0
(d15) (XEN) RIP:    e008:[<ffff82d0804331f2>] pvh_init+0x27d/0x2fe
<snip>
(d15) (XEN) Xen call trace:
(d15) (XEN)    [<ffff82d0804331f2>] pvh_init+0x27d/0x2fe
(d15) (XEN)    [<ffff82d080429000>] __start_xen+0x14c/0x28f6
(d15) (XEN)    [<ffff82d0802000f3>] __high_start+0x53/0x55
(d15) (XEN)
(d15) (XEN)
(d15) (XEN) ****************************************
(d15) (XEN) Panic on CPU 0:
(d15) (XEN) Xen BUG at pvh-boot.c:82
(d15) (XEN) ****************************************

The problem is that Xen is started at its PVH entrypoint (contrary to the instructions in the vm config file), and Xen unconditionally expects RSDP to be passed.

There are at least two bugs here.

1) RSDP was a late addition to the PVH boot protocol.  Xen's PVH entrypoint must not mandate its existence, because there are releases of the domain builder which don't provide it.

2) The HVM/PVH boot confusion.  This think this is a still-outstanding bug around the broken assumption that the hvmloader binary speaks the PVH protocol without advertising itself appropriately (I really regret not objecting to those patches before they went in).  At the least, that needs fixing by putting a proper ELF note in hvmloader, and the domain builder needs to be updated to build all PVH-boot-ABI images consistently.

I don't have time to look into this at the moment, if anyone fancies trying to fix these issues.

~Andrew