Hi, I am trying to use MEMDISK from the GRUB boot loader, and gets stuck on the memory detection. MEMDISK reports dos_mem = 0 low_mem = 0 high_mem = 0
Henrik Nordstrom wrote:> Hi, > > I am trying to use MEMDISK from the GRUB boot loader, and gets stuck on the > memory detection. MEMDISK reports > > dos_mem = 0 > low_mem = 0 > high_mem = 0 > >>From reading the sources this would be if the e820 query does not return any > valid data. Confirmed by adding a printf in insertrange(). insertrange() does > not seem to be called at all during the memory detection (only to reserve the > ramdisk memory before MEMDISK bails out) > > However, when booting a Linux kernel the Linux kernel does detect a e820 BIOS > memory map that looks pretty OK to me: > > BIOS-provided physical RAM map: > BIOS-e820: 0000000000000000 - 00000000000a0000 (usable) > BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved) > BIOS-e820: 0000000000100000 - 000000000fe00000 (usable) > BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved) > user-defined physical RAM map: > user: 0000000000000000 - 00000000000a0000 (usable) > user: 00000000000f0000 - 0000000000100000 (reserved) > user: 0000000000100000 - 000000000fe00000 (usable) > user: 00000000ffff0000 - 0000000100000000 (reserved) >This is probably because GRUB likes to mess with the memory map instead of letting the kernel do the right thing (hence the "user-defined physical RAM map".) This is a total braindamage in GRUB. -hpa
Hmm.. added lots of debug printf in get_e820(), and all of a sudden it works. Looks like a problem with the assembly code or my build environment (RedHat 7.3 with official upgrades/fixes). I see that there is a prebuild memdisk in the tar ball (didn't notice this at first), and I can confirm that this works just fine. Why didn't I try this first of all things? Regards Henrik enrik Nordstrom wrote:> Hi, > > I am trying to use MEMDISK from the GRUB boot loader, and gets stuck on the > memory detection. MEMDISK reports > > dos_mem = 0 > low_mem = 0 > high_mem = 0 > > From reading the sources this would be if the e820 query does not return > any valid data. Confirmed by adding a printf in insertrange(). > insertrange() does not seem to be called at all during the memory detection > (only to reserve the ramdisk memory before MEMDISK bails out) > > However, when booting a Linux kernel the Linux kernel does detect a e820 > BIOS memory map that looks pretty OK to me: > > BIOS-provided physical RAM map: > BIOS-e820: 0000000000000000 - 00000000000a0000 (usable) > BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved) > BIOS-e820: 0000000000100000 - 000000000fe00000 (usable) > BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved) > user-defined physical RAM map: > user: 0000000000000000 - 00000000000a0000 (usable) > user: 00000000000f0000 - 0000000000100000 (reserved) > user: 0000000000100000 - 000000000fe00000 (usable) > user: 00000000ffff0000 - 0000000100000000 (reserved) > > > Any clues on where to look next? > > Regards > Henrik > > _______________________________________________ > SYSLINUX mailing list > Submissions to SYSLINUX at zytor.com > Unsubscribe or set options at: > http://www.zytor.com/mailman/listinfo/syslinux
Apparently Analagous Threads
- pxelinux / memdisk booting problem
- [PATCH] Let MEMDISK honor the quiet append option
- [PATCH][git-pull] memdisk/setup.c: Limit available RAM hack
- [RFC kernel 0/2]A PV solution for KVM live migration optimization
- [RFC kernel 0/2]A PV solution for KVM live migration optimization