On 3 June 2015 at 17:40, Laszlo Ersek <ler...@redhat.com> wrote:
> 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>

Thanks, pushed as r17554

-- 
Ard.

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

Reply via email to