#include <Library/DebugLib.h>\r
#include <Library/HobLib.h>\r
#include <Library/IoLib.h>\r
+#include <Library/PcdLib.h>\r
#include <Library/PeimEntryPoint.h>\r
#include <Library/ResourcePublicationLib.h>\r
\r
//\r
TotalMemorySize = (UINT64)GetSystemMemorySize ();\r
\r
- MemoryBase = 0x800000;\r
- MemorySize = TotalMemorySize - MemoryBase - 0x100000;\r
+ //\r
+ // Determine the range of memory to use during PEI\r
+ //\r
+ MemoryBase = PcdGet32 (PcdOvmfMemFvBase) + PcdGet32 (PcdOvmfMemFvSize);\r
+ MemorySize = TotalMemorySize - MemoryBase;\r
+ if (MemorySize > SIZE_16MB) {\r
+ MemoryBase = TotalMemorySize - SIZE_16MB;\r
+ MemorySize = SIZE_16MB;\r
+ }\r
\r
//\r
// Publish this memory to the PEI Core\r
// Create memory HOBs\r
//\r
AddMemoryBaseSizeHob (MemoryBase, MemorySize);\r
- AddMemoryRangeHob (0x100000, 0x800000);\r
- AddMemoryRangeHob (0x000000, 0x0A0000);\r
+ AddMemoryRangeHob (BASE_1MB, MemoryBase);\r
+ AddMemoryRangeHob (0, BASE_512KB + BASE_128KB);\r
\r
return EFI_SUCCESS;\r
}\r