MemDetect actully does too many things, the underlying platform might want to have more control on memory layout.
Extract the functionality of publishing PEI memory to a dedicated function. Also fix wrong comment while I was there. -- I know there's code duplication, but are you happy with this approach? Probabaly more refactoring to the existing code is needed? I would like to know this. 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 ------------------------------------------------------------------------------ DreamFactory - Open Source REST & JSON Services for HTML5 & Native Apps OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access Free app hosting. Or install the open source package on any LAMP server. Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native! http://pubads.g.doubleclick.net/gampad/clk?id=63469471&iu=/4140/ostg.clktrk _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel