/** @file\r
Save the S3 data to S3 boot script.\r
\r
- Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>\r
\r
SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
BOOLEAN mS3BootScriptTableAllocated = FALSE;\r
BOOLEAN mS3BootScriptTableSmmAllocated = FALSE;\r
EFI_SMM_SYSTEM_TABLE2 *mBootScriptSmst = NULL;\r
+BOOLEAN mAcpiS3Enable = TRUE;\r
\r
/**\r
This is an internal function to add a terminate node the entry, recalculate the table\r
BOOLEAN InSmm;\r
EFI_PHYSICAL_ADDRESS Buffer;\r
\r
+ if (!PcdGetBool (PcdAcpiS3Enable)) {\r
+ mAcpiS3Enable = FALSE;\r
+ DEBUG ((DEBUG_INFO, "%a: Skip S3BootScript because ACPI S3 disabled.\n", gEfiCallerBaseName));\r
+ return RETURN_SUCCESS;\r
+ }\r
+\r
S3TablePtr = (SCRIPT_TABLE_PRIVATE_DATA*)(UINTN)PcdGet64(PcdS3BootScriptTablePrivateDataPtr);\r
//\r
// The Boot script private data is not be initialized. create it\r
{\r
EFI_STATUS Status;\r
\r
+ if (!mAcpiS3Enable) {\r
+ return RETURN_SUCCESS;\r
+ }\r
+\r
DEBUG ((EFI_D_INFO, "%a() in %a module\n", __FUNCTION__, gEfiCallerBaseName));\r
\r
if (mEventDxeSmmReadyToLock != NULL) {\r
{\r
UINT8* NewEntryPtr;\r
\r
+ if (!mAcpiS3Enable) {\r
+ return NULL;\r
+ }\r
+\r
if (mS3BootScriptTablePtr->SmmLocked) {\r
//\r
// We need check InSmm, because after SmmReadyToLock, only SMM driver is allowed to write boot script.\r
## @file\r
# DXE S3 boot script Library.\r
#\r
-# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>\r
#\r
# SPDX-License-Identifier: BSD-2-Clause-Patent\r
#\r
## SOMETIMES_PRODUCES\r
gEfiMdeModulePkgTokenSpaceGuid.PcdS3BootScriptTablePrivateSmmDataPtr\r
gEfiMdeModulePkgTokenSpaceGuid.PcdS3BootScriptRuntimeTableReservePageNumber ## CONSUMES\r
-\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiS3Enable ## CONSUMES\r