When I kexec either Xen or Linux in real mode, from either Xen or Linux, it fails.
The last thing I see looks like SeaBIOS trying to use SMM for call32:
---------------- IN: 0x00000000000f70ec: mov %eax,%esi 0x00000000000f70ef: mov $0xb5,%eax 0x00000000000f70f5: mov $0x1234,%ecx 0x00000000000f70fb: mov $0xef3dc,%ebx 0x00000000000f7101: out %al,$0xb2 0x00000000000f7103: pause
---------------- IN: 0x00000000000ef3db: hlt
This happens when the real mode boot code calls INT 13h to read from the disk. It seems to happen with virtio and SATA disks.
This is with the Ubuntu-packaged 1.10.2-1ubuntu1 SeaBIOS. Switching to an IDE disk, or booting with 'edd=skipmbr', makes Xen work and Linux get a little further before it dies anyway.