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

Ady
Sat, 08 Aug 2015 11:28:05 -0000

> 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.
>

Is this patch going to be yet another one that will be "lost" in the
mailing list?

Is this patch incorrect? Not useful? Unnecessary?

Newer kernels are supposed to respect certain rules / standards /
protocols, and IF everything is done "adequately", then Syslinux (BIOS
/ EFI*) should be able to boot such newish kernels.

What about older ones? Those that are not %100 compliant with newer
rules / protocols / standards?

TIA,
Ady.