Bug#419994: Missing memory in Xen due to wrong detection of e820
memory map in grub
Rafal Kupka
kupson at kupson.fdns.net
Thu Apr 19 10:10:09 UTC 2007
Package: grub
Version: 0.97-27
Severity: normal
Tags: patch
Hello,
On my system grub don't properly detect E820 memory map.
Without it Xen hypervisor cannot use memory above 4G range.
Output from grub command displaymem:
grub> displaymem
EISA Memory BIOS Interface is present
Address Map BIOS Interface is present
Lower memory: 639K, Upper memory (to first chipset hole): 3406656K
grub>
I think that problem is located in do { } while (cont) loop at file
stage2/common.c around line 181.
It looks like while loop is optimized away (gone) during compilation.
Don't know if it's bug in grub or toolchain and unfortunately I haven't
necessary knowledge to verify that.
Patch below fixes problem:
--- ../common.c 2007-04-19 11:36:19.000000000 +0200
+++ stage2/common.c 2007-04-19 11:36:55.000000000 +0200
@@ -142,7 +142,8 @@
init_bios_info (void)
{
#ifndef STAGE1_5
- unsigned long cont, memtmp, addr;
+ unsigned long memtmp, addr;
+ volatile unsigned long cont;
int drive;
#endif
displaymem after patch:
grub> displaymem
EISA Memory BIOS Interface is present
Address Map BIOS Interface is present
Lower memory: 639K, Upper memory (to first chipset hole): 3406656K
[Address Range Descriptor entries immediately follow (values are 64-bit)]
Usable RAM: Base Address: 0x0 X 4GB + 0x0,
Length: 0x0 X 4GB + 0x9fc00 bytes
.... [ more ranges ] ...
Usable RAM: Base Address: 0x1 X 4GB + 0x0,
Length: 0x0 X 4GB + 0x30000000 bytes
grub>
Regards
Kupson
-- System Information:
Debian Release: 4.0
APT prefers stable
APT policy: (900, 'stable'), (700, 'unstable')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.20-1-amd64 (SMP w/2 CPU cores)
Locale: LANG=pl_PL.UTF-8, LC_CTYPE=pl_PL.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
-- no debconf information
More information about the Pkg-grub-devel
mailing list