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 <wei.l...@citrix.com> --- OvmfPkg/PlatformPei/MemDetect.c | 36 +++++++++++++++++++++++++++++++++++- OvmfPkg/PlatformPei/Platform.h | 5 +++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/OvmfPkg/PlatformPei/MemDetect.c b/OvmfPkg/PlatformPei/MemDetect.c index 9f6ca19..dc44745 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 d63d124..01af2a9 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 -- 1.7.10.4 ------------------------------------------------------------------------------ Rapidly troubleshoot problems before they affect your business. Most IT organizations don't have a clear picture of how application performance affects their revenue. With AppDynamics, you get 100% visibility into your Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro! http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel