[syslinux] Only 2.5G of RAM available then syslinux64.efi boots 32-bit linux 686-pae

Ady ady-sf at hotmail.com
Thu Nov 26 07:39:18 PST 2015


> On Sat, Nov 21, 2015 at 1:04 AM, Andrey Plankin via Syslinux
> <syslinux at zytor.com> wrote:
> > Hello,
> >
> > I'm booting linux-3.16-686-pae kernel (32-bit) via syslinux.efi 64-bit version.
> > After boot linux sees only 2.5G of RAM while system has 32G installed.
> 
> Why not use a 64-bit kernel with such a large machine?
> 
> Do you have the config used to build that kernel?  I'm specifically
> looking for any config line with "EFI" in it.
> 
> > If I boot the same kernel with GRUB64 efi instead of syslinux
> > then amount of RAM available to linux is 32G.
> >
> > Is this a bug or I'm missing something?
> 
> It's certainly unexpected behavior but booting a 32-bit kernel from a
> 64-bit EFI is also a little unexpected.  Syslinux will definitely try
> to use the EFI stub in the kernel to boot the kernel.  I can't speak
> for GRUB but it has done some forced behaviors in the past.
> 
> Could you post the memory map that Linux uses in both cases?  dmesg
> should be able to help.
> 
> > syslinux.cfg:
> >
> > label live-686-pae
> >         menu label Linux (686-pae)
> >         menu default
> >         linux /live/vmlinuz
> >         initrd /live/initrd.img
> >         append boot=live config persistence username=user live-config.utc=no acpi_osi=Linux live-config.noautologin
> 
> Is this the entire file or just an excerpt?  If an excerpt, I'd wonder
> if there's any other stray APPEND.  What does your kernel show as the
> command line?
> 
> > Current git: e0be4d87135
> 
> So a build of Syslinux from that commit.
> 
> -- 
> -Gene
 
 
While we wait for a reply from Andrey...


According to the report, syslinux.efi X64 is successfully booting the 
32-bit kernel. In theory, this should / would mean that the kernel was 
built with CONFIG_EFI_MIXED, among others.

As far as I know, the EFISTUB code doesn't know how to boot a kernel 
with a different architecture / bitness than the firmware. If this is 
(still) correct, then syslinux.efi X64 should be using the (latest) EFI 
handover protocol to be able to boot this 32-bit kernel (not the 
EFISTUB code).

According to the report, both grub2 and Syslinux are booting this 
32-bit kernel; with the difference being somehow related to the PAE 
feature.

Without PAE, the kernel would be able to see less than 4GB of RAM. 
According to the report, grub2 somehow is being able to boot this 
kernel with its PAE feature enabled (thus, the kernel / OS sees the 
whole RAM) while syslinux.efi seems to "block" the potential 
availability of at least part of the available RAM.

Is there any assumption in syslinux.efi about the available RAM when 
booting mixed architecture / bitness kernels? Is there some kind of 
(RAM) limitation / assumption in syslinux.efi for 32-bit? Are PAE 
kernels actually supported by the EFI handover implementation in 
syslinux.efi? If I am not mistaken, these seem to be the key points to 
be reviewed.

Regards,
Ady.

PS: The EFI-related code in the Linux kernel (e.g. EFI handover 
protocol) has seen (additional) developments during the last 1.5~2 
years. Perhaps it's time to contact Matt Fleming, or at least to visit 
the current efi code and update the Syslinux's code accordingly / if 
needed?

Regards,
Ady.

> _______________________________________________
> Syslinux mailing list
> Submissions to Syslinux at zytor.com
> Unsubscribe or set options at:
> http://www.zytor.com/mailman/listinfo/syslinux
> 




More information about the Syslinux mailing list