Monitored cached line may not wake up CPU from MWAIT on certain Goldmont based 
CPUs.
Disable MONITOR/MWAIT and use IO registers for C State instead.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: David Wei <david....@intel.com>
CC: Mike Wu  <mike...@intel.com>
CC: Mang Guo <mang....@intel.com>
---
 .../Common/Library/PeiFspPolicyInitLib/PeiFspCpuPolicyInitLib.c       | 1 +
 .../Common/PlatformSettings/PlatformSetupDxe/Cpu.vfi                  | 4 ++--
 .../Common/PlatformSettings/PlatformSetupDxe/PlatformSetupDxe.c       | 1 -
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git 
a/Platform/BroxtonPlatformPkg/Common/Library/PeiFspPolicyInitLib/PeiFspCpuPolicyInitLib.c
 
b/Platform/BroxtonPlatformPkg/Common/Library/PeiFspPolicyInitLib/PeiFspCpuPolicyInitLib.c
index 6c176d0685..c404116029 100644
--- 
a/Platform/BroxtonPlatformPkg/Common/Library/PeiFspPolicyInitLib/PeiFspCpuPolicyInitLib.c
+++ 
b/Platform/BroxtonPlatformPkg/Common/Library/PeiFspPolicyInitLib/PeiFspCpuPolicyInitLib.c
@@ -120,6 +120,7 @@ PeiFspCpuPolicyInit (
     FspsUpd->FspsConfig.PkgCStateDemotion     = 
SystemConfiguration->PkgCStateDemotion;
     FspsUpd->FspsConfig.PkgCStateUnDemotion   = 
SystemConfiguration->PkgCStateUnDemotion;
     FspsUpd->FspsConfig.TurboMode             = 
SystemConfiguration->TurboModeEnable;
+    FspsUpd->FspsConfig.MonitorMwaitEnable    = 
SystemConfiguration->MonitorMwaitEnable;
   }
 
   return EFI_SUCCESS;
diff --git 
a/Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformSetupDxe/Cpu.vfi 
b/Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformSetupDxe/Cpu.vfi
index 23859e6a3a..9094794de2 100644
--- 
a/Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformSetupDxe/Cpu.vfi
+++ 
b/Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformSetupDxe/Cpu.vfi
@@ -122,9 +122,9 @@ form formid = CPU_CONFIGURATION_FORM_ID,
   oneof varid   = Setup.MonitorMwaitEnable,
     prompt      = STRING_TOKEN(STR_MONITOR_MWAIT_PROMPT),
     help        = STRING_TOKEN(STR_MONITOR_MWAIT_HELP),
-    option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED;
+    option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = MANUFACTURING 
| DEFAULT | RESET_REQUIRED;
     option text = STRING_TOKEN(STR_ENABLE),  value = 1, flags = RESET_REQUIRED;
-    option text = STRING_TOKEN(STR_AUTO), value = 2, flags = MANUFACTURING | 
DEFAULT | RESET_REQUIRED;
+    option text = STRING_TOKEN(STR_AUTO), value = 2, flags = RESET_REQUIRED;
   endoneof;  
 
   subtitle text = STRING_TOKEN(STR_NULL_STRING);
diff --git 
a/Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformSetupDxe/PlatformSetupDxe.c
 
b/Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformSetupDxe/PlatformSetupDxe.c
index bbb31b10da..08d2fd418f 100644
--- 
a/Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformSetupDxe/PlatformSetupDxe.c
+++ 
b/Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformSetupDxe/PlatformSetupDxe.c
@@ -123,7 +123,6 @@ LoadOsDefaultValues (
 #else
   Private->FakeNvData.TPM                        = 0;
 #endif
-  Private->FakeNvData.MonitorMwaitEnable         = 2;
   Private->FakeNvData.I2C0Speed                  = 1;
   Private->FakeNvData.I2C1Speed                  = 1;
   Private->FakeNvData.I2C2Speed                  = 1;
-- 
2.14.1.windows.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to