audk/UefiCpuPkg
Jeff Fan 4a0f88dd64 UefiCpuPkg/PiSmmCpuDxeSmm: Put AP into safe hlt-loop code on S3 path
On S3 path, we will wake up APs to restore CPU context in PiSmmCpuDxeSmm
driver. However, we place AP in hlt-loop under 1MB space borrowed after CPU
restoring CPU contexts.
In case, one NMI or SMI happens, APs may exit from hlt state and execute the
instruction after HLT instruction. But the code under 1MB is no longer safe at
that time.

This fix is to allocate one ACPI NVS range to place the AP hlt-loop code. When
CPU finished restoration CPU contexts, AP will execute in this ACPI NVS range.

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

v2:
  1. Make stack alignment per Laszlo's comment.
  2. Trim whitespace at end of end.
  3. Update year mark in file header.

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:44:53 +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: Place APs to suitable state on Legacy OS boot 2016-11-14 09:56:59 +08:00
PiSmmCommunication UefiCpuPkg: Convert all .uni files to utf-8 2015-12-15 04:59:14 +00:00
PiSmmCpuDxeSmm UefiCpuPkg/PiSmmCpuDxeSmm: Put AP into safe hlt-loop code on S3 path 2016-11-15 09:44:53 +08:00
ResetVector UefiCpuPkg: Convert all .uni files to utf-8 2015-12-15 04:59:14 +00:00
SecCore UefiCpuPkg: Display new stack base and size 2016-11-09 16:00:15 +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/UefiCpuPkg.dec: Add Microcode capsule related definition. 2016-11-08 22:43:18 +08: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