All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] efi: Reallocate memory map if ExitBootServices() fails
@ 2015-05-29  7:48 Ross Lagerwall
  2015-05-29  9:10 ` Andrew Cooper
  2015-05-29  9:45 ` Jan Beulich
  0 siblings, 2 replies; 5+ messages in thread
From: Ross Lagerwall @ 2015-05-29  7:48 UTC (permalink / raw)
  To: xen-devel; +Cc: Ross Lagerwall, Jan Beulich

If calling ExitBootServices() fails, the memory map size may have
increased, so determine the new size and reallocate the memory map
before calling GetMemoryMap() again.

This was seen on the following machine when using the iscsidxe UEFI
driver. The machine would consistently fail the first call to
ExitBootServices().
System Information
        Manufacturer: Supermicro
        Product Name: X10SLE-F/HF
BIOS Information
        Vendor: American Megatrends Inc.
        Version: 2.00
        Release Date: 04/24/2014

Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
---
 xen/common/efi/boot.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/xen/common/efi/boot.c b/xen/common/efi/boot.c
index ef8476c..078f9b8 100644
--- a/xen/common/efi/boot.c
+++ b/xen/common/efi/boot.c
@@ -1053,14 +1053,14 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
             efi_arch_video_init(gop, info_size, mode_info);
     }
 
-    efi_bs->GetMemoryMap(&efi_memmap_size, NULL, &map_key,
-                         &efi_mdesc_size, &mdesc_ver);
-    efi_memmap = efi_arch_allocate_mmap_buffer(&efi_memmap_size);
-    if ( !efi_memmap )
-        blexit(L"Unable to allocate memory for EFI memory map");
-
     for ( retry = 0; ; retry = 1 )
     {
+        efi_bs->GetMemoryMap(&efi_memmap_size, NULL, &map_key,
+                             &efi_mdesc_size, &mdesc_ver);
+        efi_memmap = efi_arch_allocate_mmap_buffer(&efi_memmap_size);
+        if ( !efi_memmap )
+            blexit(L"Unable to allocate memory for EFI memory map");
+
         status = efi_bs->GetMemoryMap(&efi_memmap_size, efi_memmap, &map_key,
                                       &efi_mdesc_size, &mdesc_ver);
         if ( EFI_ERROR(status) )
-- 
2.1.0

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2015-05-29 10:55 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-05-29  7:48 [PATCH] efi: Reallocate memory map if ExitBootServices() fails Ross Lagerwall
2015-05-29  9:10 ` Andrew Cooper
2015-05-29  9:45 ` Jan Beulich
2015-05-29  9:57   ` Ross Lagerwall
2015-05-29 10:55     ` Jan Beulich

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.