• M
    Revert "efi/libstub: Call get_memory_map() to obtain map and desc sizes" · 43a9f696
    Matt Fleming 提交于
    This reverts commit d1a8d66b.
    
    Ard reported a boot failure when running UEFI under Qemu and Xen and
    experimenting with various Tianocore build options,
    
     "As it turns out, when allocating room for the UEFI memory map using
      UEFI's AllocatePool (), it may result in two new memory map entries
      being created, for instance, when using Tianocore's preallocated region
      feature. For example, the following region
    
      0x00005ead5000-0x00005ebfffff [Conventional Memory|   |  |  |  |  |WB|WT|WC|UC]
    
      may be split like this
    
      0x00005ead5000-0x00005eae2fff [Conventional Memory|   |  |  |  |  |WB|WT|WC|UC]
      0x00005eae3000-0x00005eae4fff [Loader Data        |   |  |  |  |  |WB|WT|WC|UC]
      0x00005eae5000-0x00005ebfffff [Conventional Memory|   |  |  |  |  |WB|WT|WC|UC]
    
      if the preallocated Loader Data region was chosen to be right in the
      middle of the original free space.
    
      After patch d1a8d66b ("efi/libstub: Call get_memory_map() to
      obtain map and desc sizes"), this is not being dealt with correctly
      anymore, as the existing logic to allocate room for a single additional
      entry has become insufficient."
    
    Mark requested to reinstate the old loop we had before commit
    d1a8d66b, which grows the memory map buffer until it's big enough to
    hold the EFI memory map.
    Acked-by: NArd Biesheuvel <ard.biesheuvel@linaro.org>
    Acked-by: NMark Rutland <mark.rutland@arm.com>
    Signed-off-by: NMatt Fleming <matt.fleming@intel.com>
    43a9f696
efi-stub-helper.c 15.7 KB