public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Wei, David" <david.wei@intel.com>
To: "Guo, Mang" <mang.guo@intel.com>,
	"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Cc: "Lu, ShifeiX A" <shifeix.a.lu@intel.com>
Subject: Re: [Patch][edk2-platforms/devel-MinnowBoard3] Fix S3 resume failure
Date: Wed, 12 Apr 2017 08:14:12 +0000	[thread overview]
Message-ID: <89954A0B46707A448411A627AD4EEE3468F265AC@SHSMSX101.ccr.corp.intel.com> (raw)
In-Reply-To: <22D2C85ED001C54AA20BFE3B0E4751D152501751@SHSMSX103.ccr.corp.intel.com>

Reviewed-by: zwei4  <david.wei@intel.com> 

Thanks,
David  Wei                                 

-----Original Message-----
From: Guo, Mang 
Sent: Wednesday, April 12, 2017 2:52 PM
To: edk2-devel@lists.01.org
Cc: Wei, David <david.wei@intel.com>; Lu, ShifeiX A <shifeix.a.lu@intel.com>
Subject: [Patch][edk2-platforms/devel-MinnowBoard3] Fix S3 resume failure

When restoring MSR for S3 setting, SmmStartupThisAp will return error if CPU index is BSP. This issue caused S3 resume failed sometimes. This patch is mainly fix this issue.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Guo Mang <mang.guo@intel.com>
---
 .../PlatformDsc/PcdsFeatureFlag.dsc                |  7 ++++++-
 .../Cpu/PowerManagement/Smm/PowerMgmtS3.c          | 23 ++++++++++++----------
 2 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/Platform/BroxtonPlatformPkg/PlatformDsc/PcdsFeatureFlag.dsc b/Platform/BroxtonPlatformPkg/PlatformDsc/PcdsFeatureFlag.dsc
index 6762a41..19e27ad 100644
--- a/Platform/BroxtonPlatformPkg/PlatformDsc/PcdsFeatureFlag.dsc
+++ b/Platform/BroxtonPlatformPkg/PlatformDsc/PcdsFeatureFlag.dsc
@@ -1,7 +1,7 @@
 ## @file
 #  Platform Feature Pcd Description.
 #
-#  Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2016 - 2017, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -91,3 +91,8 @@
   # new core to see if we can re-enable this
   gPlatformModuleTokenSpaceGuid.PcdDeprecatedFunctionRemove|FALSE
 
+  ## Indicates if SMM Startup AP in a blocking fashion.
+  #   TRUE  - SMM Startup AP in a blocking fashion.<BR>
+  #   FALSE - SMM Startup AP in a non-blocking fashion.<BR>
+  # @Prompt SMM Startup AP in a blocking fashion.
+  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmBlockStartupThisAp|FALSE
\ No newline at end of file
diff --git a/Silicon/BroxtonSoC/BroxtonSiPkg/Cpu/PowerManagement/Smm/PowerMgmtS3.c b/Silicon/BroxtonSoC/BroxtonSiPkg/Cpu/PowerManagement/Smm/PowerMgmtS3.c
index 4385320..eb36343 100644
--- a/Silicon/BroxtonSoC/BroxtonSiPkg/Cpu/PowerManagement/Smm/PowerMgmtS3.c
+++ b/Silicon/BroxtonSoC/BroxtonSiPkg/Cpu/PowerManagement/Smm/PowerMgmtS3.c
@@ -1,7 +1,7 @@
 /** @file
   This is the SMM driver for saving and restoring the powermanagement related MSRs.
 
-  Copyright (c) 2011 - 2016, Intel Corporation. All rights reserved.<BR>
+  Copyright (c) 2011 - 2017, Intel Corporation. All rights reserved.<BR>
 
   This program and the accompanying materials
   are licensed and made available under the terms and conditions of the BSD License
@@ -140,15 +140,18 @@ RunOnAllLogicalProcessors (
   // Run the procedure on all logical processors.
   //
   (*Procedure) (Buffer);
-  for (Index = 1; Index < gSmst->NumberOfCpus; Index++) {
-    Status = EFI_NOT_READY;
-    while (Status != EFI_SUCCESS) {
-      Status = gSmst->SmmStartupThisAp (Procedure, Index, Buffer);
-      if (Status != EFI_SUCCESS) {
-        //
-        // SmmStartupThisAp might return failure if AP is busy executing some other code. Let's wait for sometime and try again.
-        //
-        MicroSecondDelay (PPM_WAIT_PERIOD);
+  for (Index = 0; Index < gSmst->NumberOfCpus; Index++) {
+    if (Index != gSmst->CurrentlyExecutingCpu) {
+      Status = EFI_NOT_READY;
+      while (Status != EFI_SUCCESS) {
+        Status = gSmst->SmmStartupThisAp (Procedure, Index, Buffer);
+        ASSERT(Status != EFI_INVALID_PARAMETER);
+        if (Status != EFI_SUCCESS) {
+          //
+          // SmmStartupThisAp might return failure if AP is busy executing some other code. Let's wait for sometime and try again.
+          //
+          MicroSecondDelay (PPM_WAIT_PERIOD);
+        }
       }
     }
   }
-- 
2.10.1.windows.1



      reply	other threads:[~2017-04-12  8:14 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-12  6:52 [Patch][edk2-platforms/devel-MinnowBoard3] Fix S3 resume failure Guo, Mang
2017-04-12  8:14 ` Wei, David [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=89954A0B46707A448411A627AD4EEE3468F265AC@SHSMSX101.ccr.corp.intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox