For those following this... By poking characters at the screen and bisecting where they stopped, I have narrowed the problem to the code in edd.S. I can successfully boot by setting opt_edd=off on the Xen cmd line and I can also boot with the following patch applied:
diff --git a/xen/arch/x86/boot/edd.S b/xen/arch/x86/boot/edd.S index 73371f98b5..5409f1d9a1 100644 --- a/xen/arch/x86/boot/edd.S +++ b/xen/arch/x86/boot/edd.S @@ -148,5 +148,6 @@ GLOBAL(boot_mbr_signature_nr) .byte 0 GLOBAL(boot_mbr_signature) .fill EDD_MBR_SIG_MAX*8,1,0 + .align 4096 GLOBAL(boot_edd_info) - .fill 512,1,0 # big enough for a disc sector + .fill 4096,1,0 # big enough for a disc sector (based on a hunch that the BIOS defaults to a 4K sector for my NVMe drive) I need to investigate some more but I do wonder whether the EDD info should be read first to determine the appropriate size of memory buffer to use when issuing the read of the MBR. Hardcoding a 4k reservation seems like the wrong thing to do, even if it is sufficient for this BIOS. Paul _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel