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]

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
-- 
1.9.1


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

Reply via email to