On 06/03/15 16:49, Ard Biesheuvel wrote:
> This updates the sizes of the preallocated regions so that the number
> of distinct regions that exists is minimal at the time we exit boot
> services.
> 
> For a typical run of the ArmVirtQemu platform, we get the following
> utilization numbers:
> 
>   Reserved  :              4 Pages (16,384 Bytes)
>   LoaderCode:            210 Pages (860,160 Bytes)
>   LoaderData:              0 Pages (0 Bytes)
>   BS_Code   :            355 Pages (1,454,080 Bytes)
>   BS_Data   :          6,807 Pages (27,881,472 Bytes)
>   RT_Code   :            112 Pages (458,752 Bytes)
>   RT_Data   :            288 Pages (1,179,648 Bytes)
>   ACPI_Recl :             32 Pages (131,072 Bytes)
>   ACPI_NVS  :              0 Pages (0 Bytes)
>   MMIO      :         16,385 Pages (67,112,960 Bytes)
>   MMIO_Port :              0 Pages (0 Bytes)
>   PalCode   :              0 Pages (0 Bytes)
>   Available :        123,264 Pages (504,889,344 Bytes)
>               --------------
> Total Memory:            511 MB (536,854,528 Bytes)
> 
> Strangely enough, the allocation count of 20,000 pages for BS_Data
> does not result in those regions being merged. For BS_Code, RT_Code
> and RT_Data, the increased preallocation results in the following
> reduction in the number of regions.
> 
>    0x000040000000-0x00004000ffff [Loader Data        |   |  |  |  |   
> |WB|WT|WC|UC]
> -  0x000040010000-0x0000b66bbfff [Conventional Memory|   |  |  |  |   
> |WB|WT|WC|UC]
> -  0x0000b66bc000-0x0000b66d0fff [Loader Data        |   |  |  |  |   
> |WB|WT|WC|UC]
> -  0x0000b66d1000-0x0000b6f6bfff [Loader Code        |   |  |  |  |   
> |WB|WT|WC|UC]
> -  0x0000b6f6c000-0x0000b6f6ffff [Reserved           |   |  |  |  |   
> |WB|WT|WC|UC]*
> -  0x0000b6f70000-0x0000b6f8ffff [Runtime Code       |RUN|  |  |  |   
> |WB|WT|WC|UC]*
> -  0x0000b6f90000-0x0000b6faffff [ACPI Reclaim Memory|   |  |  |  |   
> |WB|WT|WC|UC]*
> -  0x0000b6fb0000-0x0000b6fcffff [Runtime Code       |RUN|  |  |  |   
> |WB|WT|WC|UC]*
> -  0x0000b6fd0000-0x0000b701ffff [Runtime Data       |RUN|  |  |  |   
> |WB|WT|WC|UC]*
> -  0x0000b7020000-0x0000b702ffff [Runtime Code       |RUN|  |  |  |   
> |WB|WT|WC|UC]*
> -  0x0000b7030000-0x0000b70cffff [Runtime Data       |RUN|  |  |  |   
> |WB|WT|WC|UC]*
> -  0x0000b70d0000-0x0000b70dffff [Runtime Code       |RUN|  |  |  |   
> |WB|WT|WC|UC]*
> +  0x000040010000-0x0000b680bfff [Conventional Memory|   |  |  |  |   
> |WB|WT|WC|UC]
> +  0x0000b680c000-0x0000b6820fff [Loader Data        |   |  |  |  |   
> |WB|WT|WC|UC]
> +  0x0000b6821000-0x0000b70bbfff [Loader Code        |   |  |  |  |   
> |WB|WT|WC|UC]
> +  0x0000b70bc000-0x0000b70bffff [Reserved           |   |  |  |  |   
> |WB|WT|WC|UC]*
> +  0x0000b70c0000-0x0000b70dffff [ACPI Reclaim Memory|   |  |  |  |   
> |WB|WT|WC|UC]*
>    0x0000b70e0000-0x0000b9f87fff [Conventional Memory|   |  |  |  |   
> |WB|WT|WC|UC]
>    0x0000b9f88000-0x0000bb921fff [Boot Data          |   |  |  |  |   
> |WB|WT|WC|UC]
>    0x0000bb922000-0x0000bb9bffff [Conventional Memory|   |  |  |  |   
> |WB|WT|WC|UC]
>    0x0000bb9c0000-0x0000bbbb0fff [Boot Data          |   |  |  |  |   
> |WB|WT|WC|UC]
>    0x0000bbbb1000-0x0000bbbeffff [Conventional Memory|   |  |  |  |   
> |WB|WT|WC|UC]
>    0x0000bbbf0000-0x0000bbf1ffff [Boot Data          |   |  |  |  |   
> |WB|WT|WC|UC]
> -  0x0000bbf20000-0x0000bedfffff [Conventional Memory|   |  |  |  |   
> |WB|WT|WC|UC]
> -  0x0000bee00000-0x0000bf71ffff [Loader Data        |   |  |  |  |   
> |WB|WT|WC|UC]
> -  0x0000bf720000-0x0000bf7ccfff [Conventional Memory|   |  |  |  |   
> |WB|WT|WC|UC]
> -  0x0000bf7cd000-0x0000bf92ffff [Boot Code          |   |  |  |  |   
> |WB|WT|WC|UC]
> -  0x0000bf930000-0x0000bf93ffff [Runtime Code       |RUN|  |  |  |   
> |WB|WT|WC|UC]*
> -  0x0000bf940000-0x0000bf95ffff [Conventional Memory|   |  |  |  |   
> |WB|WT|WC|UC]
> -  0x0000bf960000-0x0000bf97ffff [Runtime Data       |RUN|  |  |  |   
> |WB|WT|WC|UC]*
> +  0x0000bbf20000-0x0000bebfffff [Conventional Memory|   |  |  |  |   
> |WB|WT|WC|UC]
> +  0x0000bec00000-0x0000bf51ffff [Loader Data        |   |  |  |  |   
> |WB|WT|WC|UC]
> +  0x0000bf520000-0x0000bf65cfff [Conventional Memory|   |  |  |  |   
> |WB|WT|WC|UC]
> +  0x0000bf65d000-0x0000bf7bffff [Boot Code          |   |  |  |  |   
> |WB|WT|WC|UC]
> +  0x0000bf7c0000-0x0000bf84ffff [Runtime Code       |RUN|  |  |  |   
> |WB|WT|WC|UC]*
> +  0x0000bf850000-0x0000bf86ffff [Conventional Memory|   |  |  |  |   
> |WB|WT|WC|UC]
> +  0x0000bf870000-0x0000bf97ffff [Runtime Data       |RUN|  |  |  |   
> |WB|WT|WC|UC]*
>    0x0000bf980000-0x0000bf997fff [Conventional Memory|   |  |  |  |   
> |WB|WT|WC|UC]
>    0x0000bf998000-0x0000bf99afff [Boot Data          |   |  |  |  |   
> |WB|WT|WC|UC]
>    0x0000bf99b000-0x0000bf9aefff [Conventional Memory|   |  |  |  |   
> |WB|WT|WC|UC]

Heh, this output was produced by kernel code that I wrote. (I've written
negligible amounts of upstream kernel code.) Good way to sell me this
patch! :)

> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org>
> ---
>  ArmVirtPkg/ArmVirt.dsc.inc | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/ArmVirtPkg/ArmVirt.dsc.inc b/ArmVirtPkg/ArmVirt.dsc.inc
> index fd20ff39a068..08fb18a0c11a 100644
> --- a/ArmVirtPkg/ArmVirt.dsc.inc
> +++ b/ArmVirtPkg/ArmVirt.dsc.inc
> @@ -330,9 +330,9 @@
>    gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiACPIReclaimMemory|0
>    gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiACPIMemoryNVS|0
>    gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiReservedMemoryType|0
> -  gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiRuntimeServicesData|50
> -  gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiRuntimeServicesCode|20
> -  gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiBootServicesCode|400
> +  gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiRuntimeServicesData|300
> +  gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiRuntimeServicesCode|150
> +  gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiBootServicesCode|1000
>    gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiBootServicesData|20000
>    gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiLoaderCode|20
>    gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiLoaderData|0
> 

Reviewed-by: Laszlo Ersek <ler...@redhat.com>

------------------------------------------------------------------------------
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to