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