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