When setting PcdCpuMaxLogicalProcessorNumber to 255, then CpuMpPei seems to require a bit more than 8MB of permanent PEI RAM in the PrepareAPStartupVector() function. (With the default PCD value of 64, it needs one quarter of that: approximately 2MB.)
On the S3 resume path, we install only 32 KB of permanent PEI RAM however, and even that is almost exhausted already: > CpuMpPei: WakeupBuffer = 0x9F000 > AllocatePages failed: No 0x7FF Pages is available. > There is only left 0x1 pages memory resource to be allocated. > > ASSERT_EFI_ERROR (Status = Out of Resources) > ASSERT UefiCpuPkg/CpuMpPei/CpuMpPei.c(730): !EFI_ERROR (Status) Increase PcdS3AcpiReservedMemorySize by 8.5 MB (0x880000 bytes, 0x880 pages). The areas above the S3 permanent PEI RAM (decompressed PEI FV, decompressed DXE FV) are shifted up by the same amount. The EfiACPIMemoryNVS footprint increases similarly (but only if QEMU is instructed to enable S3). Cc: Jeff Fan <[email protected]> Cc: Jordan Justen <[email protected]> Cc: Michael Kinney <[email protected]> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <[email protected]> --- OvmfPkg/OvmfPkgIa32.fdf | 10 +++++----- OvmfPkg/OvmfPkgIa32X64.fdf | 10 +++++----- OvmfPkg/OvmfPkgX64.fdf | 10 +++++----- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/OvmfPkg/OvmfPkgIa32.fdf b/OvmfPkg/OvmfPkgIa32.fdf index 59a4024ff026..a55ddf05594f 100644 --- a/OvmfPkg/OvmfPkgIa32.fdf +++ b/OvmfPkg/OvmfPkgIa32.fdf @@ -67,10 +67,10 @@ [FD.OVMF_CODE] [FD.MEMFD] BaseAddress = $(MEMFD_BASE_ADDRESS) -Size = 0xB00000 +Size = 0x1380000 ErasePolarity = 1 BlockSize = 0x10000 -NumBlocks = 0xB0 +NumBlocks = 0x138 0x000000|0x006000 gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesSize @@ -84,14 +84,14 @@ [FD.MEMFD] 0x010000|0x008000 gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize -0x018000|0x008000 +0x018000|0x888000 gUefiOvmfPkgTokenSpaceGuid.PcdS3AcpiReservedMemoryBase|gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdS3AcpiReservedMemorySize -0x020000|0x0E0000 +0x8A0000|0x0E0000 gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPeiMemFvBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPeiMemFvSize FV = PEIFV -0x100000|0xA00000 +0x980000|0xA00000 gUefiOvmfPkgTokenSpaceGuid.PcdOvmfDxeMemFvBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfDxeMemFvSize FV = DXEFV diff --git a/OvmfPkg/OvmfPkgIa32X64.fdf b/OvmfPkg/OvmfPkgIa32X64.fdf index c6167a4176af..4503a9fdeb0f 100644 --- a/OvmfPkg/OvmfPkgIa32X64.fdf +++ b/OvmfPkg/OvmfPkgIa32X64.fdf @@ -67,10 +67,10 @@ [FD.OVMF_CODE] [FD.MEMFD] BaseAddress = $(MEMFD_BASE_ADDRESS) -Size = 0xB00000 +Size = 0x1380000 ErasePolarity = 1 BlockSize = 0x10000 -NumBlocks = 0xB0 +NumBlocks = 0x138 0x000000|0x006000 gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesSize @@ -84,14 +84,14 @@ [FD.MEMFD] 0x010000|0x008000 gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize -0x018000|0x008000 +0x018000|0x888000 gUefiOvmfPkgTokenSpaceGuid.PcdS3AcpiReservedMemoryBase|gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdS3AcpiReservedMemorySize -0x020000|0x0E0000 +0x8A0000|0x0E0000 gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPeiMemFvBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPeiMemFvSize FV = PEIFV -0x100000|0xA00000 +0x980000|0xA00000 gUefiOvmfPkgTokenSpaceGuid.PcdOvmfDxeMemFvBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfDxeMemFvSize FV = DXEFV diff --git a/OvmfPkg/OvmfPkgX64.fdf b/OvmfPkg/OvmfPkgX64.fdf index 30b0c2ba3fc8..9a539aa7b3c6 100644 --- a/OvmfPkg/OvmfPkgX64.fdf +++ b/OvmfPkg/OvmfPkgX64.fdf @@ -67,10 +67,10 @@ [FD.OVMF_CODE] [FD.MEMFD] BaseAddress = $(MEMFD_BASE_ADDRESS) -Size = 0xB00000 +Size = 0x1380000 ErasePolarity = 1 BlockSize = 0x10000 -NumBlocks = 0xB0 +NumBlocks = 0x138 0x000000|0x006000 gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesSize @@ -84,14 +84,14 @@ [FD.MEMFD] 0x010000|0x008000 gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize -0x018000|0x008000 +0x018000|0x888000 gUefiOvmfPkgTokenSpaceGuid.PcdS3AcpiReservedMemoryBase|gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdS3AcpiReservedMemorySize -0x020000|0x0E0000 +0x8A0000|0x0E0000 gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPeiMemFvBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPeiMemFvSize FV = PEIFV -0x100000|0xA00000 +0x980000|0xA00000 gUefiOvmfPkgTokenSpaceGuid.PcdOvmfDxeMemFvBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfDxeMemFvSize FV = DXEFV -- 1.8.3.1 _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

