[syslinux] [PATCH] efi: leaving long mode in kernel_jump routine

Patrick Masotta masottaus at yahoo.com
Tue Aug 4 00:58:33 PDT 2015


>>> 
 Syslinux 6.03 (efi64) fails to boot a 32-bit kernel. The way Syslinux
 leaves long mode in kernel_jump assembly routine does not follow AMD64
 specifications. More precisely:
 1. After setting a new GADT, `cs` has to be refresh by doing a long jump, but it is not
 2. Other segments have to be updated, but they are not
 3. Disabling paging has to be done before disabling long mode, but the implementation does the opposite
 
 In most cases, a computer that tries to execute the kernel_jump routine
 reboot (it can also hangs). This patch fixes the kernel_jump routine.
 
 Signed-off-by: Thomas Letan <thomas.letan at ssi.gouv.fr>
<<<

Have you tested it?
Have you checked that efi64 loading 64bit kernels is OK from a kernel_jump point of view?
Thanks for the patch. 

Best,
Patrick





More information about the Syslinux mailing list