Josh Triplett reported this problem with memory sizing: On Fri, 2010-06-11 at 23:03 -0700, Josh Triplett wrote: > Package: linux-2.6 > Severity: normal > > I managed to reproduce the problem using stock upstream kernels and > defconfig, and with defconfig (and no initramfs) the kernel managed to > use little enough memory that it booted successfully with <64MB of RAM. > > Investigating, I found that Linux decided not to use e820, and instead > decided to use the older BIOS function 0x88, which cannot report more > than 64MB of RAM. > > With some investigation and bisection, I managed to track the problem > down to the following commit: > > commit c549e71d073a6e9a4847497344db28a784061455 > Author: H. Peter Anvin > Date: Sat Mar 28 13:53:26 2009 -0700 > > x86, setup: ACPI 3, BIOS workaround for E820-probing code > > Impact: ACPI 3 spec compliance, BIOS bug workaround > > The ACPI 3 spec added another field to the E820 buffer -- which is > backwards incompatible, since it contains a validity bit. > Furthermore, there has been at least one report of a BIOS which > assumes that the buffer it is pointed at is the same buffer as for the > previous E820 call. Therefore, read the data into a temporary buffer > and copy the standard part of it if and only if the valid bit is set. > > Signed-off-by: H. Peter Anvin > > > A kernel built from c549e71d073a6e9a4847497344db28a784061455 finds <64MB > of RAM; a kernel built from c549e71d073a6e9a4847497344db28a784061455^ > successfully finds all 4GB of RAM. > > Also note that newer upstream kernels, including v2.6.35-rc3, fail as > well. Since later kernels revert part of the above commit, the issue > must lie with the parts of the commit not reverted. > > And, again, I can reproduce this using the stock upstream GRUB2 1.98 > release built from source, by booting it from a USB key, and then > booting the disk MBR via: > > set root=(hd1) > drivemap (hd1) (hd0) > chainloader +1 > boot > > > Nothing special about drivemap here; anything that uses grub's mmap > module to reserve memory via e820 (GRUB_MACHINE_MEMORY_RESERVED) will > cause grub to hook e820 and trigger this bug. However, in stock grub, > only drivemap does this. > > - Josh Triplett > > > -- Ben Hutchings Once a job is fouled up, anything done to improve it makes it worse.