Ping. I never heard back about this bug fix to the multiboot loader. Quoth myself on Mar 14 at 6:55 pm: > Previously, the multiboot option ROM set the mmap_length field of the > multiboot info structure to the length of the mmap array *excluding* > the final element of the array, rather than the total length of the > array. The multiboot specification indicates that this is incorrect, > and it's incompatible with GRUB's [1] and SYSLINUX's [2] multiboot > loaders, which both set mmap_length to the length of the entire mmap > array. > > This bug is easy to miss: if the VM is configured with 3584 MB of RAM > or less, the last E820 entry is simply a reserved region that does not > overlap with any other region, so there's no harm in omitting it. > However, if it's started with more than 3584 MB of RAM, the memory > above the high memory hole appears as the last entry in the E820 map > and will be omitted from the multiboot mmap array. > > This patch rewrites the loop that constructs the mmap array from the > E820 map to simplify it and fix the final mmap_length value. > > [1] grub-core/loader/i386/multiboot_mbi.c:grub_multiboot_make_mbi > > [2] com32/mboot/mem.c:mboot_make_memmap > > Signed-off-by: Austin Clements <amdra...@mit.edu> > --- > pc-bios/multiboot.bin | Bin 1024 -> 1024 bytes > pc-bios/optionrom/multiboot.S | 25 +++++++++---------------- > 2 files changed, 9 insertions(+), 16 deletions(-)