audk/UefiCpuPkg/PiSmmCpuDxeSmm/Ia32
Jiewen Yao e4435f710c UefiCpuPkg/PiSmmCpu: Fixed #double fault on #page fault.
This patch fixes https://bugzilla.tianocore.org/show_bug.cgi?id=246

Previously, when SMM exception happens after EndOfDxe,
with StackGuard enabled on IA32, the #double fault exception
is reported instead of #page fault.

Root cause is below:

Current EDKII SMM page protection will lock GDT.
If IA32 stack guard is enabled, the page fault handler will do task switch.
This task switch need write busy flag in GDT, and write TSS.

However, the GDT and TSS is locked at that time, so the
double fault happens.

We decide to not lock GDT for IA32 StackGuard enabled.

This issue does not exist on X64, or IA32 without StackGuard.

Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Jeff Fan <jeff.fan@intel.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jiewen Yao <jiewen.yao@intel.com>
Reviewed-by: Jeff Fan <jeff.fan@intel.com>
Regression-tested-by: Laszlo Ersek <lersek@redhat.com>
2016-12-07 13:13:55 +08:00
..
MpFuncs.S UefiCpuPkg: Add PiSmmCpuDxeSmm module IA32 files 2015-10-19 19:13:13 +00:00
MpFuncs.asm UefiCpuPkg: Add PiSmmCpuDxeSmm module IA32 files 2015-10-19 19:13:13 +00:00
MpFuncs.nasm UefiCpuPkg PiSmmCpuDxeSmm: Update Ia32/MpFuncs.nasm 2016-06-28 09:52:13 +08:00
PageTbl.c UefiCpuPkg/PiSmmCpu: Correct exception message. 2016-11-24 10:51:16 +08:00
Semaphore.c UefiCpuPkg: Add PiSmmCpuDxeSmm module IA32 files 2015-10-19 19:13:13 +00:00
SmiEntry.S UefiCpuPkg/PiSmmCpuDxeSmm: Remove PSD layout assumptions 2016-12-01 11:07:13 -08:00
SmiEntry.asm UefiCpuPkg/PiSmmCpuDxeSmm: Remove PSD layout assumptions 2016-12-01 11:07:13 -08:00
SmiEntry.nasm UefiCpuPkg/PiSmmCpuDxeSmm: Remove PSD layout assumptions 2016-12-01 11:07:13 -08:00
SmiException.S UefiCpuPkg/PiSmmCpuDxeSmm: Add paging protection. 2016-11-17 16:30:07 +08:00
SmiException.asm UefiCpuPkg/PiSmmCpuDxeSmm: Add paging protection. 2016-11-17 16:30:07 +08:00
SmiException.nasm UefiCpuPkg/PiSmmCpuDxeSmm: Add paging protection. 2016-11-17 16:30:07 +08:00
SmmFuncsArch.c UefiCpuPkg/PiSmmCpu: Fixed #double fault on #page fault. 2016-12-07 13:13:55 +08:00
SmmInit.S UefiCpuPkg: Add PiSmmCpuDxeSmm module IA32 files 2015-10-19 19:13:13 +00:00
SmmInit.asm UefiCpuPkg: Add PiSmmCpuDxeSmm module IA32 files 2015-10-19 19:13:13 +00:00
SmmInit.nasm UefiCpuPkg/PiSmmCpuDxeSmm: remove superfluous ENDs from NASM source 2016-07-18 19:23:01 +02:00
SmmProfileArch.c UefiCpuPkg/PiSmmCpuDxeSmm: Add paging protection. 2016-11-17 16:30:07 +08:00
SmmProfileArch.h UefiCpuPkg: Add PiSmmCpuDxeSmm module IA32 files 2015-10-19 19:13:13 +00:00