From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.136; helo=mga12.intel.com; envelope-from=david.wei@intel.com; receiver=edk2-devel@lists.01.org Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id E2817223972C4 for ; Wed, 7 Feb 2018 00:17:36 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 07 Feb 2018 00:23:19 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,471,1511856000"; d="scan'208";a="202170473" Received: from zwei4-mobl1.ccr.corp.intel.com ([10.239.158.60]) by fmsmga006.fm.intel.com with ESMTP; 07 Feb 2018 00:23:18 -0800 From: zwei4 To: edk2-devel@lists.01.org Date: Wed, 7 Feb 2018 16:23:13 +0800 Message-Id: <20180207082313.14016-1-david.wei@intel.com> X-Mailer: git-send-email 2.14.1.windows.1 Subject: [Patch][edk2-platforms/devel-MinnowBoard3-UDK2017] Fix Windows 10 S3 failure. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Feb 2018 08:17:37 -0000 The FSP-S preferred memory region, which is defined in FSP Integration Guide, must be reserved for BIOS S3 resume. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: zwei4 --- .../PlatformPreMemPei/FvCallback.c | 29 +++++++--------------- .../PlatformDsc/PcdsFixedAtBuild.dsc | 2 ++ 2 files changed, 11 insertions(+), 20 deletions(-) diff --git a/Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformPreMemPei/FvCallback.c b/Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformPreMemPei/FvCallback.c index 6a2c9fd91..4a3a67574 100644 --- a/Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformPreMemPei/FvCallback.c +++ b/Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformPreMemPei/FvCallback.c @@ -269,7 +269,6 @@ ParseObbPayload ( UINTN VariableSize; EFI_STATUS Status; EFI_FIRMWARE_VOLUME_HEADER *FvHeader; - EFI_FIRMWARE_VOLUME_HEADER *FvHeaderS3; EFI_PLATFORM_INFO_HOB *PlatformInfo; EFI_PEI_READ_ONLY_VARIABLE2_PPI *VariableServices; SYSTEM_CONFIGURATION SystemConfiguration; @@ -298,13 +297,17 @@ ParseObbPayload ( DEBUG ((EFI_D_INFO, "FSP-S Fsp Size = 0x%X\n", FspHeader->ImageSize)); // - // Copy to FSP-S to preferred base + // Copy to FSP-S to preferred base. The preferred base is defined in FSP Integration Guide. + // This region must be reserved for BIOS S3 resume. // + BuildMemoryAllocationHob ( + (EFI_PHYSICAL_ADDRESS)FspSImageBase, + (UINT64)FspHeader->ImageSize, + EfiReservedMemoryType + ); CopyMemSse4 ((VOID*) FspSImageBase, FvHeader, (UINT32) FvHeader->FvLength); - if (BootMode != BOOT_ON_S3_RESUME) { - PcdSet32S (PcdFspsBaseAddress, (UINT32) FspSImageBase); - } + PcdSet32S (PcdFspsBaseAddress, (UINT32) FspSImageBase); while ((UINT32) FvHeader < PayloadTail) { if (FvHeader->Signature != EFI_FVH_SIGNATURE) { @@ -319,21 +322,7 @@ ParseObbPayload ( } DEBUG ((EFI_D_INFO, "Found Fv with GUID: %g\n", FvName)); - if (BootMode == BOOT_ON_S3_RESUME) { - // - // FspW requires both IBBR and FSP-S on S3 resume - // but only copy FSP-S, do not install it. - // - DEBUG ((DEBUG_INFO, "S3 Resume: Only looking for IBBR and FSP-S.\n")); - if (CompareGuid (FvName, &gFspSFirmwareFileSystemFvGuid) || CompareGuid (FvName, &gIbbrFirmwareFileSystemFvGuid)) { - FvHeaderS3 = FvHeader; - if (CompareGuid (FvName, &gIbbrFirmwareFileSystemFvGuid)) { - PeiServicesInstallFvInfoPpi (NULL, FvHeaderS3, (UINT32) FvHeaderS3->FvLength, NULL, NULL); - } else { - PcdSet32S (PcdFspsBaseAddress, (UINT32) FvHeaderS3); - } - } - } else if (CompareGuid (&FvHeader->FileSystemGuid, &gEfiSystemNvDataFvGuid)) { + if (CompareGuid (&FvHeader->FileSystemGuid, &gEfiSystemNvDataFvGuid)) { DEBUG ((EFI_D_INFO, "NVStorage FV at 0x%x.\n", (UINT32) FvHeader)); Status = PeiServicesLocatePpi (&gEfiPeiReadOnlyVariable2PpiGuid, 0, NULL, (VOID **) &VariableServices); if (EFI_ERROR (Status)) { diff --git a/Platform/BroxtonPlatformPkg/PlatformDsc/PcdsFixedAtBuild.dsc b/Platform/BroxtonPlatformPkg/PlatformDsc/PcdsFixedAtBuild.dsc index b7cefdca0..6c26acaf5 100644 --- a/Platform/BroxtonPlatformPkg/PlatformDsc/PcdsFixedAtBuild.dsc +++ b/Platform/BroxtonPlatformPkg/PlatformDsc/PcdsFixedAtBuild.dsc @@ -83,4 +83,6 @@ gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x07 gEfiMdeModulePkgTokenSpaceGuid.PcdSerialUseHardwareFlowControl|FALSE !endif + + gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmStackSize|0x3000 -- 2.14.1.windows.1