X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=OvmfPkg%2FPlatformPei%2FMemDetect.c;h=11c79687c435da5fcccaa962660b5119540aba39;hp=29df5370b05e68ca00c0ebd98239c22778991876;hb=8e54500fd48b56d8cf660c18656e10fe89ee3af7;hpb=7cdba6346b97562dad9809297cd7a32979a5a1d8 diff --git a/OvmfPkg/PlatformPei/MemDetect.c b/OvmfPkg/PlatformPei/MemDetect.c index 29df5370b0..11c79687c4 100644 --- a/OvmfPkg/PlatformPei/MemDetect.c +++ b/OvmfPkg/PlatformPei/MemDetect.c @@ -99,16 +99,21 @@ PublishPeiMemory ( UINT64 MemorySize; UINT64 LowerMemorySize; - LowerMemorySize = GetSystemMemorySizeBelow4gb (); - - // - // Determine the range of memory to use during PEI - // - MemoryBase = PcdGet32 (PcdOvmfDxeMemFvBase) + PcdGet32 (PcdOvmfDxeMemFvSize); - MemorySize = LowerMemorySize - MemoryBase; - if (MemorySize > SIZE_64MB) { - MemoryBase = LowerMemorySize - SIZE_64MB; - MemorySize = SIZE_64MB; + if (mBootMode == BOOT_ON_S3_RESUME) { + MemoryBase = PcdGet32 (PcdS3AcpiReservedMemoryBase); + MemorySize = PcdGet32 (PcdS3AcpiReservedMemorySize); + } else { + LowerMemorySize = GetSystemMemorySizeBelow4gb (); + + // + // Determine the range of memory to use during PEI + // + MemoryBase = PcdGet32 (PcdOvmfDxeMemFvBase) + PcdGet32 (PcdOvmfDxeMemFvSize); + MemorySize = LowerMemorySize - MemoryBase; + if (MemorySize > SIZE_64MB) { + MemoryBase = LowerMemorySize - SIZE_64MB; + MemorySize = SIZE_64MB; + } } // @@ -173,4 +178,15 @@ InitializeRamRegions ( } else { XenPublishRamRegions (); } + + if (mS3Supported && mBootMode != BOOT_ON_S3_RESUME) { + // + // This is the memory range that will be used for PEI on S3 resume + // + BuildMemoryAllocationHob ( + (EFI_PHYSICAL_ADDRESS)(UINTN) PcdGet32 (PcdS3AcpiReservedMemoryBase), + (UINT64)(UINTN) PcdGet32 (PcdS3AcpiReservedMemorySize), + EfiACPIMemoryNVS + ); + } }