On 09/21/15 20:51, Ard Biesheuvel wrote:
> Commit SVN r18503 ("MdeModulePkg DxeCore: Take the range in resource
> HOB for PHIT as higher priority") changed the GCD init logic to take
> the sum of the region sizes in gMemoryTypeInformation[] into account
> when estimating the minimal amount of memory needed to boot the system.
> 
> Unfortunately, as an unintended side effect, this change results in boot
> failures of ArmVirtQemu when running with QEMU's default memory size of
> 128 MB. The reason is that the sum of the gMemoryTypeInformation region
> sizes plus the size of the inital PEI region exceeds 128 MB. Since we do
> not actually need to preallocate 20,000 pages' worth of BootServicesData
> memory, reduce this figure to the more reasonable 12,000.
> 
> Reported-by: Mark Rutland <mark.rutl...@arm.com>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org>
> ---
>  ArmVirtPkg/ArmVirt.dsc.inc | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/ArmVirtPkg/ArmVirt.dsc.inc b/ArmVirtPkg/ArmVirt.dsc.inc
> index bc308f527130..0e7a1098a380 100644
> --- a/ArmVirtPkg/ArmVirt.dsc.inc
> +++ b/ArmVirtPkg/ArmVirt.dsc.inc
> @@ -349,7 +349,7 @@ [PcdsFixedAtBuild.common]
>    gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiRuntimeServicesCode|150
>    gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiBootServicesCode|1000
>  !endif
> -  gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiBootServicesData|20000
> +  gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiBootServicesData|12000
>    gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiLoaderCode|20
>    gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiLoaderData|0
>  
> 

~46MB instead of ~78MB should suffice, I agree.

(I recently looked into improving the UEFI memmap fragmentation for
OVMF, like you had done for ArmVirtPkg. I didn't have good results; I
could only reduce the number of memmap entries from 50-55 to about 40.
Which is why I didn't post the prealloc tuning patch ultimately. But,
and I'm getting to why it is relevant here, it did require me to look at
the tallies printed by the UEFI shell's MEMMAP command. For OVMF,
preallocating approximately 41 MB for BS_Data is not only sufficient, it
already contains a 15% future proofing margin. OVMF is quite memory
hungrier than ArmVirtPkg, so preallocating 46MB for ArmVirtPkg is still
plenty.)

Reviewed-by: Laszlo Ersek <ler...@redhat.com>
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to