Andrey Plankin
2015-Nov-21 06:04 UTC
[syslinux] Only 2.5G of RAM available then syslinux64.efi boots 32-bit linux 686-pae
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. 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? 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 Current git: e0be4d87135 Regards, Andrey
Ady
2015-Nov-23 20:06 UTC
[syslinux] Only 2.5G of RAM available when syslinux64.efi boots 32-bit linux 686-pae
> 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. > > 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? > > 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 > > > Current git: e0be4d87135 > > Regards, > AndreyIt saddens (me) to see no reply to this email thread at all, especially from developers. C'mon; really? Not even a comment asking to post the _complete_ content of the syslinux.cfg file? No suggestion about kernel options such as 'mem=', 'vmalloc=' or any other / similar? No question about the building environment (nasm, gnu-efi, gcc, binutils, mtools...)? No chance that someone could suggest that updating the gnu-efi submodule _might_ _perhaps_ affect the result? I cannot believe that there is not even one developer that could think (and post here) about the potential idea that some code in EFISTUB (or whatever is related to EFI in the Linux kernel) needs to be also incorporated in Syslinux. Really? There is not one person that could think that some development in the EFISTUB code (or similar) during the last year-and-a-half / two years might need to be ported to the Syslinux code too? And what about fallback booting methods (a matter that has been mentioned here more than once, but it is not clear how much has been really done to completely support older kernels)? We have seen problems with kernels built with or without certain options in the past. There is really not even one subscriber to this Syslinux Mailing List that could suggest in this email thread that there might still be some issue regarding kernel building options when the kernel is booted by Syslinux? Let's also not forget that Syslinux seems to be "more respectful" than GRUB2 when booting (u)efi images. Could this be a factor in how much RAM is seen after successfully booting the kernel? I do not know the reason for the different behavior between syslinux.efi X64 and GRUB2.efi X64 when booting this 32-bit pae kernel, nor the answers to these questions, but I am at least trying. Regards, Ady.> _______________________________________________ > Syslinux mailing list > Submissions to Syslinux at zytor.com > Unsubscribe or set options at: > http://www.zytor.com/mailman/listinfo/syslinux >
Patrick Masotta
2015-Nov-24 13:15 UTC
[syslinux] Only 2.5G of RAM available then syslinux64.efi boots 32-bit linux 686-pae
>>>From: Andrey Plankin via Syslinux <syslinux at zytor.com> To: syslinux at zytor.com Sent: Friday, November 20, 2015 11:04 PM Subject: [syslinux] Only 2.5G of RAM available then syslinux64.efi boots 32-bit linux 686-pae 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. 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? 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 Current git: e0be4d87135 Regards, Andrey <<< 1) I think this problem is not related to appended kernel variables.2) Syslinux allocates and free EFI memory before calling ExitBootServices()but even if SL forgets freeing memory I cannot belive SL ever allocates 32-2.5=29.5GB or so.Then the problem does not look like not released SL allocated memory... Questions 1) If you boot the PAE kernel with syslinux32.efi do you see the same problem? 2) Have you tried booting in different PCs to rule out some FW related issue? Debugging this is not simple but it can be done calling EFI_BOOT_SERVICES.GetMemoryMap()as soon as the syslinux64.efi runs and before calling ExitBootServices() then parsing the returned array of EFI_MEMORY_DESCRIPTORS we can see what's going on. Best,Patrick
Gene Cumm
2015-Nov-26 12:59 UTC
[syslinux] Only 2.5G of RAM available then syslinux64.efi boots 32-bit linux 686-pae
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.noautologinIs 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: e0be4d87135So a build of Syslinux from that commit. -- -Gene
Ady
2015-Nov-26 15:39 UTC
[syslinux] Only 2.5G of RAM available then syslinux64.efi boots 32-bit linux 686-pae
> 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. > > -- > -GeneWhile 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 >
Gene Cumm
2015-Nov-27 00:03 UTC
[syslinux] Only 2.5G of RAM available when syslinux64.efi boots 32-bit linux 686-pae
On Mon, Nov 23, 2015 at 3:06 PM, Ady via Syslinux <syslinux at zytor.com> wrote:> It saddens (me)> C'mon; really?As you asked. -- -Gene
Celelibi
2015-Nov-27 04:42 UTC
[syslinux] Only 2.5G of RAM available then syslinux64.efi boots 32-bit linux 686-pae
2015-11-21 7:04 UTC+01:00, Andrey Plankin via Syslinux <syslinux at zytor.com>:> 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. > > 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?Is it possible to have access to the kernel you're trying to boot? Celelibi
Celelibi
2015-Nov-27 05:52 UTC
[syslinux] Only 2.5G of RAM available then syslinux64.efi boots 32-bit linux 686-pae
2015-11-27 5:42 UTC+01:00, Celelibi <celelibi at gmail.com>:> 2015-11-21 7:04 UTC+01:00, Andrey Plankin via Syslinux > <syslinux at zytor.com>: >> 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. >> >> 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? > > Is it possible to have access to the kernel you're trying to boot?(Shamless third message in a row.) It looks like there is no automatic build of the sysappend string in UEFI. So you may try adding the following option in your config. sysappend CPU=6:P You may also try the less prefered kernel option "forcepae" documented as follow: forcepae [X86-32] Forcefully enable Physical Address Extension (PAE). Many Pentium M systems disable PAE but may have a functionally usable PAE implementation. Warning: use of this parameter will taint the kernel and may cause unknown problems. So, enable it at your own risks. BTW, what CPU are you trying to boot? Celelibi
Apparently Analagous Threads
- Only 2.5G of RAM available when syslinux64.efi boots 32-bit linux 686-pae
- Only 2.5G of RAM available then syslinux64.efi boots 32-bit linux 686-pae
- Only 2.5G of RAM available then syslinux64.efi boots 32-bit linux 686-pae
- Only 2.5G of RAM available then syslinux64.efi boots 32-bit linux 686-pae
- Only 2.5G of RAM available when syslinux64.efi boots 32-bit linux 686-pae