From: Wei Liu Date: Sun, 8 Dec 2013 01:36:07 +0000 (+0000) Subject: OvmfPkg: introduce PublishPeiMemory X-Git-Tag: edk2-stable201903~12013 X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=36658fff454167c716993cf649f6172361b0e7b2;p=mirror_edk2.git OvmfPkg: introduce PublishPeiMemory MemDetect actully does too many things, the underlying platform might want to have more control over memory layout. Extract the functionality of publishing PEI memory to a dedicated function. Also fixed wrong comment while I was there. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Wei Liu Reviewed-by: Jordan Justen git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14944 6f19259b-4bc3-4df7-8a09-765794883524 --- diff --git a/OvmfPkg/PlatformPei/MemDetect.c b/OvmfPkg/PlatformPei/MemDetect.c index 9f6ca1942e..9145ebb89d 100644 --- a/OvmfPkg/PlatformPei/MemDetect.c +++ b/OvmfPkg/PlatformPei/MemDetect.c @@ -83,11 +83,45 @@ GetSystemMemorySizeAbove4gb ( return LShiftU64 (Size, 16); } +/** + Publish PEI core memory + + @return EFI_SUCCESS The PEIM initialized successfully. + +**/ +EFI_STATUS +PublishPeiMemory ( + VOID + ) +{ + EFI_STATUS Status; + EFI_PHYSICAL_ADDRESS MemoryBase; + UINT64 MemorySize; + UINT64 LowerMemorySize; + + LowerMemorySize = GetSystemMemorySizeBelow4gb (); + + MemoryBase = PcdGet32 (PcdOvmfMemFvBase) + PcdGet32 (PcdOvmfMemFvSize); + MemorySize = LowerMemorySize - MemoryBase; + if (MemorySize > SIZE_64MB) { + MemoryBase = LowerMemorySize - SIZE_64MB; + MemorySize = SIZE_64MB; + } + + // + // Publish this memory to the PEI Core + // + Status = PublishSystemMemory(MemoryBase, MemorySize); + ASSERT_EFI_ERROR (Status); + + return Status; +} + /** Peform Memory Detection - @return EFI_SUCCESS The PEIM initialized successfully. + @return Top of memory **/ EFI_PHYSICAL_ADDRESS diff --git a/OvmfPkg/PlatformPei/Platform.h b/OvmfPkg/PlatformPei/Platform.h index d63d124064..7344c610bb 100644 --- a/OvmfPkg/PlatformPei/Platform.h +++ b/OvmfPkg/PlatformPei/Platform.h @@ -57,6 +57,11 @@ AddUntestedMemoryRangeHob ( EFI_PHYSICAL_ADDRESS MemoryLimit ); +EFI_STATUS +PublishPeiMemory ( + VOID + ); + EFI_PHYSICAL_ADDRESS MemDetect ( VOID