[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug #23615] EFI memory map size

From: David Holloway
Subject: [bug #23615] EFI memory map size
Date: Tue, 17 Jun 2008 08:57:56 +0000
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv: Gecko/20080404 Firefox/


                 Summary: EFI memory map size
                 Project: GNU GRUB
            Submitted by: gwythaint
            Submitted on: Tuesday 06/17/2008 at 08:57
                Category: Booting
                Severity: Major
                Priority: 5 - Normal
              Item Group: Software Error
                  Status: None
                 Privacy: Public
             Assigned to: None
         Originator Name: 
        Originator Email: 
             Open/Closed: Open
         Discussion Lock: Any
                 Release: kern/efi/mm.c version 1.4
         Reproducibility: Every Time
         Planned Release: 



grub_efi_get_memory_map() has two failure modes and one,
GRUB_EFI_BUFFER_TOO_SMALL is not handled gracefully.

The the problem occurs if a native EFI firmware requires more than
MEMORY_MAP_SIZE; 4096 bytes in this case.

By happenstance, the problem is mis-reported as "too little memory"  when in
fact, the memory map itself is not processor properly.

It probably takes a seriously large server board such as the Intel NSW1U
Network Server to report such a large memory map table.

As an example, the NSW1U, American Megatrends bios version
S5000.86B.10.00.0085 requires 7872 bytes.

The following is a workaround for this class of symptom and a differential
diagnostic message for the errors possible from grub_efi_get_memory_map().

Index: mm.c
RCS file: /sources/grub/grub2/kern/efi/mm.c,v
retrieving revision 1.4
diff -r1.4 mm.c
< #define MEMORY_MAP_SIZE       0x1000
> #define MEMORY_MAP_SIZE       0x2000
>   int efi_status;
<   if (grub_efi_get_memory_map (&map_size, memory_map, 0, &desc_size, 0) <
>   efi_status = grub_efi_get_memory_map (&map_size, memory_map, 0,
&desc_size, 0);
>   if (efi_status == 0)
>     grub_fatal ("buffer too small: need %d bytes", map_size);
>   if (efi_status == -1)


Reply to this item at:


  Message sent via/by Savannah

reply via email to

[Prev in Thread] Current Thread [Next in Thread]