summaryrefslogtreecommitdiffstats
path: root/OvmfPkg/PlatformPei
diff options
context:
space:
mode:
authorjljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524>2010-01-04 16:17:59 +0000
committerjljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524>2010-01-04 16:17:59 +0000
commitc1c2669c6bb3ed4e23c06a93e60450a4fc3eccf2 (patch)
tree844feddcd621f20d1d6e27eb3efc0bc437367112 /OvmfPkg/PlatformPei
parent8cf01cae78c1e7b823587aac1b672a8c5adccaa9 (diff)
downloadedk2-c1c2669c6bb3ed4e23c06a93e60450a4fc3eccf2.tar.gz
edk2-c1c2669c6bb3ed4e23c06a93e60450a4fc3eccf2.tar.bz2
edk2-c1c2669c6bb3ed4e23c06a93e60450a4fc3eccf2.zip
OVMF: Update OVMF FD/FV build to minimize ROM size
* Only SEC is uncompressed now * The MAIN FV with PEI & DXE can easily shrink and grow as needed * The final output will now be OVMF.Fv rather than OVMF.fd * The final output size will be a multiple of 64kb git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9672 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'OvmfPkg/PlatformPei')
-rw-r--r--OvmfPkg/PlatformPei/Fv.c26
-rw-r--r--OvmfPkg/PlatformPei/MemDetect.c16
-rw-r--r--OvmfPkg/PlatformPei/PlatformPei.inf6
3 files changed, 27 insertions, 21 deletions
diff --git a/OvmfPkg/PlatformPei/Fv.c b/OvmfPkg/PlatformPei/Fv.c
index 7ae35237b2..f9e2635208 100644
--- a/OvmfPkg/PlatformPei/Fv.c
+++ b/OvmfPkg/PlatformPei/Fv.c
@@ -1,7 +1,7 @@
/** @file
Build FV related hobs for platform.
- Copyright (c) 2006 - 2009, Intel Corporation
+ Copyright (c) 2006 - 2010, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -14,10 +14,8 @@
#include "PiPei.h"
#include <Library/DebugLib.h>
-#include <Library/PeimEntryPoint.h>
#include <Library/HobLib.h>
#include <Library/PeiServicesLib.h>
-#include <Library/PeiServicesTablePointerLib.h>
#include <Library/PcdLib.h>
@@ -35,25 +33,27 @@ PeiFvInitialization (
VOID
)
{
- EFI_PHYSICAL_ADDRESS FdBase;
+ EFI_PHYSICAL_ADDRESS FdBase;
DEBUG ((EFI_D_ERROR, "Platform PEI Firmware Volume Initialization\n"));
DEBUG (
(EFI_D_ERROR, "Firmware Volume HOB: 0x%x 0x%x\n",
- PcdGet32 (PcdOvmfFlashFvRecoveryBase),
- PcdGet32 (PcdOvmfFlashFvRecoverySize)
+ PcdGet32 (PcdOvmfMemFvBase),
+ PcdGet32 (PcdOvmfMemFvSize)
)
);
- FdBase = PcdGet32 (PcdOvmfFlashFvRecoveryBase) - PcdGet32 (PcdVariableStoreSize) - PcdGet32 (PcdFlashNvStorageFtwSpareSize);
- BuildFvHob (PcdGet32 (PcdOvmfFlashFvRecoveryBase), PcdGet32 (PcdOvmfFlashFvRecoverySize));
+ FdBase = PcdGet32 (PcdOvmfMemFvBase) - PcdGet32 (PcdVariableStoreSize) - PcdGet32 (PcdFlashNvStorageFtwSpareSize);
+ BuildFvHob (PcdGet32 (PcdOvmfMemFvBase), PcdGet32 (PcdOvmfMemFvSize));
- BuildResourceDescriptorHob (
- EFI_RESOURCE_FIRMWARE_DEVICE,
- (EFI_RESOURCE_ATTRIBUTE_PRESENT | EFI_RESOURCE_ATTRIBUTE_INITIALIZED | EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE),
- FdBase,
- PcdGet32 (PcdOvmfFirmwareFdSize)
+ //
+ // Create a memory allocation HOB.
+ //
+ BuildMemoryAllocationHob (
+ PcdGet32 (PcdOvmfMemFvBase),
+ PcdGet32 (PcdOvmfMemFvSize),
+ EfiBootServicesData
);
return EFI_SUCCESS;
diff --git a/OvmfPkg/PlatformPei/MemDetect.c b/OvmfPkg/PlatformPei/MemDetect.c
index daa83a0014..30ee2b1772 100644
--- a/OvmfPkg/PlatformPei/MemDetect.c
+++ b/OvmfPkg/PlatformPei/MemDetect.c
@@ -27,6 +27,7 @@ Module Name:
#include <Library/DebugLib.h>
#include <Library/HobLib.h>
#include <Library/IoLib.h>
+#include <Library/PcdLib.h>
#include <Library/PeimEntryPoint.h>
#include <Library/ResourcePublicationLib.h>
@@ -79,8 +80,15 @@ MemDetect (
//
TotalMemorySize = (UINT64)GetSystemMemorySize ();
- MemoryBase = 0x800000;
- MemorySize = TotalMemorySize - MemoryBase - 0x100000;
+ //
+ // Determine the range of memory to use during PEI
+ //
+ MemoryBase = PcdGet32 (PcdOvmfMemFvBase) + PcdGet32 (PcdOvmfMemFvSize);
+ MemorySize = TotalMemorySize - MemoryBase;
+ if (MemorySize > SIZE_16MB) {
+ MemoryBase = TotalMemorySize - SIZE_16MB;
+ MemorySize = SIZE_16MB;
+ }
//
// Publish this memory to the PEI Core
@@ -92,8 +100,8 @@ MemDetect (
// Create memory HOBs
//
AddMemoryBaseSizeHob (MemoryBase, MemorySize);
- AddMemoryRangeHob (0x100000, 0x800000);
- AddMemoryRangeHob (0x000000, 0x0A0000);
+ AddMemoryRangeHob (BASE_1MB, MemoryBase);
+ AddMemoryRangeHob (0, BASE_512KB + BASE_128KB);
return EFI_SUCCESS;
}
diff --git a/OvmfPkg/PlatformPei/PlatformPei.inf b/OvmfPkg/PlatformPei/PlatformPei.inf
index df6545199b..1ef3a368cb 100644
--- a/OvmfPkg/PlatformPei/PlatformPei.inf
+++ b/OvmfPkg/PlatformPei/PlatformPei.inf
@@ -54,10 +54,8 @@
PeimEntryPoint
[FixedPcd.common]
- gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashFvRecoveryBase
- gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashFvRecoverySize
- gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageVariableBase
- gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareFdSize
+ gUefiOvmfPkgTokenSpaceGuid.PcdOvmfMemFvBase
+ gUefiOvmfPkgTokenSpaceGuid.PcdOvmfMemFvSize
gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize