Acidanthera UEFI Development Kit based on EDK II edk2-stable202311
Go to file
Jeff Fan 45e3440ac2 UefiCpuPkg/PiSmmCpuDxeSmm: Place AP to 32bit protected mode on S3 path
On S3 path, we may transfer to long mode (if DXE is long mode) to restore CPU
contexts with CR3 = SmmS3Cr3 (in SMM). AP will execute hlt-loop after CPU
contexts restoration. Once one NMI or SMI happens, APs may exit from hlt state
and execute the instruction after HLT instruction. If APs are running on long
mode, page table is required to fetch the instruction. However, CR3 pointer to
page table in SMM. APs will crash.

This fix is to disable long mode on APs and transfer to 32bit protected mode to
execute hlt-loop. Then CR3 and page table will no longer be required.

https://bugzilla.tianocore.org/show_bug.cgi?id=216

Reported-by: Laszlo Ersek <lersek@redhat.com>
Analyzed-by: Paolo Bonzini <pbonzini@redhat.com>
Analyzed-by: Laszlo Ersek <lersek@redhat.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jeff Fan <jeff.fan@intel.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
Tested-by: Laszlo Ersek <lersek@redhat.com>
2016-11-15 09:47:32 +08:00
AppPkg AppPkg: Update email and URL. 2016-10-26 09:34:34 -07:00
ArmPkg ArmPkg/CpuDxe: set DmaBufferAlignment according to CWG 2016-11-02 16:22:48 +00:00
ArmPlatformPkg ArmPlatformPkg/ArmVExpressFastBootDxe: eliminate deprecated string functions 2016-10-28 16:26:50 +01:00
ArmVirtPkg ArmVirPkg/PlatformBds: Dispatch deferred images after EndOfDxe 2016-11-10 15:58:04 +08:00
BaseTools BaseTools/Scripts: Add BinToPcd utility 2016-11-14 08:40:41 -08:00
BeagleBoardPkg BeagleBoardPkg: enable -DDISABLE_NEW_DEPRECATED_INTERFACES 2016-10-28 15:55:53 +01:00
Conf EDK II: Add .gitignore 2014-10-14 16:08:15 +00:00
CorebootModulePkg CorebootModulePkgPkg: Expose FindCbTag API from CbParseLib 2016-10-27 09:51:16 -07:00
CorebootPayloadPkg CorebootPayload/PlatformBds: Dispatch deferred images after EndOfDxe 2016-11-10 15:58:31 +08:00
CryptoPkg CryptoPkg/BaseCryptLib: Make comments consistent with the function 2016-11-11 13:46:04 +08:00
DuetPkg DuetPkg: Add POSTBUILD in DSC files to run post-build automatically 2016-11-14 19:33:11 +08:00
EdkCompatibilityPkg EdkCompatibilityPkg/PrintLite: Fix ErrorPrint() wrong NULL char check 2016-11-03 10:28:47 +08:00
EdkShellBinPkg */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
EdkShellPkg */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
EmbeddedPkg EmbeddedPkg: MmcDxe: add SPEC_VERS field in CSD structure 2016-11-14 15:45:49 +00:00
EmulatorPkg EmulatorPkg: Fix typos in comments and variables 2016-10-19 13:32:20 -07:00
FatBinPkg FatBinPkg: Change to 2-clause BSD license 2016-04-22 00:55:21 -07:00
FatPkg FatPkg/EnhancedFatDxe: rebase to ARRAY_SIZE() 2016-10-27 11:10:54 +02:00
IntelFrameworkModulePkg IntelFrameworkModulePkg/LegacyBios: Fix legacy serial redirection bug 2016-11-10 10:19:54 +08:00
IntelFrameworkPkg IntelFrameworkPkg: Fix typos in comments 2016-10-24 09:09:26 +08:00
IntelFsp2Pkg IntelFsp2Pkg: Support to return error status from FSP API done 2016-11-14 12:11:05 +08:00
IntelFsp2WrapperPkg IntelFsp2WrapperPkg: Add a PCD to control if signaling PciEnumerationComplete. 2016-10-28 07:46:42 +08:00
IntelFspPkg IntelFspPkg: Fix typos in comments 2016-10-24 09:26:28 +08:00
IntelFspWrapperPkg IntelFspWrapperPkg: Fix typos in comments 2016-10-24 09:26:30 +08:00
IntelSiliconPkg IntelSiliconPkg: Add PCD for Graphics VBT FFS GUID 2016-11-14 10:28:38 -08:00
MdeModulePkg MdeModulePkg/BMMUI: add comments for function parameter 2016-11-15 09:36:03 +08:00
MdePkg MdePkg: Fix spec mismatch in string representation of EMMC dev node 2016-11-14 11:08:41 +08:00
NetworkPkg NetworkPkg: Check for NULL pointer before dereference it. 2016-10-31 16:04:02 +08:00
Nt32Pkg Nt32Pkg/PlatformBds: Dispatch deferred images after EndOfDxe 2016-11-10 15:58:38 +08:00
Omap35xxPkg EmbeddedPkg: remove unused PrePiHobListPointerLib 2016-10-28 13:51:35 +01:00
OptionRomPkg OptionRomPkg/AtapiPassThruDxe: rebase to ARRAY_SIZE() 2016-10-27 11:10:58 +02:00
OvmfPkg OvmfPkg/PlatformBds: Dispatch deferred images after EndOfDxe 2016-11-10 15:58:27 +08:00
PcAtChipsetPkg PcAtChipsetPkg/HpetTimerDxe: Fix race condition in SetTimerPeriod() 2016-10-27 21:46:42 -07:00
PerformancePkg PerformancePkg/Dp_App: rebase to ARRAY_SIZE() 2016-10-27 11:10:59 +02:00
QuarkPlatformPkg QuarkPlatformPkg/PlatformBds: Dispatch deferred images after EndOfDxe 2016-11-10 15:58:35 +08:00
QuarkSocPkg QuarkSocPkg/Library: Remove extra UefiBaseType.h includes 2016-10-27 21:32:46 -07:00
SecurityPkg SecurityPkg/SecurityPkg.dsc: Add FmpAuthenticationLib*. 2016-11-08 22:37:19 +08:00
ShellBinPkg ShellBinPkg Arm/AArch64 Shell binary update 2016-08-02 12:25:13 +02:00
ShellPkg ShellPkg/ShellCommandLib: Add missing EFIAPI for public library APIs 2016-11-11 10:59:39 +08:00
SignedCapsulePkg SignedCapsulePkg/CapsulePkg.dsc: Add capsule related component. 2016-11-11 15:28:11 +08:00
SourceLevelDebugPkg SourceLevelDebugPkg: Fix typos in comments 2016-10-24 09:10:15 +08:00
StdLib StdLib/LibC ARM AARCH64: do not redefine compiler intrinsics 2016-08-09 10:10:12 +02:00
StdLibPrivateInternalFiles StdLib: Clarify and improve comments. 2016-01-06 00:31:42 +00:00
UefiCpuPkg UefiCpuPkg/PiSmmCpuDxeSmm: Place AP to 32bit protected mode on S3 path 2016-11-15 09:47:32 +08:00
UnixPkg UnixPkg: Remove UnixPkg files (It is replaced by EmulatorPkg) 2013-07-29 21:09:55 +00:00
Vlv2DeviceRefCodePkg Vlv2DeviceRefCodePkg/ValleyView2Soc: Remove the unused code 2016-08-03 11:02:19 +08:00
Vlv2TbltDevicePkg Vlv2TbltDevicePkg/Build: Add capsule/recovery in help info. 2016-11-08 22:49:57 +08:00
.gitignore EDK II: Add .gitignore 2014-10-14 16:08:15 +00:00
BuildNotes2.txt BaseTools: Updated BuildNotes URLs 2016-03-25 09:46:44 +08:00
Edk2Setup.bat Edk2Setup.bat: Fix build errors from VS tools PREFIX ENV missing 2016-11-05 09:10:58 +08:00
Maintainers.txt Maintainers.txt: Change maintainer of VLV2 packages. 2016-10-27 21:08:23 +08:00
edksetup.bat edksetup.bat: make sure BASE_TOOLS_PATH be set correctly 2016-10-26 13:45:45 +08:00
edksetup.sh edksetup.sh, BaseTools/BuildEnv: add --reconfig support 2016-10-24 13:53:16 +01:00