From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by ml01.01.org (Postfix) with ESMTP id B71A01A1E15 for ; Thu, 18 Aug 2016 00:09:38 -0700 (PDT) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP; 18 Aug 2016 00:09:38 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.28,537,1464678000"; d="scan'208";a="1027504476" Received: from fbohra-mobl.amr.corp.intel.com (HELO mdkinney-MOBL.amr.corp.intel.com) ([10.255.231.76]) by fmsmga001.fm.intel.com with ESMTP; 18 Aug 2016 00:09:38 -0700 From: Michael Kinney To: edk2-devel@lists.01.org Cc: Star Zeng , Jeff Fan , Jiewen Yao , Laszlo Ersek Date: Thu, 18 Aug 2016 00:09:30 -0700 Message-Id: <1471504170-11800-4-git-send-email-michael.d.kinney@intel.com> X-Mailer: git-send-email 2.6.3.windows.1 In-Reply-To: <1471504170-11800-1-git-send-email-michael.d.kinney@intel.com> References: <1471504170-11800-1-git-send-email-michael.d.kinney@intel.com> Subject: [Patch 3/3] UefiCpuPkg/PiSmmCpuDxeSmm: Consume PcdAcpiS3Enable to control the code X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Aug 2016 07:09:39 -0000 From: Star Zeng if PcdAcpiS3Enable is disabled, then skip S3 related logic. Cc: Jeff Fan Cc: Jiewen Yao Cc: Michael Kinney Cc: Laszlo Ersek Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Star Zeng Reviewed-by: Jeff Fan --- UefiCpuPkg/PiSmmCpuDxeSmm/CpuS3.c | 26 ++++++++++++++++++++++++++ UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c | 1 + UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h | 9 +++++++++ UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf | 1 + 4 files changed, 37 insertions(+) diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/CpuS3.c b/UefiCpuPkg/PiSmmCpuDxeSmm/CpuS3.c index f26149d..6a798ef 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/CpuS3.c +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/CpuS3.c @@ -75,6 +75,8 @@ BOOLEAN mSmmS3Flag = FALSE; // SMM_S3_RESUME_STATE *mSmmS3ResumeState = NULL; +BOOLEAN mAcpiS3Enable = TRUE; + /** Get MSR spin lock by MSR index. @@ -548,6 +550,10 @@ RestoreSmmConfigurationInS3 ( VOID ) { + if (!mAcpiS3Enable) { + return; + } + // // Restore SMM Configuration in S3 boot path. // @@ -726,6 +732,10 @@ InitSmmS3ResumeState ( EFI_SMRAM_DESCRIPTOR *SmramDescriptor; SMM_S3_RESUME_STATE *SmmS3ResumeState; + if (!mAcpiS3Enable) { + return; + } + GuidHob = GetFirstGuidHob (&gEfiAcpiVariableGuid); if (GuidHob != NULL) { SmramDescriptor = (EFI_SMRAM_DESCRIPTOR *) GET_GUID_HOB_DATA (GuidHob); @@ -817,6 +827,10 @@ GetAcpiCpuData ( IA32_DESCRIPTOR *Gdtr; IA32_DESCRIPTOR *Idtr; + if (!mAcpiS3Enable) { + return; + } + // // Prevent use of mAcpiCpuData by initialize NumberOfCpus to 0 // @@ -883,3 +897,15 @@ GetAcpiCpuData ( CopyMem (mIdtForAp, (VOID *)Idtr->Base, Idtr->Limit + 1); CopyMem (mMachineCheckHandlerForAp, (VOID *)(UINTN)mAcpiCpuData.ApMachineCheckHandlerBase, mAcpiCpuData.ApMachineCheckHandlerSize); } + +/** + Get ACPI S3 enable flag. + +**/ +VOID +GetAcpiS3EnableFlag ( + VOID + ) +{ + mAcpiS3Enable = PcdGetBool (PcdAcpiS3Enable); +} diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c b/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c index d00afc8..852b5c7 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c @@ -910,6 +910,7 @@ PiCpuSmmEntry ( // InitSmmProfile (Cr3); + GetAcpiS3EnableFlag (); InitSmmS3ResumeState (Cr3); DEBUG ((EFI_D_INFO, "SMM CPU Module exit from SMRAM with EFI_SUCCESS\n")); diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h b/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h index 97309d1..9b119c8 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h @@ -816,4 +816,13 @@ RestoreSmmConfigurationInS3 ( VOID ); +/** + Get ACPI S3 enable flag. + +**/ +VOID +GetAcpiS3EnableFlag ( + VOID + ); + #endif diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf b/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf index 83e3c55..49ca051 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf @@ -153,6 +153,7 @@ gUefiCpuPkgTokenSpaceGuid.PcdCpuHotPlugDataAddress ## SOMETIMES_PRODUCES gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmCodeAccessCheckEnable ## CONSUMES gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmSyncMode ## CONSUMES + gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiS3Enable ## CONSUMES [Depex] gEfiMpServiceProtocolGuid AND gEfiVariableArchProtocolGuid -- 2.6.3.windows.1