audk/UefiCpuPkg
Jeff Fan bf2786dc79 UefiCpuPkg/DxeMpLib: Allocate new safe stack < 4GB
For long mode DXE, we will disable paging on AP to protected mode to execute AP
safe loop code in reserved memory range under 4GB. But we forget to allocate
stack for AP under 4GB and AP still are using original AP stack. If original AP
stack is larger than 4GB, it cannot be used after AP is transferred to protected
mode. Besides MwaitSupport == TRUE, AP stack is still required during phase of
disabling paging in long mode DXE.

Moreover, even though AP stack is always under 4GB (a) in Ia32 DXE and (b) with
this patch, after transferring to protected mode from X64 DXE, AP stack
(in BootServiceData) maybe crashed by OS after Exit Boot Service event.

This fix is to allocate reserved memory range under 4GB together with AP safe
loop code. APs will switch to new stack in safe loop code.

Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Feng Tian <feng.tian@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: Laszlo Ersek <lersek@redhat.com>
Tested-by: Laszlo Ersek <lersek@redhat.com>
2016-11-28 08:56:36 +08:00
..
Application/Cpuid UefiCpuPkg/Cpuid: Remove wrong while-loop check after for-loop 2016-10-18 09:15:44 +08:00
CpuDxe UefiCpuPkg/CpuDxe: Fix duplicated status code report 2016-09-14 08:54:24 +08:00
CpuIo2Dxe UefiCpuPkg CpuIo2Dxe: Update INF to refer to NASM source file 2016-07-11 13:20:22 +08:00
CpuIo2Smm UefiCpuPkg: Convert all .uni files to utf-8 2015-12-15 04:59:14 +00:00
CpuIoPei UefiCpuPkg: Convert all .uni files to utf-8 2015-12-15 04:59:14 +00:00
CpuMpPei UefiCpuPkg/CpuMpPei: Build GUIDed-HOB to store all CPU BIST Data 2016-09-14 08:54:36 +08:00
CpuS3DataDxe UefiCpuPkg/CpuS3DataDxe: Consume PcdAcpiS3Enable to control the code 2016-09-01 08:18:59 -07:00
Feature/Capsule UefiCpuPkg/MicrocodeUpdate: Add Microcode FMP build sample 2016-11-08 22:43:24 +08:00
Include UefiCpuPkg/Include: Add MicrocodeFlashAccessLib header. 2016-11-08 22:43:16 +08:00
Library UefiCpuPkg/DxeMpLib: Allocate new safe stack < 4GB 2016-11-28 08:56:36 +08:00
PiSmmCommunication UefiCpuPkg: Convert all .uni files to utf-8 2015-12-15 04:59:14 +00:00
PiSmmCpuDxeSmm UefiCpuPkg/PiSmmCpu: Correct exception message. 2016-11-24 10:51:16 +08:00
ResetVector UefiCpuPkg: Convert all .uni files to utf-8 2015-12-15 04:59:14 +00:00
SecCore UefiCpuPkg/SecCore: Correct print format for stack information 2016-11-18 09:43:53 +08:00
Universal/Acpi/S3Resume2Pei UefiCpuPkg: Display new stack base and size 2016-11-09 16:00:15 +08:00
Contributions.txt */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
License.txt Update copyright format 2012-04-24 06:49:39 +00:00
UefiCpuPkg.dec UefiCpuPkg/PiSmmCpuDxeSmm: dynamic PcdCpuSmmApSyncTimeout, PcdCpuSmmSyncMode 2016-11-22 09:02:54 +01:00
UefiCpuPkg.dsc UefiCpuPkg/UefiCpuPkg.dsc: Add MicrocodeCapsule related component. 2016-11-08 22:40:43 +08:00
UefiCpuPkg.uni UefiCpuPkg: Add PCD PcdCpuApTargetCstate 2015-12-18 03:23:53 +00:00
UefiCpuPkgExtra.uni UefiCpuPkg: Convert all .uni files to utf-8 2015-12-15 04:59:14 +00:00